如何在 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'
});

原文由 Mark A 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

当您的应用程序需要从数据库中检索数据时,它会创建一个数据库连接。创建此连接涉及应用程序和数据库的一些时间和机器资源开销。许多数据库库和 ORM 会在可能的情况下尝试重用连接,这样它们就不会产生一遍又一遍地建立数据库连接的开销。 pool 是这些保存的、可重用的连接的集合,在您的情况下,Sequelize 从中提取这些连接。你的配置

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

反映您的游泳池应该:

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

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

原文由 P Ackerman 发布,翻译遵循 CC BY-SA 4.0 许可协议

池正在排水错误

我在搜索 Sequalize 错误时发现此线程正在为我的 node.js 应用程序提供: pool is draining 。我一辈子都弄不明白。所以对于那些追随我脚步的人:

问题是我关闭数据库的时间比我想象的要早,命令是 sequelize.closeConnections() 。出于某种原因,它没有出现“数据库已关闭”之类的错误,而是给出了模糊的错误“池正在耗尽”。

原文由 Chris Troutner 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题