Datenbankindizes reorganisieren
Die automatische Bereinigungsfunktion von Connect entfernt eine große Anzahl von Datensätzen, was zu einer Fragmentierung der entsprechenden Datenbankindizes führt. Um dieses Problem zu beheben, sollte das folgende SQL-Skript für die tägliche Datenbankwartung eingeplant werden:
REINDEX TABLE "ContextIndices"; REINDEX TABLE "ContextLogs"; REINDEX TABLE "Contexts"; REINDEX TABLE "PerformanceRecords";
Um alle anwendungsspezifischen Indizes von Connect zu reorganisieren, verwenden Sie das folgende SQL-Skript:
REINDEX TABLE "ConnectObjects"; REINDEX TABLE "ConnectObjectsHistory"; REINDEX TABLE "ContextIndices"; REINDEX TABLE "ContextLogs"; REINDEX TABLE "Contexts"; REINDEX TABLE "PerformanceRecords"; REINDEX TABLE "ScenarioRegistrations"; REINDEX TABLE "SecureStoreItems";
Veraltete Daten löschen
Wenn alle Kontexte und Leistungsdatensätze, die vor einem bestimmten Datum erstellt wurden, gelöscht werden müssen, kann das folgende Skript verwendet werden. Beachten Sie, dass fragmentierte Indizes während des Löschvorgangs zu Leistungseinbußen führen können. Defragmentieren Sie bei Bedarf diese Indizes vor dem Löschen der Daten. Stellen Sie sicher, dass Sie das Datum in der ersten Zeile des Skripts nach Bedarf anpassen:
DO $$ DECLARE delete_before DATE := '2000-12-31'; BEGIN DELETE FROM "Contexts" WHERE "FlowContextId" IN (SELECT "Id" FROM "Contexts" WHERE "FlowContextId" IS NULL AND "CreateTime" < delete_before); DELETE FROM "ContextIndices" WHERE "FlowContextId" IN (SELECT "Id" FROM "Contexts" WHERE "FlowContextId" IS NULL AND "CreateTime" < delete_before); DELETE FROM "ContextLogs" WHERE "FlowContextId" IN (SELECT "Id" FROM "Contexts" WHERE "FlowContextId" IS NULL AND "CreateTime" < delete_before); DELETE FROM "Contexts" WHERE "FlowContextId" IS NULL AND "CreateTime" < delete_before; DELETE FROM "PerformanceRecords" WHERE "Time" < delete_before; END $$; REINDEX TABLE "Contexts"; REINDEX TABLE "ContextIndices"; REINDEX TABLE "ContextLogs"; REINDEX TABLE "PerformanceRecords";
Verringerung der Größe der Datenbank
Das Löschen einer großen Datenmenge führt nicht unbedingt zu einer Verkleinerung der Datenbank. In diesem Fall ist es ratsam, die Datenbank anzuweisen, den nicht mehr benötigten Platz freizugeben. Dies kann mit dem folgenden SQL-Skript erreicht werden:
VACUUM FULL;
Der VACUUM FULL-Befehl defragmentiert und kompaktiert die Datenbank, indem er den durch gelöschte Zeilen belegten Speicherplatz zurückgewinnt. Nach dem Verkleinern der Datenbank kann es von Vorteil sein, die Indizes zu reorganisieren.