首页 > 后端开发 > Golang > 在 Go 中插入行时如何避免 PostgreSQL 连接耗尽?

在 Go 中插入行时如何避免 PostgreSQL 连接耗尽?

Patricia Arquette
发布: 2024-12-17 09:03:26
原创
863 人浏览过

How Can I Avoid PostgreSQL Connection Exhaustion When Inserting Rows in Go?

在 Go 中重用 PostgreSQL 数据库连接进行行插入

问题

在 Go 程序中,尝试使用从 RabbitMQ 收到的每条消息的单个数据库连接都会因超出最大数量而导致错误

解决方案

问题在于Go中执行SQL查询的方式。 sql.DB 是一个连接池而不是单个连接。它根据需要打开连接并重用空闲连接,但在这种情况下,连接没有正确释放。

使用 db.QueryRow 而不对返回的 *Row 值调用 Scan 时会出现问题。 *Row 保存对连接的引用,当调用 Scan 时会自动释放该连接。但是,在提供的代码中,未调用 Scan,导致连接在连接池中堆积。

要解决此问题,解决方案是如果不需要输出,则使用 db.Exec,或者对 db.QueryRow.

返回的 *Row 值调用 Scan

以上是在 Go 中插入行时如何避免 PostgreSQL 连接耗尽?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板