ぬけラボ

φ(..)メモメモ

SQLiteのjournal_modeについて

SQLiteのjournal_modeについてはこちらの記事が参考になりました。

[SQLiteジャーナルファイル]
http://yuki312.blogspot.jp/2012/02/androidsqlite.html

またSQLiteのjournal_modeにてWAL(Write-Ahead Logging)を使用すると
デフォルトのdeleteモードから5.6倍ほど
insertしてからselectするまでの時間が高速化するという記事を見つけました。
ちなみにGrowthForecastではwalモードを使用されているようです。

[SQLite のパフォーマンスチューニング、または DBIx::Sunny 0.16 の話(2012年6月 8日)]
http://blog.nomadscafe.jp/2012/06/sqlite-dbixsunny-016.html

少しだけwalモードの動作を見てみましたが、
デフォルトのdeleteモードではトランザクション中にjournalファイルが作成され、
コミットするタイミングで削除されます。

一方walモードではtransaction中にshmとwalという二つのファイルが作成され、
commitされるとwalファイルのサイズだけが0になりました。

ポスグレのwalの説明ですが、わかりやすいかも?
[ログ先行書き込みプロトコルに基づくロギング――Write-Ahead Logging (WAL)]
http://www.postgresql.jp/document/7.3/admin/wal.html

[SQLite 3.7登場、高速コミット/ロールバックWAL実装実現[2010/07/26]]
http://news.mynavi.jp/news/2010/07/26/041/index.html

[SQLite本家 Write-Ahead Logging]
http://www.sqlite.org/wal.html