I took a quick look at MariaDB 10.0 single-treaded performance
(simple read-only sysbench). One thing immediately leaps to the
eye, and I thought it worthy of mention. It contains an important
lesson about the use of synchronisation primitives and in
particular "atomic operations" in MariaDB (and MySQL).
I am using the Linux perf
tool on this sysbench command:
sysbench --num-threads=1 --test=oltp --oltp-test-mode=simple --oltp-read-only --oltp-skip-trx
Look at the top offender in the output from perf
report
:
1,54% mysqld mysqld [.] set_thread_state_v1
The only thing this does is set a string for SHOW PROCESSLIST
(and the like) about what the thread is doing. And we are
spending a whopping 1.5% of the total time doing this.
And why? That becomes clear when looking at the disassembly …
[Read more]