2011-07-01 11 views

答えて

3

私はあなたがここで達成しようとしているかがわからないんだけど、私が提案するには、2つのアイデアを持っている:

1-データベースからメモリデータベースに接続いくつかにすべてをコピーします。このリンクは、メモリデータベースに接続する方法を教えてくれます:http://www.sqlite.org/lang_attach.html

2-が、あなたのキャッシュサイズを増やし、メモリにトランザクションを維持し、メモリ内の「一時保存」を保つ: http://www.sqlite.org/pragma.html#pragma_cache_size http://www.sqlite.org/pragma.html#pragma_journal_mode http://www.sqlite.org/pragma.html#pragma_temp_store

1

This articleはつまり、良い例を提供します。

sqlite> attach database ':memory:' as mydb; 
sqlite> .schema 
CREATE TABLE log(ts,msg TEXT); 
sqlite> create table mydb.log as select * from log; 
sqlite> select * from mydb.log order by ts desc limit 5; 

は、しかし、私は満たされなかったために期待していた速度が改善するので、少しがっかりしました。私はI'm not aloneだと思います。私が試したデータセットは300MBを超えており、そこに与えられているデフォルトのページキャッシュサイズをはるかに超えているので、データベース全体をRAMにロードすると目に見える結果になると思います。どんなthoghts?

+0

取得しようとしている改善点を説明する必要があります。おそらく、いくつかのインデックスを定義し、それらが意図したとおりに使用されているかどうかを確認する必要があります。テーブルの構造や改善が必要なSQLなど、より多くの情報を投稿すると、おそらく私または他の人が手助けすることができます。 –

関連する問題