Goroutine在每个请求(sqlx)和代码后打开与数据库的新连接

让我们考虑以下goroutine:

func main(){
    ...
    go dbGoRoutine()
    ...
}

还有功能:

func dbGoRoutine() {
    db,err := sqlx.Connect("postgres",GetPSQLInfo())
    if err != nil {
        panic(err)
    }
    defer db.Close()

    ticker := time.NewTicker(10 * time.Second)
    for _ = range ticker.C {
        _,err := db.Queryx("SELECT * FROM table")
        if err != nil {
            // handle
        }
    }
}

每次在代码上迭代该函数都会打开一个cloudSQL连接

[service... cloudsql-proxy] 2019/11/08 17:05:05 New connection for "location:exemple-db"

由于sqlx.Connect不在for循环中,所以我不知道为什么每次都要打开一个新连接。

xuelei4460 回答:Goroutine在每个请求(sqlx)和代码后打开与数据库的新连接

此问题归因于sql包中的Query函数如何,它返回的Row为:

  

行是查询的结果。它的光标从结果集的第一行开始。

那些游标是使用缓存存储的。

尝试使用Exec()

本文链接:https://www.f2er.com/3136135.html

大家都在问