为了账号安全,请及时绑定邮箱和手机立即绑定

我是否应该在 Go Web 应用程序中始终打开 1 个全局数据库连接?或者我应该每次打开和关闭它?

我是否应该在 Go Web 应用程序中始终打开 1 个全局数据库连接?或者我应该每次打开和关闭它?

Go
犯罪嫌疑人X 2022-04-26 15:02:29
Go 中的Web应用程序。假设它是一个博客。假设每天有 1000 个会话。我应该创建一个全局数据库连接并让它一直处于活动状态吗?还是应该在每次需要查询数据库时打开和关闭它?一般规则是什么?
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

您应该为每个应用创建一个全局连接对象。此连接对象配置有连接池。根据给定的配置,每个连接对象都包含一定数量的连接。

如果您为每个请求创建和删除它,它将为每个请求创建和销毁连接池。

只需使用单例模式创建具有所需配置的全局连接对象,它将在内部为您管理连接池。

此外,处理您的应用程序的正常关闭。当您收到应用程序终止操作的信号时,请确保正确关闭全局连接对象。像这样:-

    shutdown := make(chan os.Signal, 1)
    signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL)
    <-shutdown
    connection.Close()


查看完整回答
反对 回复 2022-04-26
?
慕神8447489

TA贡献1780条经验 获得超1个赞

您应该使用 sql 连接池来管理您的连接。Golang database/sql 包提供了一种管理连接池的机制。在 database/sql 包中配置你的 maxIdle 参数,这样你就可以管理你的空闲连接池,以便在新的连接请求到来时重用。当连接池中没有空闲连接时,连接池会自动打开一个新连接。



查看完整回答
反对 回复 2022-04-26
  • 2 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信