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

问题描述 投票:0回答:2

Go中的web应用程序。假设这是一个博客。假设每天有1000次课程。

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

mysql database postgresql go web-applications
2个回答
0
投票

您应该使用sql连接池来管理您的连接。 Golang数据库/ sql软件包提供了一种用于管理连接池的机制。在数据库/ sql软件包中配置maxIdle参数,以便您可以管理免费的连接池,以便在出现新的连接请求时重新使用。当连接池中没有空闲连接时,连接池将自动打开一个新连接。


0
投票

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

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

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

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

    shutdown := make(chan os.Signal, 1)
    signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL)
    <-shutdown
    connection.Close()
© www.soinside.com 2019 - 2024. All rights reserved.