为什么mysql 5.5慢于5.1(linux,使用mysqlslap)


10

my.cnf(5.5和5.1相同):

back_log=200
max_connections=512
max_connect_errors=999999
key_buffer=512M
max_allowed_packet=8M
table_cache=512
sort_buffer=8M
read_buffer_size=8M
thread_cache=8
thread_concurrency=4
myisam_sort_buffer_size=128M
interactive_timeout=28800
wait_timeout=7200

MySQL 5.5:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 15.156 seconds
        Minimum number of seconds to run all queries: 15.031 seconds
        Maximum number of seconds to run all queries: 15.296 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500

mysql5.1:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.1.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 13.252 seconds
        Minimum number of seconds to run all queries: 13.019 seconds
        Maximum number of seconds to run all queries: 13.480 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500

为什么mysql 5.5比5.1慢?

BTW:我试过mysql5.5/bin/mysqlslapmysql5.1/bin/mysqlslap,结果是一样的


5
基准运行1秒?这是在开玩笑吗?

@pfo,我更改为:--concurrency=10 --number-of-queries 5000

1
您的my.cnf配置MyISAM,但基准测试使用InnoDB。抱歉,这仍然是个玩笑(如果您不更改InnoDB的默认值,那么也是这样)
Laurynas Biveinis 2011年

3
我的my.cnf文件中没有看到InnoDB的任何调整。针对默认配置的基准测试是无用的,而持续时间短的基准测试也是无用的。
亚伦·布朗

Answers:


9

您可能会发现这令人惊讶,但是在某些情况下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插件的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相同。有时,它的性能可能会更差。


1
您的答案是正确的,但我认为这不适用于OP。当他配置InnoDB时,我们将看到。
Laurynas Biveinis 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.