我需要澄清池是什么以及它做了什么。文档说Sequelize会在初始化时设置一个连接池,所以理想情况下你应该只为每个数据库创建一个实例。
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'
});
当您的应用程序需要从数据库中检索数据时,它会创建数据库连接。创建此连接会为应用程序和数据库带来一些时间和机器资源的开销。许多数据库库和ORM将尽可能重用连接,这样它们就不会产生一遍又一遍地建立数据库连接的开销。该 pool
是这些保存的,可重复使用的连接的集合,在您的情况下,Sequelize来自。你的配置
pool: {
max: 5,
min: 0,
idle: 10000
}
反映您的游泳池应该:
- 从不超过五个开放式连接(
max: 5
)
- 至少,零开放连接/保持没有最小连接数(
min: 0
)
- 连接空闲(未使用)10秒后从池中删除连接(
idle: 10000
)
tl; dr:池对于数据库和整体应用程序性能有帮助,但如果您对池配置过于激进,则可能会对整体性能产生负面影响。
似乎你可以尝试 pool
至 false
避免创建池bing。这是API详细信息表:http://sequelize.readthedocs.org/en/latest/api/sequelize/
[options.pool = {}]
目的
应该是sequelize使用连接池。
默认为true
池正在排水错误
我在搜索Sequalize错误时发现这个帖子给了我的node.js应用程序: 游泳池正在排水。我不能为我的生活搞清楚。那些跟随我的脚步的人:
问题是我使用命令比我想象的更早关闭数据库 sequelize.closeConnections()
。由于某种原因,而不是像'数据库已被关闭'这样的错误,而是给出了模糊的错误'池正在耗尽'。