如何使用命令行工具 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

android Sqlite3 相同sql 在命令行和数据库管理工具查询出的数据不一致

sqlite3常用命令以及django如何操作sqlite3数据库

如何创建 sqlite3 内存数据库?

关于sqlite3 中的timestamp类型

查看存储在 Mavericks 或 Yosemite 中的核心数据 [关闭]