mysql - 没有在连接字符串中指定“数据库”的 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 应用程序,可能具有一致数量的同时用户。
但是,我不完全确定什么是最好的选择。我想到了一些问题:我会失去执行计划生成的性能吗?最糟糕的缓存?还有什么我完全想念的吗?
提前致谢
解决方案
您应该使用单个连接。
唯一的缺点是您要么需要对模式(数据库)名称进行硬编码,要么使其可配置,这有点不方便。
然而,多个连接有严重的缺点:
- 没有跨模式的连接
- 交易变得更加复杂
- 实现和使用更复杂
- 连接所有这些都浪费了一些时间(它加起来)
- 服务器将有更多的空闲连接
推荐阅读
- pandas - 如何为 Keras LSTM 正确构建 3D 输入
- python - 如何在不使用 .pop() 或 .remove() 的情况下从项目列表中删除特定项目的第一次出现
- javascript - 当从 useEffects 第一次渲染触发时反应弹出 window.open 空开瓶器
- go - 如何在 Go 和 yaml 包的 API v3 中生成配置文件时对注释进行编码
- java - 如何解决“用户
即使在 InitialContext 中指定了正确的用户,也没有足够的权限访问 EJB' - google-sheets - 从动态单元格引用中提取值
- python - 我怎样才能从字符串中获取特定单词的两个下一个单词?
- macos - 如何修改 MacOS 系统“浮动”屏幕保护程序以一次显示更多图像?
- node.js - 安装节点和 npm 的问题
- r - 从R中的文本构造一个稀疏矩阵