我在Node上使用了Node,但我怀疑我的问题也适用于节点-平方米3。
I基本上有两个简单的问题,与服务器呈现的网站有关:
.close()?我似乎记得在某个地方读到,当当前作用域(如当前函数)退出时,它将自动关闭。如果我从未在web服务器场景中调用.close(),并接受了大量请求,该怎么办?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)谢谢
发布于 2021-04-03 18:39:27
乔舒亚·怀斯(better-sqlite3的创建者) 回答 over on GitHub:
数据库连接在垃圾收集时会自动关闭,这是不确定的.如果您想知道连接已经关闭(而不是猜测),则应该调用.close()。
您可以为整个线程打开一个数据库连接(如果不使用工作线程,则打开整个进程),并在每个请求之间共享该连接。Node.js是单线程的,所以您不必担心同时进行访问,即使同时处理多个请求。请注意,您不应该在事件循环的多个标记中打开一个SQLite事务(即,不要在开始和提交之间使用等待),因为其他请求可能会意外地将SQL注入到您的事务中。而且,SQLite事务是序列化的(一次不能有多个事务),因此您应该尽快打开和关闭它们;保持它们在事件循环的滴答中打开不利于性能。
https://stackoverflow.com/questions/66729882
复制相似问题