メモリデータベース 1

今後スレで謎の海外勢が教えてくれたことのメモ。

SQLite3では、メモリ内データベースというのがあって、ファイルではなくメモリ上にテーブル作ることが可能らしい。これによって、小さなテーブルへ頻繁にアクセスするような場合にハードディスクへのI/Oが激減してパフォーマンスがよくなる。
たとえば、ポエニーのキーテーブルは、そう大きくなく、頻繁に更新されるのでMEMORY上に作ったほうがよいかもしれない。

  1. DBファイルの変わりに":memory:"を使う
  2. "PRAGMA temp_sotre=MEMORY"を実行したあとにテンポラリーデータベースを使う

という方法があるもよう。
sqlite-In Memory Database
Pragma statements supported by SQLite
など参照。

PRAGMAのほうは、DBを開くたびに毎回実行する必要があるので注意。
(0=DEFAULTに初期化される。DEFAULTでは、コンパイル時に指定した方法となる)
ベンチマークや容量的な限界など後ほど試してみる。