问题 如何在Sequelize.js中使用数据库连接池


我需要澄清池是什么以及它做了什么。文档说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'
});

4544
2018-02-20 16:02


起源

关于连接池有用的原因: stackoverflow.com/questions/44081488/... - Maria Ines Parnisari


答案:


当您的应用程序需要从数据库中检索数据时,它会创建数据库连接。创建此连接会为应用程序和数据库带来一些时间和机器资源的开销。许多数据库库和ORM将尽可能重用连接,这样它们就不会产生一遍又一遍地建立数据库连接的开销。该 pool 是这些保存的,可重复使用的连接的集合,在您的情况下,Sequelize来自。你的配置

pool: {
    max: 5,
    min: 0,
    idle: 10000
  }

反映您的游泳池应该:

  1. 从不超过五个开放式连接(max: 5
  2. 至少,零开放连接/保持没有最小连接数(min: 0
  3. 连接空闲(未使用)10秒后从池中删除连接(idle: 10000

tl; dr:池对于数据库和整体应用程序性能有帮助,但如果您对池配置过于激进,则可能会对整体性能产生负面影响。


12
2018-05-26 03:25



很好的答案!有了这个 idle 配置,如果我的查询执行超过10秒,连接是否关闭,我没有得到响应? - hytromo


似乎你可以尝试 pool 至 false 避免创建池bing。这是API详细信息表:http://sequelize.readthedocs.org/en/latest/api/sequelize/

[options.pool = {}]   目的   应该是sequelize使用连接池。   默认为true


0
2018-02-20 16:38



你能详细了解游泳池和游泳池对象吗? - Mark A


池正在排水错误

我在搜索Sequalize错误时发现这个帖子给了我的node.js应用程序: 游泳池正在排水。我不能为我的生活搞清楚。那些跟随我的脚步的人:

问题是我使用命令比我想象的更早关闭数据库 sequelize.closeConnections()。由于某种原因,而不是像'数据库已被关闭'这样的错误,而是给出了模糊的错误'池正在耗尽'。


0
2017-11-03 17:07