猿问

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

Go 中的Web应用程序。假设它是一个博客。假设每天有 1000 个会话。

我应该创建一个全局数据库连接并让它一直处于活动状态吗?还是应该在每次需要查询数据库时打开和关闭它?一般规则是什么?


犯罪嫌疑人X
浏览 177回答 2
2回答

红颜莎娜

您应该为每个应用创建一个全局连接对象。此连接对象配置有连接池。根据给定的配置,每个连接对象都包含一定数量的连接。如果您为每个请求创建和删除它,它将为每个请求创建和销毁连接池。只需使用单例模式创建具有所需配置的全局连接对象,它将在内部为您管理连接池。此外,处理您的应用程序的正常关闭。当您收到应用程序终止操作的信号时,请确保正确关闭全局连接对象。像这样:-&nbsp;&nbsp;&nbsp;&nbsp;shutdown&nbsp;:=&nbsp;make(chan&nbsp;os.Signal,&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;signal.Notify(shutdown,&nbsp;syscall.SIGINT,&nbsp;syscall.SIGTERM,&nbsp;syscall.SIGKILL) &nbsp;&nbsp;&nbsp;&nbsp;<-shutdown &nbsp;&nbsp;&nbsp;&nbsp;connection.Close()

慕神8447489

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

相关分类

Go
我要回答