如何使用命令行工具 sqlite3 浏览内存中的 SQLite 数据库
Posted
技术标签:
【中文标题】如何使用命令行工具 sqlite3 浏览内存中的 SQLite 数据库【英文标题】:How to browse an in-memory SQLite database with the command line tool sqlite3 【发布时间】:2011-09-26 14:13:42 【问题描述】:有没有办法使用 sqlite3 CLI 工具将整个 SQLite 数据库加载到内存中以获得更快的结果?谢谢!
【问题讨论】:
【参考方案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 中会产生明显的结果,但事实并非如此。有什么想法吗?
【讨论】:
您需要描述您想要获得的改进...听起来您可能需要定义一些索引并确保它们按预期使用。如果您发布更多信息,例如表的结构以及需要改进的 SQL,也许我或其他人可以提供帮助。【参考方案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
【讨论】:
以上是关于如何使用命令行工具 sqlite3 浏览内存中的 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章
android Sqlite3 相同sql 在命令行和数据库管理工具查询出的数据不一致