SQLite資料一覧

DBの不要領域を整理する(vacuum)

2008/4/10更新

対応バージョン: 3.5.7

SQLiteではデータを削除しても領域自体は削除されず、ファイルサイズも減らない。

不要な領域を整理(削除)してファイルサイズを減らすにはvacuumコマンドを使用する。

これによりアプリケーションによってはパフォーマンスが向上する場合もある。

例) 10万レコードを挿入し、すべて削除、その後vacuumを行う

テーブル作成

% sqlite3 sample.db "create table test(data text);"

データ挿入

% echo | awk '{for(i = 1; i <= 100000; i++) \
printf("sqlite3 sample.db \"insert into test values(%d);\"\n", i)}' | sh

% ls -l sample.db
-rw-r--r-- ... 1454080 ... sample.db

全レコード削除

% sqlite3 sample.db "delete from test;"

% ls -l sample.db
-rw-r--r-- ... 1454080 ... sample.db ← サイズ変わらず

vacuum

% sqlite3 sample.db vacuum

% ls -l sample.db
-rw-r--r-- ... 2048 ... sample.db ← サイズ減少