如何在Go中将单个Postgres DB连接重用于行插入?

如何在Go中将单个Postgres DB连接重用于行插入?,第1张

如何在Go中将单个Postgres DB连接重用于行插入?

首先,

*sql.DB
不是连接而是连接池,它将打开所需数量的连接以及postgres服务器允许的数量。仅当池中没有空闲的可用连接时,它才会打开新连接。


因此,问题在于数据库打开的连接没有被释放,为什么?因为您使用时

QueryRow
调用
Scan
返回
*Row
值。

引擎盖下

*Row
有一个
*Rows
实例,该实例可以访问其自己的连接,并且该连接在
Scan
被调用时会自动释放。如果
Scan
未调用,则连接不会释放,这会导致
DB
池在下一次调用时打开新连接
QueryRow
。因此,由于您不释放任何连接,因此请
DB
继续打开新的连接,直到达到postgres设置所指定的限制,然后下一次调用
QueryRow
挂起,因为它等待连接变为空闲状态。

因此,

Exec
如果您不关心输出,则需要使用,或者需要调用
Scan
return
*Row



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5125477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存