It been sometime since we benchmarked MySQL/Galera with sysbench, using it mostly for testing. Our recent visit to Percona Performance Conference showed that sysbench is probably most widely used tool for MySQL benchmarking in the community and besides it is the only benchmark I know that correctly measures response times. So I just gave it a shot with our 0.6 release.
I ran OLTP test on 1-4 large EC2 instances. At first I tried 100K row table and it was good except that the deadlock rate was too high to my taste:
nodes users trx/s deadlks 95%lat -------------------------------------- 4 40 840 28.13 0.099 4 60 866 86.34 0.150 4 80 781 194.8 0.240
Note how deadlock rate escalates with the number of concurrent connections. But what is 100K rows by modern standards? Kids play. So I tried 1M rows. And it just shows that Galera cluster is cut for big tables:
nodes users trx/s deadlks 95%lat -------------------------------------- 1 18 385 0 0.092 2 36 761 2.54 0.100 3 45 900 3.42 0.103 4 60 1034 4.54 0.120 official 5.1.33 binary: 1 18 451 0 0.079
One can see that it scales nicely and this is probably the first time we can reliably see group communication overhead coming into play thanks to relatively lightweight transactions and negligible deadlock rate. This is to be expected for a TCP-only EC2 environment. We can see that each cluster node adds about ~10% to transaction latency and that makes internal Galera overhead about 5%. In multicast mode we can expect to see considerably better scalability.
But we can also look at it this way: we can safely claim that MySQL/Galera scales at least up to 10 CPU cores, - and cores scattered over the EC2 network at that. Compare this to Sun's proud announcement that MySQL can now "scale up to 16-way x86 servers". That is 16 cores sitting on the same bus, mind you. ;)