这是一个更基本的问题,试图澄清我的理解…
通常情况下,如果我有一个简单的程序,如下面,它创建一个数据库连接,然后关闭它一旦脚本退出
import Database from 'better-sqlite3';
const db = new Database('./path/to/db.sqlite');
function foo(db) {
return db.prepare('SELECT * FROM table').all();
}
console.log(foo(db));
但是,当我运行一个nodejs
REST服务器,它启动后可能运行几天、几周、几个月而不关闭时,实际上会发生什么呢?是否每次用户进行查询时都会创建一个新的数据库连接,然后在返回结果时关闭连接?例如,使用fastify
fastify.get('/', async (request, reply) => {
return foo(db)
})
在node
启动时创建一个连接,这样每次用户访问服务器时就不会重新创建连接,这样会更好吗?很可能我真的不明白这是如何工作的,因此我的问题。
注意,sqlite3 + node: when to close db?是一个类似的问题,但不完全是我要问的。
1条答案
按热度按时间5vf7fwbs1#
您需要使用connection pool。这将确保没有连接泄漏并正确管理可用连接。
建议代码: