Tuesday, October 31, 2023

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

This is part 5 of my results from sysbench vs MySQL on a medium server - see part 1part 2part 3 and part 4. This post documents how performance changes from MySQL 8.0.27 to 8.0.32.

QPS decreased by ~10% for many of the sysbench tests from MySQL 8.0.27 to 8.0.31. The problem is new CPU overheads from code changes that I am still documenting. While perf regressions over time in MySQL are to be expected, regressions of this size are not and hopefully can be fixed.

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:

  • Bug 102037 was fixed in MySQL 8.0.31 which improves QPS for many point query tests
  • Other changes, including changes to the InnoDB record layer, increase CPU overhead and reduce performance for many of the tests not helped by the fix for bug 102037.
    • For point queries MySQL 8.0.32 gets ~8% less QPS than 8.0.27 in the cases not helped by the bug 102037 fix 
    • For range queries MySQL 8.0.32 gets ~9% less QPS than 8.0.27
    • For writes MySQL 8.0.32 gets ~10% less QPS than 8.0.27

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 two charts - the first for tests using the medium server, the second for tests using the small server.
  • The charts show relative throughput which is (QPS for $me / QPS for MySQL 8.0.27). When that value is less than one then the version is slower than MySQL 8.0.27.
Point queries, part 1

Summary
  • Fixing bug 102037 helps many of the point query tests
  • Tests not helped by the fix for bug 102037 get ~8% less QPS in 8.0.32 vs 8.0.27
Point queries, part 2

Summary
  • Summary
    • Fixing bug 102037 helps many of the point query tests
    • Tests not helped by the fix for bug 102037 get ~8% less QPS in 8.0.32 vs 8.0.27
Range queries, part 1

Summary
  • MySQL 8.0.32 gets ~10% less QPS than 8.0.27
Range queries, part 2

Summary
  • MySQL 8.0.32 gets ~9% less QPS than 8.0.27
Writes

Summary
  • MySQL 8.0.32 gets ~10% less QPS than 8.0.27

No comments:

Post a Comment

Fixing some of the InnoDB scan perf regressions in a MySQL fork

I recently learned of Advanced MySQL , a MySQL fork, and ran my sysbench benchmarks for it. It fixed some, but not all, of the regressions f...