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

Vacuum SQLite

La commande VACUUM copie le contenu du fichier de base de données principal dans un fichier de base de données temporaire, puis vide le fichier de base de données principal et recharge le fichier de base de données original à partir de la copie. Cela élimine les pages vides, arrange les données dans la table en continu, et nettoie également la structure du fichier de base de données.

Si il n'y a pas de clé primaire entière explicite (INTEGER PRIMARY KEY) dans la table, la commande VACUUM peut changer l'ID de ligne (ROWID) des entrées dans la table. La commande VACUUM ne s'applique qu'à la base de données principale, les fichiers de bases de données supplémentaires ne peuvent pas utiliser la commande VACUUM.

Si une transaction active est en cours, la commande VACUUM échouera. La commande VACUUM est une opération pour toute base de données en mémoire. Comme la commande VACUUM recrée le fichier de base de données à partir de zéro, VACUUM peut également être utilisé pour modifier de nombreux paramètres spécifiques à la base de données.

Vacuum manuel

Voici une syntaxe simple pour envoyer une commande VACUUM à l'ensemble de la base de données à partir de l'invite de commande-

$sqlite3 database_name "VACUUM;"

Vous pouvez exécuter VACUUM à partir de l'invite SQLite, comme suit-

sqlite> VACUUM;

Vous pouvez également exécuter VACUUM sur une table spécifique, comme suit-

sqlite> VACUUM table_name;

Vacuum automatique (Auto-VACUUM)

Auto de SQLite-VACUUM est légèrement différent de VACUUM, il ne fait que déplacer les pages vides à la fin de la base de données, réduisant ainsi la taille de la base de données. En le faisant ainsi, il peut fragmenter明显ment la base de données, tandis que VACUUM est anti-fragmentation. Donc Auto-VACUUM ne fera que rendre la base de données plus petite.

Dans l'invite de SQLite, vous pouvez activer en exécutant les suivantes/Désactiver l'Auto de SQLite-VACUUM :

sqlite> PRAGMA auto_vacuum = NONE; -- 0 signifie désactiver l'auto-vacuum
sqlite> PRAGMA auto_vacuum = FULL; -- 1 means enable full auto vacuum
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 means enable incremental vacuum

您可以从命令提示符处运行以下命令以检查Vacuum设置-

$sqlite3 database_name "PRAGMA auto_vacuum;"