Die Umbraco-Datenbank wächst schnell, wenn Contour-Formulare verwendet werden

Aus maxTechCorner

Symptom

Die Umbraco-Datenbank wächst stetig, weil mehrstufige Contour-Formulare von Besuchern oder Spammern nicht abgeschlossen werden und im Zustand PartiallySubmitted verbleiben.

Ursache und Lösung

Nicht abgeschlossene Formulardaten sammeln sich in den Contour-Tabellen UFRecords, UFRecordsXml und UFRecordData* an und können einen großen Teil der Datenbankgröße ausmachen. Lösung: unvollständige Formulardaten regelmäßig per Datenbank-Skript entfernen.

-- Löscht Contour-Datensätze eines Formulars, die älter als @MaxAge Tage sind.
-- @FormState: 0=Opened 1=Resumed 2=PartiallySubmitted 3=Submitted 4=Approved 5=Deleted
CREATE PROCEDURE [dbo].[DeleteContourRecords]
    @FormId UNIQUEIDENTIFIER,
    @MaxAge INT = 50,
    @FormState INT = 2,
    @Limit INT = 50
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRANSACTION
    CREATE TABLE #records (id UNIQUEIDENTIFIER)
    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 FROM UFRecords    WHERE id IN (SELECT id FROM #records)
    DELETE FROM UFRecordsXml WHERE id IN (SELECT id FROM #records)
    DROP TABLE #records
    COMMIT
END

Als Stored Procedure aufgerufen, lassen sich damit z. B. PartiallySubmitted-Datensätze löschen, die älter als 180 Tage sind:

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

Unterstützung von m.a.x. it

Bei diesem Thema unterstützt Sie die individuelle Softwareentwicklung von m.a.x. it.


Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung? Kontakt aufnehmen