如何在Sequelize.js中使用数据库连接池
我需要澄清一下游泳池是什么以及它的function。 文档说Sequelize将在初始化时build立一个连接池,所以你应该只在每个数据库创build一个实例。
var sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql', pool: { max: 5, min: 0, idle: 10000 }, // SQLite only storage: 'path/to/database.sqlite' });
当您的应用程序需要从数据库中检索数据时,它会创build一个数据库连接。 创build这个连接涉及到应用程序和数据库的一些时间和机器资源开销。 许多数据库库和ORM将尝试在可能的情况下重新使用连接,以免它们一次又一次地build立数据库连接。 pool
是这些保存的可重用连接的集合,在你的情况下,Sequelize从这个连接中抽取。 您的configuration
pool: { max: 5, min: 0, idle: 10000 }
反映你的游泳池应该:
- 永远不要超过五个打开的连接(
max: 5
) - 至less有零开连接/不保持最小数量的连接(
min: 0
) - 连接空闲(未使用)10秒钟后,从池中删除连接(
idle: 10000
)
tl; dr:池对数据库和整体应用程序性能有帮助,但如果您对池configuration过于积极,则可能会对整体性能产生负面影响。
池正在排水错误
我发现这个线程在我的searchSequalize错误是给我的node.js应用程序: 池正在耗尽 。 我不能为了我的生活而弄明白。 所以对于那些追随我的脚步的人来说:
问题是我正在closures数据库比我想象的要早,用命令sequelize.closeConnections()
。 出于某种原因,而不是像“数据库已closures”这样的错误,而是给出了不明确的错误“池正在耗尽”。
似乎你可以尝试把pool
变成false
以避免创build游泳池。 以下是API详细信息表: http : //sequelize.readthedocs.org/en/latest/api/sequelize/
[options.pool = {}]对象应该继续使用连接池。 默认是真的