As promised, this is the first part of details about MySQL 5.6 vs 5.5 benchmark results I've published earlier last week. The following graphs are representing scalability results obtained for both MySQL versions on the published tests (and I have yet more test results to present to you, but these test's are still running)..
Few remarks based on comments and discussions I've got since then:
- I'm using a "true" 32cores server (true 32 cores, each one yet has 2 threads (HT), so 64 threads in total)
- I'm not using "CPU threads" terminology as I'm finding it confusing (for ex. when you're reading "16 CPU threads" you may not really know if there were 16cores with HT-disabled, or 8cores with HT-enabled)..
- during all the tests I've disabled HT (as it took days and days more to test every case I'm interesting in)..
- also, in many tests on 5.5 until now I've observed a worse performance when HT is enabled.. (well, depends on a workload, and yes, there was an improvement made too over a time)
- MySQL 5.6 is running more often better when HT is enabled (but again, depends on a workload)
- so, to compare apples-to-apples and reduce my test cycles, HT was always disabled, except on the last one - "64cores" which you should read as "32cores with HT enabled" -- I've made an exception for this one just to see what is waiting us ahead after 32cores ;-)
- so for all tests when you're reading "N cores" it means exactly N physical CPU cores (HT disabled), except for 64cores = 32cores HT-enabled (which was just too long for graph legends)..
- also, during all the tests both MySQL servers are running with "jemalloc" library instead of default malloc, as it's the best malloc on Linux today and I'm using it during all my tests since probably more than 2 years now (but don't think to precise, as it's a part of my "default" config, so did not suppose that somebody is not using it when running MySQL Server on Linux.. - while I always have a dedicated slide in my MySQL Performance presentations ;-))
- for the same reasons the MySQL config parameters I've added in the previous article are not Sysbench specific or oriented -- it's just a "start kit" I'm using by default, and then adapt according a workload.. - and for Sysbench load such a config is more than ok ;-)
- if anything else I forgot to mention - please, just ask ;-)
And now the results.
Don't think you'll need any comments.. Except maybe just this one:
- MySQL 5.5 was already scaling less or more well on small servers, up to 16cores..
- except that if you need more power and have more cores available on your host, there was no way to get better just by adding cores.. (but at least there was no dramatic regression anymore as we observed just few years before ;-))
- MySLQ 5.6 is going way further now, and able to show you a pretty visible performance improvement when more cores are available on your server!
- We know, we're not perfect yet.. - but a huge gap between MySQL 5.6 and 5.5 is already here! ;-)
- And it's not only about better performance with more CPU/cores, there are also a lot of new features + improved design in many many places (and if you've missed something, there are long and short lists available, as well a very good DBA & developer guide with many details)
- So, don't wait more, and start to use your servers with MySQL 5.6 on their full power right now!
Sysbench OLTP_RO :
Sysbench OLTP_RO-trx :
Sysbench OLTP_RO Point-Selects :
Sysbench OLTP_RO Simple-Ranges :
Sysbench OLTP_RW :
INSTEAD OF SUMMARY :
- open your TODO right now..
- and just write on top: Start upgrade to MySQL 5.6 ASAP !!! ;-)
to be continued..