【发布时间】:2011-09-26 14:13:42
【问题描述】:
有没有办法使用 sqlite3 CLI 工具将整个 SQLite 数据库加载到内存中以获得更快的结果?谢谢!
【问题讨论】:
有没有办法使用 sqlite3 CLI 工具将整个 SQLite 数据库加载到内存中以获得更快的结果?谢谢!
【问题讨论】:
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 中会产生明显的结果,但事实并非如此。有什么想法吗?
【讨论】:
我不确定您要在这里完成什么,但我有两个想法要提出:
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
【讨论】: