![MySQL 5.1 与 MySQL 5.5(5.1 速度快两倍)](https://linux22.com/image/576496/MySQL%205.1%20%E4%B8%8E%20MySQL%205.5%EF%BC%885.1%20%E9%80%9F%E5%BA%A6%E5%BF%AB%E4%B8%A4%E5%80%8D%EF%BC%89.png)
我最近在 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。
- 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 中的样本打包并发送过来即可。
我并不是想过于重复或坚持,但是请不要在这个问题上使用反复试验的方法。