我们的应用程序长期以来一直使用 MySql 版本 4.0.24。我们正在尝试将其迁移到版本 5.6.27。但是,在测试 5.6.27 上的性能时,当我们进行负载测试时,即使是简单的选择和更新也会慢 30-40%。CPU 和 IO 速度比旧服务器好得多。两个版本的表的存储引擎都是 MyIsam。只有一个与数据库的连接。我们尝试了以下选项:
- 将存储引擎更改为 InnoDb - 这会大大降低性能(速度降低 70%)
- 更改 innodb 日志大小和缓冲区大小 - 没有太大帮助
- 使用 MyIsam 存储引擎增加表的键缓冲区大小。- 没什么区别
我们尝试修改其他参数,如查询缓存、tmp_table_size、heap_table_size。但是,它们都没有任何作用。
您能告诉我我们还可以尝试其他选择吗?
答案1
您可以查看两台服务器是否具有相同数量的 RAM,因为旧服务器可能具有更多的 RAM,因此可以在内存中缓存更多的东西。
您还可以查看如何连接到 MySQL 服务器 - 是通过网络吗?网络速度/质量是否不同?一台服务器是否在本地访问,另一台服务器是否通过网络访问。
您尝试调整一些好的参数,但万一缺少一些参数,您可以mysql -e 'show variables'
在两台服务器上运行,然后使用 Winmerge 之类的工具来比较两者的值,看看可能存在哪些您可能没有想到的不同。
答案2
尝试了多种方案后,以下配置对我们有用。可能还有其他解决方案,但这个对我们来说有效。
选项1:
- 关闭了性能架构
- 添加了几个 jdbc 连接参数:useConfigs=maxPerformance&maintainTimeStats=false
选项 2:
迁移到 MariaDB。从性能角度来看,这确实很有效。与 mysql 相比,它为我们的系统提供了 5% 更好的性能。但是,由于非技术原因,我们无法采用此选项。
感谢您的意见。