sqlite3 + 节点:什么时候关闭数据库?

sqlite3 + node: when to close db?

我也在用 better-sqlite3 on Node, but I suspect my questions are applicable to node-sqlite3

我基本上有 2 个简单的问题,与服务器呈现的网站有关:

谢谢

Joshua Wise(better-sqlite3 的创作者)answer 在 GitHub 上:


数据库连接在垃圾回收时自动关闭,这是不确定的。如果您想知道连接已关闭(而不是猜测),您应该调用 .close()。

您可以只为整个线程(如果您不使用工作线程,则为整个进程)打开一个数据库连接,并在每个请求之间共享该连接。 Node.js 是单线程的,因此您不必担心同时访问,即使同时处理多个请求。一个警告是你永远不应该在事件循环的多个滴答中打开一个 SQLite 事务(即,不要在 BEGIN 和 COMMIT 之间使用 await),因为其他请求可能会意外注入 SQL 进入您的交易。此外,SQLite 交易是序列化的(一次不能超过一个),因此您应该尽快打开和关闭它们;让它们在事件循环的滴答声中保持打开状态对性能不利。