MySQL 5.1 与 MySQL 5.5(5.1 速度快两倍)

MySQL 5.1 与 MySQL 5.5(5.1 速度快两倍)

我最近在 CentOS 6.2 上安装了 MySQL 5.1,与我们正在运行的 MySQL 4.1 相比,性能有所提升。因此,我将 MySQL 5.1 升级到 MySQL 5.5,看看是否有更大的提升,但实际上它的运行速度只有 MySQL 5.1 设置的一半。

我运行的测试是在一个包含 2.3M 条带有 blob 注释的记录的表上进行的。

5.1:57.5899 秒

5.5:96.3821 秒

真正有趣的是,如果我提取 100,000 条记录,5.5 会击败 5.1,但之后的任何内容最终都会使 5.5 负载出现尖峰;随着加载速度的加快和减慢,这似乎是额外几秒钟的来源。

知道这是为什么吗?5.1 和 5.5 的 my.cnf 相同

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
bind-address = xxx.xxx.xxx.xxx

#This option makes InnoDB to store each created table into its own .ibd file.
innodb_file_per_table=1
max_allowed_packet=900M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

答案1

在某些情况下,MySQL 5.1 的性能可能优于 MySQL 5.5。

Percona 在 MySQL 的多个版本之间进行了比较

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1(内置 InnoDB)
  • 带有 InnoDB 插件的 MySQL 5.1
  • MySQL 5.5
  • MySQL 5.6

所有测试都是在未配置 MySQL 的情况下进行的(换句话说,没有创建 my.cnf)。结果如何?

  • MySQL 4.1 在 InnoDB 单线程下表现最佳
  • 带有 InnoDB 插件的 MySQL 5.1 在多核上的扩展性优于 5.1 内置 InnoDB、5.5 和 5.6

如果你希望 MySQL 的新版本性能更好,你必须对其进行调整。事实上,我在 DBA StackExchange 中描述了执行 MySQL Bakeoff 的想法

我说的调整是什么意思?

在 MySQL 5.5 中,有新的 InnoDB 选项可利用更多专用的读取线程、写入线程和整体 I/O 容量. 这可以在多核服务器中使用更多的 CPU。未配置在大多数情况下,MySQL 5.5 与旧版本的 MySQL 运行在同一水平上。有时,它的性能可能会更差。

请考虑以下几点:

  • 垃圾进垃圾出
  • 你得到你所付出的
  • 两个词:尽职调查

底线:必须配置 MySQL 5.5 和 Percona Server 以实现所需的性能增强。

记住这一点

什么是兰博基尼?

答案2

您看到的问题可能是由几十种不同的根本原因引起的。您绝对不应该猜测;您当然需要仔细测量和诊断。如果您收集了足够的信息,真正的原因就会很明显,解决方案也会很明显(前提是您也足够了解服务器的内部结构,知道您在看什么)。如果您猜测并尝试执行诸如重新配置服务器之类的操作,我的经验表明,您可能会使问题变得更糟,或导致其他问题,并且您永远不会真正知道任何特定的更改是否有帮助。

我建议使用 Percona Toolkit 中的 pt-stalk 工具在服务器出现速度缓慢的峰值时捕获一组诊断数据,当服务器运行速度更快时也一样。那里应该有足够的信息来了解发生了什么。如果您不习惯根据它进行诊断,任何有能力的 MySQL 支持提供商都应该不会有问题,只要您将 pt-stalk 中的样本打包并发送过来即可。

我并不是想过于重复或坚持,但是请不要在这个问题上使用反复试验的方法。

相关内容