SQLite-VACUUM

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

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

アクティブなトランザクションがある場合、VACUUMコマンドは失敗します。 VACUUMコマンドは、メモリ内データベースの操作なしです。 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;"