gpt4 book ai didi

go - 在 Go 中连接到多个数据库的好习惯是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:41:33 26 4
gpt4 key购买 nike

我想了解以下做法是好是坏。

如果事实证明这是好的/正常做法,那么我可以更轻松地在我的项目中实现多个数据库连接器。

情况:我创建了一个 API 服务器,每次调用 API 时,这段代码都会运行:

ctx := context.Background()

client, err := datastore.NewClient(ctx, "foobar")
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}

该服务每秒收到很多请求,我不确定是应该在启动时只运行一次 newClient() 函数,还是在每次调用 API 时运行。

附言:
如果另一个连接器是 MySQL,也会发生同样的情况。每次 API 收到请求时,都会运行以下代码:

db, err = sql.Open("mysql", "yourusername:yourpassword@/yourdatabase")
if err != nil {
panic(err.Error())
}

最佳答案

我不确定 datastore.Client,但是 database.DB 管理一个连接池,并发使用是安全的,你真的不应该调用db.Open 每次你想执行一个查询。事实上,最后一段来自Open's文档清楚地说明了这一点。

The returned DB is safe for concurrent use by multiple goroutines and maintains its own pool of idle connections. Thus, the Open function should be called just once. It is rarely necessary to close a DB.

更新:

如果您查看 Basic Operations 示例代码中的注释datastore 文档中的部分,您会找到推荐的用法。

Create a datastore client. In a typical application, you would create a single client which is reused for every datastore operation.

关于go - 在 Go 中连接到多个数据库的好习惯是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747267/

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