Tabellenbereinigung
Die Tabellenbereinigung löscht ältere Datensätze automatisch und verhindert ein exponentielles Wachstum der Daten.
Die Tabellenbereinigung ist eine regelmäßige Aufgabe, die (standardmäßig) einmal pro Stunde ausgeführt wird, um ältere, abgelaufene oder unerwünschte Datensätze aus Tabellen zu löschen. Die Tabellenbereinigung verhindert, dass Tabellen eine unüberschaubare Größe erreichen, und verbessert die Abfrageleistung.
Sie können eine Liste der Tabellenbereinigungsregeln in der Tabelle „Auto Flush“ [sys_auto_flush] anzeigen, indem Sie im Filternavigator sys_auto_flush.list eingeben. Die Auto-Flush-Tabelle zeigt Regeln für Basissystemtabellen und das entsprechende Datensatzalter an. Mehrere Regeln können für eine einzelne Tabelle angezeigt werden, wenn für jede Regel eine eindeutige Bedingung definiert ist.
Welche Datensätze gelöscht werden
Jede Tabellenbereinigungsregel legt Folgendes fest:
- Die Zieltabelle (aus der Datensätze gelöscht werden sollen).
- Ein Matchfield- Wert, der einer Datums-/Uhrzeitspalte in der Zieltabelle entspricht. Idealerweise ist das Matchfield ein Datumsfeld, das angibt, wie lange der Datensatz aktiv ist (z. B. sys_created_on).
- Ein Wert für Alter in Sekunden, der bestimmt, wann der Löschvorgang ausgelöst wird.
- Optionen zum Bereinigen zugehöriger Datensätze in Peripherie- oder Audit-Tabellen.
- Eine oder mehrere optionale Bedingungen zum Filtern der zu löschenden Datensätze. Sie können beispielsweise angeben, dass nur Datensätze gelöscht werden, bei denen „aktiv = falsch UND Status = geschlossen“ ist.
Wenn das Matchfield- Datum weiter in der Vergangenheit liegt als der Wert für Alter in Sekunden, löscht die Tabellenbereinigungsaufgabe den Datensatz.
Langsame Regelverarbeitung
Wenn der Tabellenbereinigungsauftrag ausgeführt wird, führt jede Tabellenbereinigungsregel mehrere Abfragen als Teil des Prozesses aus. Wenn das Übereinstimmungsfeld einer Regel oder wesentliche Teile ihrer Bedingung keinen Index enthalten, kann die Regelverarbeitung langsam sein, da die Abfragen bei großen Datenmengen ineffizient ausgeführt werden.
Wenn eine Tabellenbereinigungsregel eine Abfrage enthält, deren Abschluss länger als 30 Sekunden dauert, wird die gesamte Tabellenbereinigungsaufgabe angehalten. Standardmäßig wartet die Tabellenbereinigung zwei Tage, bevor diese Regel erneut in den Tabellenbereinigungsauftrag aufgenommen wird, sodass der Tabellenbereinigungsauftrag in der Zwischenzeit ohne Unterbrechung ausgeführt werden kann. Sie können die Dauer der Wartezeit konfigurieren, indem Sie eine Systemeigenschaft hinzufügen. Weitere Informationen finden Sie unter Eigenschaften der Tabellenbereinigung.
Tabellenbereinigung wird deaktiviert
Sie können verhindern, dass ein Administrator eine Tabellenbereinigungsregel erstellt oder die Tabellenbereinigung für eine bestimmte Tabelle ausführt, indem Sie das Attribut Tabellenbereinigung deaktivieren zum Wörterbuchdatensatz der Tabelle hinzufügen. Bei einigen internen Systemtabellen wird standardmäßig das Attribut „Tabellenbereinigung deaktivieren“ hinzugefügt.
Einschränkungen der Tabellenbereinigung
Beachten Sie die folgenden Einschränkungen.
- Die Tabellenbereinigung wird nicht für Tabellen unterstützt, die für die Verwendung von Tabellenrotation oder Tabellenerweiterung konfiguriert sind.
- Die Leistung hängt von der Größe der Tabelle und den von Ihnen angegebenen Bedingungen ab. Wenn Sie beispielsweise eine benutzerdefinierte Spalte ohne Index in einer großen Tabelle verwenden, wird die Leistung erheblich beeinträchtigt. Die Leistung hängt auch von der Anzahl der zu löschenden Zeilen ab.
- Die Tabellenbereinigung benötigt maximal 20 Minuten, um Datensätze aus einer einzelnen Tabelle zu löschen. Wenn Abfragen langsam sind, kann die Menge der im 20-Minuten-Zeitraum gelöschten Datensätze gering sein.
- Die Tabellenbereinigung ruft
DBDelete.setWorkflow()nicht auf. Dies bedeutet, dassDBDelete-Objekte mitworkflow=falseausgeführt werden (false ist der Standardwert für einen booleschen Java-Wert). Daher werden keine Lösch-Business-Regeln und -Workflows ausgelöst.