sqlite3 CLI ツールを使用して、より高速な結果を得るために SQLite データベース全体をメモリにロードする方法はありますか? ありがとう!
2 に答える
ここで何を達成しようとしているのかよくわかりませんが、提案するアイデアが 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
この記事は良い例を提供します、すなわち:
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;
しかし、期待していたスピードの向上が見られなかったので、少しがっかりしました。私は一人ではないと思います。私が試したデータセットは>300MBで、そこにあるデフォルトのページキャッシュサイズをはるかに超えているため、データベース全体をRAMにロードすると顕著な結果が得られると想像できますが、実際にはそうではありませんでした。何か考えはありますか?