SQLiteスピードアップ:PRAGMA default_synchronous = OFF
2007年3月27日
SQLite をWindowsで用いていて、データベースが大きくなるとスピードがかなり遅くなる現象に遭遇した。そうなった時に、スピードアップするための方法を見つけたので、メモ。
クエリーとして、
を実行すればよい。Nucleus-SQLiteの場合は、NP_SQLiteの管理画面から実行できる。default_synchronous の設定には3つ、『OFF』『NORMAL』『FULL』とあって、データ書き込みの際のOSとのシンクロを制御しているらしい(デフォルトは『NORMAL』)。『FULL』なら、OSがクラッシュしたようなときでもデータベースが壊れない。その代わり、速度が犠牲になる。『OFF』の場合は、速度は向上するけれど、データのハードディスクへの書き込みの際にOSがクラッシュすると、データベースが壊れる可能性がゼロで無くなる。
Windowsで利用するときに、『OFF』にすると速度の大幅な向上が見られた。こまめにデータベースをバックアップするようにすればこれでも良いだろう。一方、このラクーカンのサーバでは、『OFF』でも『NORMAL』でも速度の差がなかったので、『NORMAL』(デフォルト)にしておいた。
クエリーとして、
PRAGMA default_synchronous = OFF;
を実行すればよい。Nucleus-SQLiteの場合は、NP_SQLiteの管理画面から実行できる。default_synchronous の設定には3つ、『OFF』『NORMAL』『FULL』とあって、データ書き込みの際のOSとのシンクロを制御しているらしい(デフォルトは『NORMAL』)。『FULL』なら、OSがクラッシュしたようなときでもデータベースが壊れない。その代わり、速度が犠牲になる。『OFF』の場合は、速度は向上するけれど、データのハードディスクへの書き込みの際にOSがクラッシュすると、データベースが壊れる可能性がゼロで無くなる。
Windowsで利用するときに、『OFF』にすると速度の大幅な向上が見られた。こまめにデータベースをバックアップするようにすればこれでも良いだろう。一方、このラクーカンのサーバでは、『OFF』でも『NORMAL』でも速度の差がなかったので、『NORMAL』(デフォルト)にしておいた。