SQLite-VACUUM

VACUUMコマンドは、その内容を一時データベースファイルにコピーし、コピーから元のデータベースファイルを再ロードすることにより、メインデータベースをクリーンアップします。これにより、空きページがなくなり、テーブルデータが連続するように調整され、データベースファイル構造がクリーンアップされます。

VACUUMコマンドは、明示的なINTEGER PRIMARYKEYを持たないテーブルのエントリのROWIDを変更する場合があります。VACUUMコマンドは、メインデータベースでのみ機能します。添付されたデータベースファイルをバキュームすることはできません。

アクティブなトランザクションがある場合、VACUUMコマンドは失敗します。VACUUMコマンドは、インメモリデータベースのno-opです。VACUUMコマンドはデータベースファイルを最初から再構築するため、VACUUMを使用して多くのデータベース固有の構成パラメーターを変更することもできます。

手動掃除機

以下は、コマンドプロンプトからデータベース全体に対してVACUUMコマンドを発行するための簡単な構文です。

$sqlite3 database_name "VACUUM;"

次のように、SQLiteプロンプトからVACUUMを実行できます。

sqlite> VACUUM;

次のように、特定のテーブルでVACUUMを実行することもできます。

sqlite> VACUUM table_name;

自動掃除機

SQLite Auto-VACUUMはVACUUMと同じことはしませんが、空きページをデータベースの最後に移動するだけなので、データベースのサイズが小さくなります。そうすることで、VACUUMが最適化を保証しながら、データベースを大幅に断片化できます。したがって、Auto-VACUUMはデータベースを小さく保つだけです。

SQLiteプロンプトで実行されている次のプラグマによって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

コマンドプロンプトから次のコマンドを実行して、自動バキューム設定を確認できます。

$sqlite3 database_name "PRAGMA auto_vacuum;"