English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
VACUUMコマンドは、メインデータベースの内容を一時データベースファイルにコピーし、メインデータベースをクリアし、コピーから元のデータベースファイルを再読み込みすることで、空きページを排除し、テーブルのデータを連続的に並べ替え、データベースファイル構造を整理します
テーブルに明確な整型主キー(INTEGER PRIMARY KEY)がない場合、VACUUMコマンドはテーブルのエントリの行ID(ROWID)を変更する可能性があります。VACUUMコマンドはメインデータベースにのみ適用され、サブデータベースファイルにはVACUUMコマンドを使用することはできません
アクティブなトランザクションがある場合、VACUUMコマンドは失敗します。VACUUMコマンドはメモリデータベースのあらゆる操作に使用されます。VACUUMコマンドはデータベースファイルを再作成することで、多くのデータベース固有の設定パラメータを変更することもできます
以下は、コマンドプロンプトから全体のデータベースに対してVACUUMコマンドを発行するシンプルな構文です-
$sqlite3 database_name "VACUUM;"
以下のようにSQLiteのコマンドプロンプトからVACUUMを実行できます-
sqlite> VACUUM;
特定のテーブル上でVACUUMを実行することもできます。以下のようになります-
sqlite> VACUUM table_name;
SQLiteの自動-VACUUMはVACUUMとは少し異なり、空きページをデータベースの最後に移動してデータベースのサイズを小さくします。これにより、データベースが明らかにフラグメント化されますが、VACUUMは反フラグメント化を行います。したがって、自動-VACUUMはデータベースをさらに小さくします
SQLiteのコマンドプロンプトで、以下のようにコンパイルして実行することで、自動的に有効にできます/SQLiteの自動クリアを無効にします-VACUUM:
sqlite> PRAGMA auto_vacuum = NONE; -- 0 は自動クリアを無効にする意味です 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;"