SQLite Vacuum
La commande VACUUM copie le contenu de la base de données principale dans un fichier de base de données temporaire, puis efface la base de données principale et recharge le fichier de base de données d'origine à partir de la copie. Cela élimine les pages libres, organise les données des tables dans un ordre contigu et nettoie également la structure du fichier de base de données.
Si la table ne possède pas de clé primaire entière explicite (INTEGER PRIMARY KEY), la commande VACUUM peut modifier les identifiants de ligne (ROWID) des entrées de la table. La commande VACUUM s'applique uniquement à la base de données principale ; il est impossible d'utiliser la commande VACUUM sur des fichiers de base de données attachés.
La commande VACUUM échouera s'il existe une transaction active. La commande VACUUM est sans effet pour les bases de données en mémoire. Étant donné que la commande VACUUM recrée le fichier de base de données à partir de zéro, VACUUM peut également être utilisée pour modifier de nombreux paramètres de configuration spécifiques à la base de données.
VACUUM manuel
Voici la syntaxe pour émettre la commande VACUUM sur l'ensemble de la base de données à l'invite de commande :
$sqlite3 database_name "VACUUM;"
Vous pouvez également exécuter VACUUM dans l'invite SQLite, comme indiqué ci-dessous :
sqlite> VACUUM;
Vous pouvez également exécuter VACUUM sur une table spécifique, comme indiqué ci-dessous :
sqlite> VACUUM table_name;
VACUUM automatique (Auto-VACUUM)
L'Auto-VACUUM de SQLite n'est pas tout à fait identique à VACUUM ; il déplace uniquement les pages libres à la fin de la base de données, réduisant ainsi la taille de la base de données. Ce faisant, il peut fragmenter considérablement la base de données, alors que VACUUM défragmente. Ainsi, Auto-VACUUM ne fait que réduire la taille de la base de données.
Dans l'invite SQLite, vous pouvez activer/désactiver l'Auto-VACUUM de SQLite via le pragma suivant :
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuum sqlite> PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum
Vous pouvez exécuter la commande suivante depuis l'invite de commandes pour vérifier le paramètre d'auto-vacuum :
$sqlite3 database_name "PRAGMA auto_vacuum;"Autres extensions