首页 > 解决方案 > 没有在连接字符串中指定“数据库”的 Mysql 性能

问题描述

在我的 Web 应用程序中,我曾经使用连接字符串连接到 MySql 数据库,例如

"Server=mysql.myserver.com; Port=3306; Database=my_database; Uid=user; Pwd=password;[...]"

现在,在我的应用程序的某些部分,我需要查询多个数据库。

我的第一个任务是创建多个连接,一个用于每个使用的数据库(在我的情况下最多 12 个)。

然后我认为我可以使用单个连接,而无需设置“数据库”参数,例如

"Server=mysql.myserver.com; Port=3306; Uid=user; Pwd=password;[...]"

然后在每个单独的查询中指定目标数据库。例如。

"SELECT * FROM my_database.my_table"

我想单连接解决方​​案可能是一个更好的决定,因为我不会增加活动连接的数量,这在我的情况下特别有用,因为它是一个 Web 应用程序,可能具有一致数量的同时用户。

但是,我不完全确定什么是最好的选择。我想到了一些问题:我会失去执行计划生成的性能吗?最糟糕的缓存?还有什么我完全想念的吗?

提前致谢

标签: mysql

解决方案


您应该使用单个连接。

唯一的缺点是您要么需要对模式(数据库)名称进行硬编码,要么使其可配置,这有点不方便。

然而,多个连接有严重的缺点:

  1. 没有跨模式的连接
  2. 交易变得更加复杂
  3. 实现和使用更复杂
  4. 连接所有这些都浪费了一些时间(它加起来)
  5. 服务器将有更多的空闲连接

推荐阅读