【问题标题】:How can I choose between Client or Pool for node-postgres如何在 node-postgres 的客户端或池之间进行选择
【发布时间】:2018-07-22 22:04:43
【问题描述】:

https://node-postgres.com/features/connecting ,似乎我们可以在 PoolClient 之间进行选择来执行查询

pool.query('SELECT NOW()', (err, res) => {
  console.log(err, res)
  pool.end()
})

client.query('SELECT NOW()', (err, res) => {
  console.log(err, res)
  client.end()
})

它们的功能看起来非常相似。但是,文档并没有解释PoolClient 之间的太多区别。

请问,在选择PoolClient 之前,我应该考虑什么?

【问题讨论】:

  • 已签出environmental variables for PostgreSQL。我有点知道有什么区别。
  • Client 是一种静态连接。 Pool 管理 Client 对象的动态列表/池,具有自动重新连接功能;)通常,您只需创建一个 Pool 对象并使用它;)
  • 推荐池

标签: node.js node-postgres


【解决方案1】:

请问,在选择池或客户端之前,我应该考虑什么?

如果您有或期望有多个并发请求,请使用池。这就是它的真正用途:提供一个可重用的开放 client 实例池(每当 client 可以重用时减少延迟)。

在这种情况下,您绝对不想在查询完成时调用pool.end(),您希望将其保留到您的应用程序终止时,因为pool.end() 处理了所有打开的client实例。 (请记住,关键是要保持固定数量的client 可用实例。)

【讨论】:

  • 我的是一个始终运行的单实例后台任务。那么我是否应该使用Client,并在我完成查询时结束它?
  • @CheokYanCheng 直接使用client 应该可以正常工作。
  • @user268396 这清除了文档中一些模糊的线条。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 2021-08-03
  • 2014-08-30
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
相关资源
最近更新 更多