mysql - 我应该在 Go Web 应用程序中始终打开 1 个全局数据库连接吗?或者我应该每次都打开并关闭它?

标签 mysql database postgresql go web-applications

Go 中的网络应用程序。假设这是一个博客。假设每天有 1000 个 session 。

我应该创建一个全局数据库连接并使其始终处于事件状态吗?或者我应该在每次需要查询数据库时打开和关闭它?一般规则是什么?

最佳答案

您应该为每个应用程序创建一个全局连接对象。该连接对象配置有连接池。每个连接对象根据给定的配置保存一定数量的连接。

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

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

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

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

关于mysql - 我应该在 Go Web 应用程序中始终打开 1 个全局数据库连接吗?或者我应该每次都打开并关闭它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59463335/

相关文章:

Mysql:从多个表中获取数据

node.js - 服务器发送成功,即使没有找到任何东西

php - 在 MySQL 中使用 levenshtein 搜索一个结果

ruby-on-rails - 使用 STI 查询数据库的效率

database - 连接到远程服务器上的 clickhouse 失败,地址奇怪

mysql - 对现有用户使用 MySql ASP.NET 成员资格提供程序

postgresql - 使用 Postgres 角色系统进行 Web 应用程序身份验证和角色管理是否合法?

sql - 从计数子查询的结果更新列

php - 在一个查询 SQL 中选择并插入

MySQL连接表与2个引用表