代码之家  ›  专栏  ›  技术社区  ›  Kent Boogaart

内存中的sqlite数据库是否可以并发扩展?

  •  6
  • Kent Boogaart  · 技术社区  · 16 年前

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

    有什么方法可以让两个世界都变得最好吗?也就是说,内存中的数据库允许对数据库进行多个并发调用?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Kent Boogaart    16 年前

    答案是“否”。我在sqlite用户组上询问,得到了来自pavel ivanov的以下响应:

    不,sqlite不支持对任何数据库的完全并发访问。这个 只有在磁盘数据库中没有 共享缓存(因此实际上在 记忆)。当然,我不考虑从 不同的过程。

        2
  •  2
  •   Samuel Neff    16 年前

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

        3
  •  0
  •   Andrey    16 年前

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