gpt4 book ai didi

postgresql - PostgreSQL使Go建立的连接保持开放

转载 作者:行者123 更新时间:2023-12-01 22:39:53 28 4
gpt4 key购买 nike

使用Go cron软件包,我每秒运行以下代码:

func dbPGConnectionCount(db *sql.DB) (int64, error) {
var connectionCount int64
rows, err := db.Query(`SELECT count(1) from pg_stat_activity;`)
if err != nil {
return 0, err
}
defer rows.Close()
for rows.Next() {
err = rows.Scan(&connectionCount)
if err != nil {
return 0, err
}
}
return connectionCount, err
}

其中 db是用于连接PostgreSQL的连接池。

多亏了 defer语句,我希望PostgreSQL不会保持任何连接打开。但是,在启动程序后不久,当我使用 select * from pg_stat_activity进行检查时,我发现每秒都会添加新的空闲查询。

我究竟做错了什么?

最佳答案

你没有做错任何事。这就是连接池的工作方式。您的defer将连接释放回池中。它是有意保持打开状态的,因此下次需要数据库时,您的应用程序不必等待新的连接握手,它可以重新使用现有的连接。这几乎就是连接池的定义。

关于postgresql - PostgreSQL使Go建立的连接保持开放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58562306/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com