Die Umbraco-Datenbank wächst schnell, wenn Contour-Formulare verwendet werden: Unterschied zwischen den Versionen

(Kontakt)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
==='''Symptom'''===
 
==='''Symptom'''===
Die Umbraco-Datenbank wächst stetig an, weil Multi-Step-Formulare von Webseiten-Besuchern oder Spammern nicht abgeschlossen werden,<br />
+
Die Umbraco-Datenbank wächst stetig an, weil Multi-Step-Formulare von Webseiten-Besuchern oder Spammern nicht abgeschlossen werden, sondern im Zustand „PartiallySubmitted“ verbleiben.
sondern im Zustand „PartiallySubmitted“ verbleiben. <br />
+
 
 
==='''Ursache und Lösung'''===
 
==='''Ursache und Lösung'''===
Bei einer großen Besucheranzahl, die Contour-Formulare mit mehreren Schritten/Seiten ausfüllen, häufen sich Daten von Formularen an,<br />
+
Bei einer großen Besucheranzahl, die Contour-Formulare mit mehreren Schritten/Seiten ausfüllen, häufen sich Daten von Formularen an, die nie vollständig abgeschlossen, also nicht bis zum letzten Schritt ausgefüllt wurden. Diese Daten verbleiben in der Umbraco-Datenbank in den Contour-Tabellen<br /><br />
die nie vollständig abgeschlossen, also nicht bis zum letzten Schritt ausgefüllt wurden. Diese Daten verbleiben in der Umbraco-Datenbank in den Contour-Tabellen<br /><br />
 
 
• UFRecords<br />
 
• UFRecords<br />
 
• UFRecordsXml<br />
 
• UFRecordsXml<br />
 
• UFRecordData*<br /><br />
 
• UFRecordData*<br /><br />
Die Menge der Daten in diesen Tabellen wächst daher immer weiter. Bei vielen Umbraco-Installationen mit Contour-Formularen können<br />
+
Die Menge der Daten in diesen Tabellen wächst daher immer weiter. Bei vielen Umbraco-Installationen mit Contour-Formularen können diese Daten einen großen Anteil an der Gesamtgröße der Datenbank ausmachen.<br />
diese Daten einen großen Anteil an der Gesamtgröße der Datenbank ausmachen.<br />
 
 
<br />
 
<br />
Eine Lösung des Problems ist, unvollständige Formulardaten in regelmäßigen Abständen aus der Datenbank zu entfernen.<br />
+
Eine Lösung des Problems ist, unvollständige Formulardaten in regelmäßigen Abständen aus der Datenbank zu entfernen. Ein einfaches Datenbank-Skript übernimmt diese Aufgabe:
Ein einfaches Datenbank-Skript übernimmt diese Aufgabe:
 
 
<source lang="tsql">
 
<source lang="tsql">
 
-- ==========================================================================
 
-- ==========================================================================
Zeile 63: Zeile 60:
 
END
 
END
 
</source>
 
</source>
Als Stored Procedure aufgerufen, können damit sehr einfach unvollständige Formulardaten (Partially-Submitted = 2),<br />
+
Als Stored Procedure aufgerufen, können damit sehr einfach unvollständige Formulardaten (Partially-Submitted = 2), die älter als 180 Tage sind, gelöscht werden. Beispiel:<br />
die älter als 180 Tage sind, gelöscht werden. Beispiel:<br />
 
 
<source lang="tsql">
 
<source lang="tsql">
 
EXECUTE DeleteContourRecords '8B045F53-352A-4708-9A36-0DC8D67FD1AB' , 180, 2, 100
 
EXECUTE DeleteContourRecords '8B045F53-352A-4708-9A36-0DC8D67FD1AB' , 180, 2, 100
 
</source>
 
</source>
 +
 
==='''Weitere Informationen'''===
 
==='''Weitere Informationen'''===
 
Mehr Informationen zu unseren Softwarelösungen und unserem Service finden Sie auf<br />
 
Mehr Informationen zu unseren Softwarelösungen und unserem Service finden Sie auf<br />
Zeile 76: Zeile 73:
 
[http://mailto:techcorner@max-it.de techcorner@max-it.de].<br />
 
[http://mailto:techcorner@max-it.de techcorner@max-it.de].<br />
  
Über m.a.x. Informationstechnologie AG: <br />
+
'''Über m.a.x. Informationstechnologie AG:''' <br />
Als etabliertes Münchner Systemhaus zeichnen wir uns seit 1989 als verlässlicher IT-Partner mittelständischer und<br />
+
Als etabliertes Münchner Systemhaus zeichnen wir uns seit 1989 als verlässlicher IT-Partner mittelständischer und großer Unternehmen aus. Unser Portfolio reicht von IT- Services über individuelle Softwareentwicklung bis hin zur ERP-Beratung.
großer Unternehmen aus. Unser Portfolio reicht von IT- Services über individuelle Softwareentwicklung bis hin zur ERP-Beratung.<br />
 
  
 
=== ''' Tags ''' ===
 
=== ''' Tags ''' ===

Aktuelle Version vom 14. Mai 2020, 06:46 Uhr

Symptom

Die Umbraco-Datenbank wächst stetig an, weil Multi-Step-Formulare von Webseiten-Besuchern oder Spammern nicht abgeschlossen werden, sondern im Zustand „PartiallySubmitted“ verbleiben.

Ursache und Lösung

Bei einer großen Besucheranzahl, die Contour-Formulare mit mehreren Schritten/Seiten ausfüllen, häufen sich Daten von Formularen an, die nie vollständig abgeschlossen, also nicht bis zum letzten Schritt ausgefüllt wurden. Diese Daten verbleiben in der Umbraco-Datenbank in den Contour-Tabellen

• UFRecords
• UFRecordsXml
• UFRecordData*

Die Menge der Daten in diesen Tabellen wächst daher immer weiter. Bei vielen Umbraco-Installationen mit Contour-Formularen können diese Daten einen großen Anteil an der Gesamtgröße der Datenbank ausmachen.

Eine Lösung des Problems ist, unvollständige Formulardaten in regelmäßigen Abständen aus der Datenbank zu entfernen. Ein einfaches Datenbank-Skript übernimmt diese Aufgabe:

-- ==========================================================================
-- Author:      m.a.x. Informationstechnologie AG
-- Create date: 2015-09-16
-- Description: Deletes all Contour records for the given form which are older
--              than @MaxAge days.
--              Possible @FormState values are:
--                0 = Opened
--                1 = Resumed
--                2 = PartiallySubmitted (default)
--                3 = Submitted
--                4 = Approved
--                5 = Deleted
--              @Limit (default: 50) limits the number of affected records.
-- ==========================================================================
CREATE PROCEDURE [dbo].[DeleteContourRecords] 
	@FormId UNIQUEIDENTIFIER,
	@MaxAge INT = 50,
	@FormState INT = 2,
	@Limit INT = 50
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN TRANSACTION

	-- Temporary table to store record IDs
	CREATE TABLE #records (
	id UNIQUEIDENTIFIER
	)

	-- Select records
	INSERT INTO #records
		SELECT TOP(@Limit) 
			u.Id 
		FROM UFRecords u 
		WHERE updated < GETDATE()-@MaxAge AND u.State = @FormState AND u.Form = @FormId
		ORDER BY u.updated

	-- Delete records from data table
	DELETE FROM UFRecords WHERE id IN (SELECT id FROM #records)
	-- Delete records from XML cache table
	DELETE FROM UFRecordsXml WHERE id IN (SELECT id FROM #records)

	-- Remove temporary table
	DROP TABLE #records

	COMMIT
END

Als Stored Procedure aufgerufen, können damit sehr einfach unvollständige Formulardaten (Partially-Submitted = 2), die älter als 180 Tage sind, gelöscht werden. Beispiel:

EXECUTE DeleteContourRecords '8B045F53-352A-4708-9A36-0DC8D67FD1AB' , 180, 2, 100

Weitere Informationen

Mehr Informationen zu unseren Softwarelösungen und unserem Service finden Sie auf
www.max-it.de/Softwarelösungen

Kontakt

Wenn Sie Fragen oder Anmerkungen zu diesem Artikel haben, wenden Sie sich bitte an uns:
techcorner@max-it.de.

Über m.a.x. Informationstechnologie AG:
Als etabliertes Münchner Systemhaus zeichnen wir uns seit 1989 als verlässlicher IT-Partner mittelständischer und großer Unternehmen aus. Unser Portfolio reicht von IT- Services über individuelle Softwareentwicklung bis hin zur ERP-Beratung.

Tags

Umbraco, Contour, SQL Server, Database Maintenance