内存中的SQLite数据库可以扩展并发吗?

时间:2010-04-02 13:40:44

标签: sql sqlite scalability concurrency in-memory

为了防止清除SQLite内存数据库,必须使用相同的连接来访问数据库。但是,使用相同的连接会导致SQLite同步对数据库的访问。因此,如果我有许多线程对内存数据库执行读取,那么在多核计算机上它比在文件支持的数据库上运行的完全相同的代码要慢。

有没有办法让两全其美?也就是说,一个允许对数据库进行多次并发调用的内存数据库?

3 个答案:

答案 0 :(得分:3)

答案是否定的。我询问了SQLite用户组并得到了Pavel Ivanov的以下回复:

  

不,SQLite不支持对任何数据库的完全并发访问。该   只有你可以获得的并发性就是没有磁盘数据库   共享缓存(所以实际上有几个数据库副本   记忆)。当然我不考虑并发选项   不同的过程。

答案 1 :(得分:2)

如果将页面大小和缓存大小设置得足够大以包含整个数据库,则将从缓存中完成读取操作,并且性能几乎等于内存数据库。

答案 2 :(得分:0)

从这里我明白答案是肯定的http://www.sqlite.org/faq.html#q6