English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite Vacuum

VACUUM kopiert den Inhalt der Hauptdatenbank in eine temporäre Datenbankdatei, leert die Hauptdatenbank und lädt die ursprüngliche Datenbankdatei neu aus dem Abzug. Dies entfernt leere Seiten, legt die Daten in der Tabelle als zusammenhängend an und bereinigt die Struktur der Datenbankdatei.

Wenn in der Tabelle keine klare Ganzzahlnormalisierung (INTEGER PRIMARY KEY) vorhanden ist, kann der VACUUM-Befehl die Zeilen-ID (ROWID) der Einträge in der Tabelle ändern. Der VACUUM-Befehl ist nur für die Hauptdatenbank geeignet, zugehörige Datenbankdateien können mit dem VACUUM-Befehl nicht verwendet werden.

Wenn eine aktive Transaktion besteht, wird der VACUUM-Befehl fehlschlagen. Der VACUUM-Befehl ist eine Operation für jede Art von Betrieb in einer Speicherdatenbank. Da der VACUUM-Befehl die Datenbankdatei neu erstellt, kann VACUUM auch zur Änderung vieler spezifischer Datenbankkonfigurationsparameter verwendet werden.

Manuelles Vacuum

Nachstehend ist die einfache Syntax, um das VACUUM-Kommando für die gesamte Datenbank auszuführen, vom Befehlszeilenprompt aus-

$sqlite3 database_name "VACUUM;"

Sie können VACUUM aus dem SQLite-Prompt ausführen, wie folgt-

sqlite> VACUUM;

Sie können VACUUM auch auf bestimmten Tabellen ausführen, wie folgt-

sqlite> VACUUM table_name;

Automatisches Vacuum(Auto-VACUUM)

SQLite Auto-VACUUM ist nicht so sehr unterschiedlich von VACUUM, es bewegt nur freie Seiten an das Ende der Datenbank, um die Größe der Datenbank zu verringern. Auf diese Weise kann es die Fragmentierung der Datenbank erheblich erhöhen, während VACUUM die Fragmentierung verringert. Daher Auto-VACUUM lässt die Datenbank nur kleiner werden.

Im SQLite-Prompt können Sie mit den folgenden Anweisungen das Auto-Vacuum aktivieren/Deaktivieren Sie das Auto-Vacuum von SQLite-VACUUM:

sqlite> PRAGMA auto_vacuum = NONE; -- 0 bedeutet deaktivieren Sie Auto Vacuum
sqlite> PRAGMA auto_vacuum = FULL; -- 1 bedeutet, vollständiges automatisches Vacuum zu aktivieren
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 bedeutet, inkrementellen Vacuum zu aktivieren

Sie können den folgenden Befehl im Befehlszeilen-Protokoll ausführen, um die Vacuum-Einstellungen zu überprüfen-

$sqlite3 database_name "PRAGMA auto_vacuum;"