As part of work on “High Performance MySQL, 3rd edition”, Baron asked me to compare different MySQL version in some simple benchmark, but on decent hardware.
So why not.
I took our Cisco UCS C250 and ran simple sysbench oltp read-write all data fits into memory workload.
Versions in question:
- MySQL 4.1
- MySQL 5.0
- MySQL 5.1 (with built-in InnoDB)
- MySQL 5.1 with InnoDB-plugin
- MySQL 5.5
- MySQL 5.6
All versions are vanilla MySQL, not Percona Server.
There is nothing unexpected, staring with InnoDB-plugin, MySQL scale much better on multi-cores, there is gain up to 1.7x in throughput.
What is interesting there, let’s take look on single thread results:
You can see that each new version is slower in single thread than previous.
It is actually easily explainable: each new version adds more features, which give more overhead.
Profiling MySQL 5.0 vs MySQL 4.1 couple years ago, I have seen biggest performance hit comes
from query parser. In MySQL 5.0 grammar became much bigger because of storage procedures and triggers.
And raw results, in tps (more is better)
| threads | MySQL 4.1 | MySQL 5.0 | MySQL 5.1 | MySQL 5.1+InnoDB-plugin | MySQL 5.5 | MySQL 5.6.2 |
|---|---|---|---|---|---|---|
| 1 | 685.52 | 639.73 | 596.01 | 593.51 | 531.07 | 525.80 |
| 2 | 1306.50 | 1221.40 | 1139.60 | 1139.20 | 1076.59 | 1018.64 |
| 4 | 2274.83 | 2167.92 | 2031.80 | 2042.51 | 1937.64 | 1830.80 |
| 8 | 3879.11 | 3746.29 | 3606.02 | 3681.36 | 3522.65 | 3320.10 |
| 16 | 4373.82 | 4527.04 | 4392.81 | 6130.70 | 5881.40 | 5572.50 |
| 32 | 4591.42 | 4864.46 | 4698.39 | 7762.32 | 7548.93 | 7138.54 |
| 64 | 4688.41 | 5078.02 | 4910.21 | 7535.65 | 7269.47 | 6994.04 |
Scripts and results are also on our Launchpad Benchmark project


No comments:
Post a Comment