为什么MySQL 5.5慢于5.1(Linux,使用MySQLSLAP)
题
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?
顺便说一句:我被审判了 mysql5.5/bin/mysqlslap
和 mysql5.1/bin/mysqlslap
,结果相同
解决方案
您可能会发现这令人惊讶,但是在某些情况下,MySQL 5.1可能胜过MySQL 5.5。
- mysql 4.1
- MySQL 5.0
- MySQL 5.1(带有内置InnoDB)
- mysql 5.1与innodb-plugin
- mysql 5.5
- mysql 5.6
所有测试均使用MySQL未配置进行(换句话说,没有进行my.cnf)。结果?
- MySQL 4.1执行最好的单线程
- MySQL 5.1在多个内核上具有InnoDB插件量表比构建的5.1 InnoDB更好,5.5和5.6
如果您希望MySQL的较新版本的性能更好,则必须为此进行调整。实际上, 我在DBA Stackexchange中描述了执行MySQL Bakeoff的想法.
我的意思是什么?
在MySQL 5.5中,有一些新的InnoDB选项,用于利用更多专用的读取线程,编写线程和总体I/O容量。这可以参与多功能服务器中的更多CPU。剩下的未配置,MySQL 5.5将在同一级别的竞争环境中运行,在大多数情况下,就像MySQL的较旧版本一样。有时,它的性能可能更糟。
不隶属于 dba.stackexchange