SQLite Vacuum
VACUUM コマンドは、メインデータベースの内容を一時データベースファイルにコピーし、メインデータベースを空にして、コピーから元のデータベースファイルを再ロードします。これにより、空きページが排除され、テーブル内のデータが連続して配置され、さらにデータベースファイル構造がクリーンアップされます。
テーブルに明示的な整数主キー(INTEGER PRIMARY KEY)がない場合、VACUUM コマンドはテーブル内のエントリの行 ID(ROWID)を変更する可能性があります。VACUUM コマンドはメインデータベースにのみ適用され、追加のデータベースファイルには VACUUM コマンドを使用できません。
アクティブなトランザクションがある場合、VACUUM コマンドは失敗します。VACUUM コマンドは、インメモリデータベースに対しては何も行いません。VACUUM コマンドはデータベースファイルを最初から再作成するため、VACUUM を使用して多くのデータベース固有の構成パラメータを変更することもできます。
手動 VACUUM
以下は、コマンドプロンプトでデータベース全体に対して VACUUM コマンドを発行する構文です:
$sqlite3 database_name "VACUUM;"
SQLite プロンプトで VACUUM を実行することもできます。次のようにします:
sqlite> VACUUM;
特定のテーブルに対して VACUUM を実行することもできます。次のようにします:
sqlite> VACUUM table_name;
自動 VACUUM(Auto-VACUUM)
SQLite の Auto-VACUUM は VACUUM とは少し異なります。Auto-VACUUM は空きページをデータベースの末尾に移動して、データベースサイズを減らすだけです。これにより、データベースが著しく断片化される一方、VACUUM は断片化を解消します。したがって、Auto-VACUUM はデータベースをより小さくするだけです。
SQLite プロンプトで、次のコマンドを実行して SQLite の Auto-VACUUM を有効/無効にできます:
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
コマンドプロンプトで次のコマンドを実行して、auto-vacuum 設定を確認できます:
$sqlite3 database_name "PRAGMA auto_vacuum;"その他の拡張機能