English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il comando VACUUM copia i contenuti del database principale in un file di database temporaneo, poi svuota il database principale e ricarica il file del database originale dalla copia. Questo elimina le pagine libere, organizza i dati nella tabella in modo contiguo e pulisce la struttura del file del database.
Se la tabella non ha un identificatore principale di tipo intero esplicito (INTEGER PRIMARY KEY), il comando VACUUM potrebbe modificare l'ID della riga (ROWID) degli elementi nella tabella. Il comando VACUUM è applicabile solo al database principale, non è possibile utilizzare il comando VACUUM sui file di database aggiuntivi.
Se c'è un'operazione transazionale attiva, il comando VACUUM fallirà. Il comando VACUUM è utilizzato per qualsiasi operazione su un database in memoria. Poiché il comando VACUUM ricrea il file del database da zero, può anche essere utilizzato per modificare molti parametri di configurazione specifici del database.
Ecco una sintassi semplice per emettere il comando VACUUM per l'intero database dal prompt dei comandi-
$sqlite3 database_name "VACUUM;"
È possibile eseguire VACUUM dal prompt di SQLite, come mostrato di seguito-
sqlite> VACUUM;
È anche possibile eseguire VACUUM su una tabella specifica, come mostrato di seguito-
sqlite> VACUUM table_name;
L'Auto-VACUUM di SQLite è diverso dal VACUUM, si limita a spostare le pagine libere alla fine del database, riducendo così la dimensione del database. Facendo così, può fragmentare significativamente il database, mentre VACUUM è usato per defragmentare. Pertanto, l'Auto-VACUUM farà solo il database più piccolo.
Nel prompt di SQLite, è possibile abilitare o disabilitare l'Auto-VACUUM di SQLite tramite i seguenti comandi:
sqlite> PRAGMA auto_vacuum = NONE; -- 0 significa disabilitare l'auto-vacuum sqlite> PRAGMA auto_vacuum = FULL; -- 1 significa abilitare l'auto-vacuum completo sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 means enable incremental vacuum
您可以从命令提示符处运行以下命令以检查Vacuum设置-
$sqlite3 database_name "PRAGMA auto_vacuum;"