gpt4 book ai didi

node.js - 我应该在整个服务器运行时保留 Sequelize 实例吗?

转载 作者:行者123 更新时间:2023-12-03 12:17:59 24 4
gpt4 key购买 nike

我有一个 Sequelize 实例,它被导出到一个文件中,以便在进行数据库操作时访问。

const sequelize = new Sequelize('database', 'username', null, {
dialect: 'mysql'
});
module.exports = sequelize;

所以实例是在 expressjs 服务器启动时创建的,并且永远不会销毁。我想知道这是否是正确的做法,还是每次使用 DB 操作时都应该调用 new Sequelize

我认为它应该保持事件状态,因为这就是数据库池可以生效的方式。对吧?

最佳答案

底线是 - 是的,它应该保持活力。如果您让实例保持事件状态,则不会影响性能。因为它将是处理 future 连接的 Sequelize 实例(以及扩展的 ORM)。这还包括(如您所述)汇集。

联系

当涉及到池配置本身时,它会变得有点棘手。根据您的配置,池有一定数量的“空间”可供使用 - 创建连接的限制,连接删除后的空闲持续时间等。我当然可以想象根本不需要保持连接事件的情况 -例如,一家公司的内部系统不会在一夜之间使用。

Sequelize ORM 为您提供了一组很好的选项供您在配置连接池时进行选择。一般来说,您确实希望重用连接,因为建立新连接非常昂贵 - 不仅是因为网络(例如授权,可能是代理等),还因为创建数据库连接时发生的内存分配(这就是为什么根据每个请求重新连接不是一个好主意..)。

然而,这一切都取决于您使用的数据库引擎(以及您的系统有多忙);例如,MySQL 可以缓存连接。当连接关闭时,它会返回到线程缓存而不是被丢弃(一段时间内)。当一个新连接打开时,MySQL 将查看线程缓存而不是尝试建立一个新连接。

你可能想通过这些:

关于node.js - 我应该在整个服务器运行时保留 Sequelize 实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62623432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com