首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlite3 +节点:何时关闭db?

sqlite3 +节点:何时关闭db?
EN

Stack Overflow用户
提问于 2021-03-21 07:37:02
回答 1查看 1.2K关注 0票数 4

我在Node上使用了Node,但我怀疑我的问题也适用于节点-平方米3

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

  • 是否需要显式调用数据库上的.close()?我似乎记得在某个地方读到,当当前作用域(如当前函数)退出时,它将自动关闭。如果我从未在web服务器场景中调用.close(),并接受了大量请求,该怎么办?
  • 如果您有许多不同的组件(身份验证、授权、本地化、支付等)而且每个组件可能需要或可能不需要在请求的整个生命周期内访问数据库(除了支付之外,这些请求的生存期相当短),这样做更好吗?
代码语言:javascript
复制
1. have one db connection for the lifetime of the **server** and pass that around
2. have one db connection for the lifetime of the **request** and pass that around
3. open a new connection every time I need something, maybe 2-3 times per request (and close it either explicitly or implicitly when the function returns, if that's a thing)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-03 18:39:27

乔舒亚·怀斯(better-sqlite3的创建者) 回答 over on GitHub:

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

您可以为整个线程打开一个数据库连接(如果不使用工作线程,则打开整个进程),并在每个请求之间共享该连接。Node.js是单线程的,所以您不必担心同时进行访问,即使同时处理多个请求。请注意,您不应该在事件循环的多个标记中打开一个SQLite事务(即,不要在开始和提交之间使用等待),因为其他请求可能会意外地将SQL注入到您的事务中。而且,SQLite事务是序列化的(一次不能有多个事务),因此您应该尽快打开和关闭它们;保持它们在事件循环的滴答中打开不利于性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66729882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档