Evaluating Performance Improvements in MariaDB 10.5.5
Recently, I published a series of posts on MySQL and MariaDB, where MariaDB 10.5.4 does not necessarily perform well in some scenarios:
- How MySQL and MariaDB Perform on NVMe Storage
- Checkpointing in MySQL and MariaDB
- How MySQL 8.0.21 and MariaDB 10.5.4 Perform in IO-Bound Scenarios on SATA SSD and NVMe Storage
In comments left on How MySQL and MariaDB Perform on NVMe Storage, I was told that MariaDB 10.5.4 is not the best version, as there are already known performance bugs that will be fixed in MariaDB 10.5.5, and it would be better to test MariaDB 10.5.5. And now, MariaDB 10.5.5 comes with fixes:
- Fixes to performance regressions introduced in MariaDB 10.5.4 (MDEV-23017, MDEV-23369, MDEV-23410)
- Performance improvements (MDEV-22110, MDEV-22930, MDEV-23379, MDEV-22778)
I made a promise that I will test the new version, so this is me fulfilling my promise.
Instead of posting multiple posts, let’s review all scenarios at once. Just to refresh the material, I’ve tested sysbench-tpcc 1000W, which is about 100GB in size in the following setups:
- Data is located on SATA SSD, innodb_buffer_pool_size=140GB (CPU-bound scenario)
- Data is located on NVMe, innodb_buffer_pool_size=140GB (CPU-bound scenario)
- Data is located on SATA SSD, innodb_buffer_pool_size=25GB (IO-bound scenario)
- Data is located on NVMe, innodb_buffer_pool_size=25GB (IO-bound scenario)
Data is located on SATA SSD, innodb_buffer_pool_size=140GB (CPU-bound scenario)
(The original results are here – Checkpointing in MySQL and MariaDB)
For this re-test round, I compare only MariaDB 10.5.4 vs MariaDB 10.5.5:
After the difference in the warm-up behavior, the result is about the same, and we can confirm this with boxplots for the last 2500 sec:
Data is located on SATA SSD, innodb_buffer_pool_size=25GB (IO-bound scenario)
This one is interesting, and actually this is where we can see improvements in MariaDB 10.5.5.
To see individual variations in details, let’s separate charts:
And then again compare the throughput for the last 2500 sec:
What’s interesting is not only has MariaDB 10.5.5 improved the results, but it also shows a better average throughput than MySQL 8.0.21, though with a higher variation.
Data is located on NVMe, innodb_buffer_pool_size=140GB (CPU-bound scenario)
There we still see a weird initial drop followed by recovery, and the throughput is similar to MariaDB 10.5.4, but something a little worse.
Data is located on NVMe, innodb_buffer_pool_size=25GB (IO-bound scenario)
This case is an absolute disaster for MariaDB 10.5.5; there is bug https://jira.mariadb.org/browse/MDEV-23399. Most of the time MariaDB 10.5.5 shows the throughput under 100 tps (while MySQL averages above 5000 tps).
I personally think this is a catastrophic bug and MariaDB 10.5.5 with this performance should never have been released to the public, but instead, stay in the internal testing stage.
by Vadim Tkachenko via Percona Database Performance Blog