Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Reorganize Database Indexes

...

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:

Code Block
languagesql
REINDEX TABLE "ContextIndices";
REINDEX TABLE "ContextLogs";
REINDEX TABLE "Contexts";
REINDEX TABLE "PerformanceRecords";

To reorganize all Connect application-specific indexes, use the following SQL scriptUm alle anwendungsspezifischen Indizes von Connect zu reorganisieren, verwenden Sie das folgende SQL-Skript:

Code Block
languagesql
REINDEX TABLE "ConnectObjects";
REINDEX TABLE "ConnectObjectsHistory";
REINDEX TABLE "ContextIndices";
REINDEX TABLE "ContextLogs";
REINDEX TABLE "Contexts";
REINDEX TABLE "PerformanceRecords";
REINDEX TABLE "ScenarioRegistrations";
REINDEX TABLE "SecureStoreItems";

Delete Obsolete Data

...

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:

Code Block
languagesql
DO
$$
DECLARE delete_before DATE := '2000-12-31';
BEGIN
DELETE FROM "Contexts" WHERE "ContextType" = 'ElementContext' AND "FlowContextId" IN (SELECT "Id" FROM "Contexts" WHERE "FlowContextIdContextType" IS= NULL'FlowContext' AND "CreateTime" < delete_before);
DELETE FROM "ContextIndices" WHERE "FlowContextId" IN (SELECT "Id" FROM "Contexts" WHERE "FlowContextIdContextType" IS= NULL'FlowContext' AND "CreateTime" < delete_before);
DELETE FROM "ContextLogs" WHERE "FlowContextId" IN (SELECT "Id" FROM "Contexts" WHERE "FlowContextIdContextType" IS= NULL'FlowContext' AND "CreateTime" < delete_before);
DELETE FROM "Contexts" WHERE "FlowContextIdContextType" IS= NULL'FlowContext' AND "CreateTime" < delete_before;
DELETE FROM "PerformanceRecords" WHERE "Time" < delete_before;
END
$$;

REINDEX TABLE "Contexts";
REINDEX TABLE "ContextIndices";
REINDEX TABLE "ContextLogs";
REINDEX TABLE "PerformanceRecords";

Reducing the size of the database

...

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:

Code Block
languagesql
VACUUM FULL;

The VACUUM FULL command defragments and compacts the database reclaiming space occupied by deleted rows. After shrinking the database, it may be beneficial to reorganize the indexesDer 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.