Tuesday, October 31, 2023

Perf regressions in MySQL from 5.6.21 to 8.0.35 using sysbench and a medium server, part 4

This is part 4 of my results from sysbench vs MySQL on a medium server - see part 1part 2 and part 3. This post has results for all MySQL 8.0 releases.

There are significant drops in QPS from 8.0.27 to 8.0.28 and then again from 8.0.28 to 8.0.30. Some of this is thanks to changes in the InnoDB record layer. Hopefully this gets fixed, if not use MyRocks. Percona has bug PS-8822 open for this. I have a blog post from the Insert Benchmark for this.

tl;dr: QPS for MySQL 8.0.35 relative to early 8.0

  • For point queries is ~10% less
  • For range queries is 10% to 15% less, except for long range scans where it is ~20% less
  • For writes is 0% to 20% less

Results

The spreadsheet with all of the numbers is here.

For all charts below:
  • The y-axis doesn't start at 0 to improve readability.
  • Each section has three charts. The first two charts have many data points and aren't as easy to read as the third and fourth charts:
    • the first is from all 8.0 releases on the medium server
    • the second is from all 8.0 releases on the small server
    • the third is from the even-numbered releases on the medium server
  • The charts show relative throughput which is (QPS for $me / QPS for early MySQL 8.0). When that value is less than one then the version is slower than early MySQL 8.0. The early MySQL 8.0 release is either 8.0.13 or 8.0.14.
Point queries, part 1

Summary
  • QPS for MySQL 8.0.35 is ~10% less than 8.0.13
  • QPS has improved from MySQL 8.0.2x to 8.0.3x
Point queries, part 2

Summary
  • QPS for MySQL 8.0.35 is ~10% less than 8.0.13
  • QPS for SELECTs with a large inlist was bad from 8.0.22 to 8.0.30. This was bug 102037, which was found by sysbench and reported by me.
Range queries, part 1

Summary
  • QPS for MySQL 8.0.35 is between 10% and 15% less than 8.0.13
  • QPS for full scans is ~20% less in MySQL 8.0.35 than 8.0.13
  • QPS drops by ~5% from 8.0.27 to 8.0.28 thanks to changes in the InnoDB record layer
Range queries, part 2

Summary
Writes

Summary

No comments:

Post a Comment