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安装的一半。

我运行的testing是在一张桌面上,有一百二十万条logging的blob笔记。

5.1:57.5899秒

5.5:96.3821秒

真正有意思的是,如果我拉下10万条logging,那么5.5会跳过5.1,但是最终会使5.5负载像尖峰一样; 加速和加速,这是多余的秒钟似乎来自哪里。

任何想法,为什么这是? 同样的my.cnf 5.1和5.5

[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 

在某些情况下,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

所有的testing都是在未configurationMySQL的情况下进行的(换句话说,没有my.cnf)。 结果?

  • InnoDB单线程MySQL 4.1性能最佳
  • 带有InnoDB插件的MySQL 5.1比内置的InnoDB,5.5和5.6更好地扩展多个内核

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

我是什么意思调?

在MySQL 5.5中, 有新的InnoDB选项用于利用更多的专用读取线程,写入线程和总体I / O容量 。 这可以在多核服务器上使用更多的CPU。 如果没有configuration ,MySQL 5.5将在相同级别的游戏场上运行,在大多数情况下,它们将作为旧版本的MySQL。 有时候,情况会变得更糟。

从以下方面考虑:

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

底线:MySQL 5.5和Percona服务器必须configuration所需的性能增强。

记住这一点

什么是兰博基尼?

  • 如果你没有configuration数据库服务器或者configuration不好,你会得到这个兰博基尼

  • 如果你正确地configuration数据库服务器,你会得到这个兰博基尼(这可能是你想要的)

你看到的问题可能是由几十个不同的根本原因造成的。 你绝对不应该猜测。 你当然需要仔细测量和诊断。 如果你收集了足够多的信息,真实的原因将是显而易见的,解决scheme将是显而易见的(假如你也了解服务器的内部知道你知道你在看什么)。 如果您猜测并尝试重新configuration服务器等操作,我的经验表明,您可能会使问题变得更糟,或导致其他问题,并且您永远不会知道是否有任何特定更改有帮助。

我build议使用Percona工具包中的pt-stalk工具来捕获服务器的一组诊断数据,当其中一个缓慢的尖峰发生时,以及当它运行得更快的时候。 在那里几乎肯定有足够的信息来了解正在发生的事情。 如果你不习惯从中做出诊断,任何有能力的MySQL支持提供者应该没有问题,如果你从pt-stalk中压缩样本并发送它们。

我的意思不是太重复或坚持,但是请不要在这个上使用反复试验。