SQLite - VACUUM

Il comando VACUUM pulisce il database principale copiandone il contenuto in un file di database temporaneo e ricaricando il file di database originale dalla copia. Ciò elimina le pagine libere, allinea i dati della tabella in modo che siano contigui e pulisce in altro modo la struttura del file del database.

Il comando VACUUM può modificare il ROWID delle voci nelle tabelle che non hanno una CHIAVE PRIMARIA INTEGER esplicita. Il comando VACUUM funziona solo sul database principale. Non è possibile VACUUM un file database allegato.

Il comando VACUUM fallirà se c'è una transazione attiva. Il comando VACUUM è un no-op per i database in memoria. Poiché il comando VACUUM ricostruisce il file di database da zero, VACUUM può essere utilizzato anche per modificare molti parametri di configurazione specifici del database.

VACUUM manuale

Di seguito è riportata una semplice sintassi per emettere un comando VACUUM per l'intero database dal prompt dei comandi:

$sqlite3 database_name "VACUUM;"

È possibile eseguire VACUUM dal prompt di SQLite come segue:

sqlite> VACUUM;

Puoi anche eseguire VACUUM su una tabella particolare come segue:

sqlite> VACUUM table_name;

Auto-VACCUM

SQLite Auto-VACUUM non fa la stessa cosa di VACUUM, ma sposta solo le pagine libere alla fine del database riducendo così la dimensione del database. In questo modo può frammentare in modo significativo il database mentre VACUUM garantisce la deframmentazione. Quindi, Auto-VACUUM mantiene il database piccolo.

È possibile abilitare / disabilitare l'aspirazione automatica di SQLite tramite i seguenti pragmi in esecuzione al prompt di SQLite:

sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum
sqlite> PRAGMA auto_vacuum = FULL; -- 1 means enable full auto vacuum
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 means enable incremental vacuum

È possibile eseguire il seguente comando dal prompt dei comandi per verificare l'impostazione del vuoto automatico:

$sqlite3 database_name "PRAGMA auto_vacuum;"