【问题标题】:Reduced performance in mysql after upgrade to 5.6.27升级到 5.6.27 后 mysql 的性能下降
【发布时间】:2026-01-10 17:10:01
【问题描述】:

我们的应用程序使用 MySql 版本 4.0.24 很长时间了。我们正在尝试将其迁移到版本 5.6.27。 但是,在 5.6.27 上测试性能时,即使是简单的选择和更新,在我们进行负载测试时也会慢 30-40%。 CPU 和 IO 速度比旧服务器好得多。表的存储引擎在两个版本中都是 MyIsam。只有一个与数据库的连接。我们尝试了以下选项:

  1. 将存储引擎更改为 InnoDb - 这会大大降低性能(慢 70%)
  2. 更改 innodb 日志大小和缓冲区大小 - 没有多大帮助
  3. 使用 MyIsam 存储引擎为表增加密钥缓冲区大小。 - 没有区别

我们尝试修改查询缓存、tmp_table_size、heap_table_size 等其他参数。但是,它们都没有任何区别。

如果有其他我们可以尝试的选择,请告诉我?

这是 my.cnf 的副本:

lower-case-table-names=1
myisam-recover=FORCE
key_buffer_size=2000M

【问题讨论】:

  • 您可能会从 ServerFault 获得更好的答案 ...
  • 请给我们看一份 my.cnf 的副本。在 Linux 服务器中,它通常位于 /etc/my.cnf
  • 这就是 my.cnf 吗?通常具有相同 my.cnf 的同一台服务器和不同版本的 mysql 的行为方式相同
  • “简单的选择和更新”——你是单独计时吗?还是作为一批查询?
  • InnoDB 可能只是因为没有充分调整变量而变慢。将 innodb_buffer_pool_size 设置为可用内存的 70% 并将 innodb_flush_log_at_trx_comment 设置为 2 再试一次。

标签: mysql performance


【解决方案1】:

您可以查看两台服务器是否具有相同数量的 RAM,因为旧服务器可能具有更多 RAM,因此可以在内存中缓存更多内容。

您还可以查看您是如何连接到 MySQL 服务器的 - 它是通过网络连接的吗?网络速度/质量是否不同?一台服务器在本地访问,另一台通过网络访问。

您尝试调整一些好的参数,但如果缺少某些参数,您可以在两台服务器上运行mysql -e 'show variables',然后使用 Winmerge 之类的工具比较两者的值,看看有什么不同你可能没有想到。

【讨论】:

  • 5.6 有太多 VARIABLES,Winmerge 将难以阅读。
  • 鉴于 OP 已经尝试过,我觉得此时可能值得。
【解决方案2】:

在尝试了多个选项后,以下是对我们有用的配置。可能还有其他解决方案,但这对我们有用。

选项 1:

  1. 关闭了性能架构
  2. 添加了几个 jdbc 连接参数:useConfigs=maxPerformance&maintainTimeStats=false

选项 2:

迁移到 MariaDB。从性能的角度来看,这非常有效。与我们系统的 mysql 相比,它的性能提高了 5%。但是,由于非技术原因,我们无法采用此选项。

感谢您的意见。

【讨论】: