Nodejs和Sqlite。执行长查询

时间:2016-12-01 15:03:32

标签: node.js performance sqlite execution

我必须执行2次查询:查询A很长(20秒),查询B很快(1秒)。 我想保证如果查询A正在运行,查询B也会快速执行。 我怎么能达到这种行为?

1 个答案:

答案 0 :(得分:0)

由于SQLite的锁定方式,这可能并不容易。

来自官方Appropriate Uses For SQLite文件:

  

SQLite支持无限数量的同时阅读器,但它只允许一个编写者在任何时刻。在许多情况下,这不是问题。作家排队。每个应用程序都可以快速完成数据库的工作并继续运行,并且锁定持续时间超过几十毫秒。但是有些应用程序需要更多的并发性,而这些应用程序可能需要寻求不同的解决方案。   [...]   SQLite每个数据库文件一次只支持一个编写器。但在大多数情况下,写入事务只需要几毫秒,因此多个编写者可以简单地轮流。 SQLite将处理许多人怀疑的更多写并发性。然而,客户端/服务器数据库系统,因为他们有一个长期运行的服务器进程来协调访问,通常可以处理比SQLite更多的写入并发性。

这可能不是使用SQLite的最佳方式,正如SQLite文档所述,当您拥有如此多的数据时,单个查询需要很长时间。

除了使用像PostgreSQL这样的真正的RDBMS之外,没有简单的解决方案可以解决这个问题。

由于您没有包含那些花费这么长时间的查询,因此除此之外也不可能告诉您任何其他内容。当然,也许你的查询可以优化,但我们不知道。