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;"
その他の拡張機能