繁体   English   中英

Postgres:何时在查询中使用.end() vs.release()(这在 util.promisify 中是否发生了变化)? 缺少这些功能是否会增加 memory 的使用量?

[英]Postgres: When to use .end() vs .release() in queries (and does this change in util.promisify)? Does lack of these functions increase memory usage?

所以在我的应用程序中,我在部署到 Heroku 的 Node.js 环境中使用 Postgres DB。 我意识到在我的所有查询中,我没有 db.release() 或 db.end(),我认为我需要在我的函数末尾有这些。 我尝试查看堆栈和其他文章以确定它们之间的区别,在函数中使用它们的位置,以及不使用它们是否会导致我的 Heroku memory 容量达到,但我无法找到详细说明问题的资源。

第一个问题——什么时候使用.end(),什么时候使用.release()? 有什么区别,我应该使用不同的 function 从数据库“断开”连接吗?

第二个问题——在如下的基本查询中,我应该把 .end() 或 .release() 放在哪里? (也就是返回之前或之后)

db.query(sql, (err, res) => {
  if (err) {
    return console.log(err.message);
  } else {
    return res;
  }    
})

第三个问题——如果我承诺 db.query,I.end() 或 .release() 怎么做?

const util = require('util')
const queryP = util.promisify(db.query)
await queryP.call(db, sqlStatement);

最后一个问题——缺少 using.end() 或 .release() 是否会导致我的 Heroku memory 达到,如仪表板中 ZCD69B4957F06CD818D7BF3D61980E29 度量标准的线性增加部分所示?

1

请注意,我需要('pg')并在 Node.js 文件的早期运行 db.connect()。 谢谢你为我做的一切!

有时最好只使用 pool.query() 来查询数据库,而不是使用 client.query(),那时您不需要处理释放客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM