Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Datenbankadministration » Pflege der Datenbank » Fehlerbehandlung im Zusammenhang mit SQL Anywhere-Problemen

 

Unerwartete Änderungen der Datenbankgröße

Datenbankseiten werden freigegeben, wenn alle Datensätze auf der Seite gelöscht werden. Wenn eine Datenbankseite freigegeben wird, wird sie für die Wiederbenutzung verfügbar, aber sie kann nicht aus der Datei entfernt werden. Spätere INSERT- und UPDATE-Anweisungen können die freigegeben Seiten verwenden.

Wenn die gewünschten Änderungen, wie Einfügungen, Aktualisierungen oder Löschungen, in der Datenbank vorgenommen werden, werden dem Rollback-Log, das im System-DBSpace gespeichert wird, Einträge hinzugefügt. Wenn viele dieser Vorgänge ausgeführt werden, bevor eine Festschreibung vorgenommen wird, kann das Rollback-Log sehr groß und die Größe der Datenbank erhöht werden.

Das Checkpoint-Log wird am Ende des System-DBSpace gespeichert. Wenn der Datenbankserver heruntergefahren wird, wird das Checkpoint-Log gekürzt und der System DBSpace nimmt ab. Seiten, die durch DELETE- oder TRUNCATE-Vorgänge freigegeben wurden, bleiben in der Datenbankdatei für die zukünftige Wiederverwendung und können nicht aus der Datei entfernt werden.

Wenn die Größe der Datenbankdatei zunimmt oder nicht in der erwarteten Form abnimmt, können Sie wie folgt vorgehen:

  • Führen Sie häufig COMMIT-Anweisungen aus, wenn Sie INSERT-, UPDATE- oder DELETE-Anweisungen verwenden. Seiten, die dem Rollback-Log zugewiesen sind, werden bei der Ausführung einer COMMIT-Anweisung für die Wiederverwendung im System-DBSpace freigegeben.

  • Führen Sie gelegentlich CHECKPOINT-Anweisungen aus, wenn Sie UPDATE- oder DELETE-Anweisungen verwenden oder wenn Sie bei großen Indizes INSERT-Anweisungen verwenden. Seiten im Checkpoint-Log werden nach jedem Checkpoint für die Wiederbenutzung durch das Checkpointlog verfügbar.

  • Führen Sie eine TRUNCATE TABLE-Anweisung aus, die zu Löschungen auf Seitenebene führen kann. In diesen Fällen müssen dem Checkpointlog keine Kopien der Seiten hinzugefügt werden und die einzelnen Vorgänge auf Zeilenebene müssen nicht dem Rollback-Log hinzugefügt werden. Seiten, die durch TRUNCATE TABLE freigegeben wurden, sind erst nach dem nächsten Checkpoint wiederverwendbar. TRUNCATE TABLE führt zu Löschungen auf Seitenebene, wenn folgende Bedingungen zutreffen:

    • Es gibt keine Fremdschlüssel für bzw. von der gekürzten Tabelle.
    • Die TRUNCATE TABLE-Anweisung wird nicht innerhalb eines Triggers ausgeführt.
    • Die TRUNCATE TABLE-Anweisung wird nicht in Verbindung mit einem atomaren Vorgang ausgeführt.
    • Die Checkpoint-Log-Seiten werden an das Ende der System-DBSpace-Datei geschrieben. Diese Seiten werden entfernt, wenn der Datenbankserver heruntergefahren wird.

Der Neuaufbau der Datenbank kann die Größe der Datenbank veringern, weil die neu aufgebaute Datenbank weniger freien Seiten hat.