首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pg-promise任务双重连接?

pg-promise任务双重连接?
EN

Stack Overflow用户
提问于 2018-06-27 18:08:22
回答 1查看 187关注 0票数 1

根据Chaining-Queries的说法,pg-promise维基任务是在单个共享连接中进行多个查询的首选方式。

虽然我知道使用Task进行单个查询是没有意义的,但我使用single query进行测试只是为了看看它在日志中的表现。不知何故,我对所获得的结果感到惊讶

无任务:

代码语言:javascript
复制
07:14:02 connect(user@db); useCount: 0
07:14:02 SELECT * FROM t
07:14:02 disconnect(user@db)

使用任务:

代码语言:javascript
复制
07:15:27 connect(user@db); useCount: 0
07:15:27 task/start
07:15:27 connect(user@db); useCount: 0
07:15:27 SELECT * FROM t
07:15:27 disconnect(user@db)
07:15:27 task/end; duration: .009, success: true
07:15:27 disconnect(user@db)

useCount: 0表示新的物理分配的连接

使一行中的几个这样的查询重复该模式。每个任务包装查询显示2个已分配的连接。一个用于main (?)线程和任务本身的第二个。

正确地增加了useCount,这意味着从池中重用了连接。但主要的事情仍然是-每个任务处理从连接池中分配2个连接。

它是预期的行为还是我错过了smth?

EN

回答 1

Stack Overflow用户

发布于 2018-06-28 21:45:34

由于大小的原因,我不能把这个作为对@vitaly-t评论的回应。

为了使子查询重用父会话上下文,请确保调用任务方法中提供的上下文对象t

代码语言:javascript
复制
return this.db.task(t => {
  return t.any('select now()').then(
    () => t.any('select now()').then(
      () => '2 queries are executed'
    )
  )
})

我们就会得到

代码语言:javascript
复制
13:30:26 connect(user@db); useCount: 0
13:30:26 task/start
13:30:26 task: select now()
13:30:26 task: select now()
13:30:26 task/end; duration: .005, success: true
13:30:26 disconnect(user@db)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51060043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档