\#issue 111538 MySQL 8.0 instant add/drop column 性能回退问题

💡 原文中文,约5600字,阅读约需14分钟。
📝

内容提要

MySQL 8.0.29新增了即时添加或删除表中列的功能,但在读取密集的场景中导致了5%至10%的性能回归。回归是由于处理数据解析函数中的row_version信息的额外开销所致。为了解决这个问题,文章建议将某些函数内联,简化get_rec_insert_state函数的逻辑,并将switch语句改为if/else语句以优化编译器的分支预测。这些修改在oltp_read_only场景中实现了3%至5%的性能提升。

🎯

关键要点

  • MySQL 8.0.29新增即时添加或删除列的功能,但在读取密集场景中导致5%至10%的性能回退。
  • 性能回退的原因是处理数据解析函数中的row_version信息的额外开销。
  • 建议将某些函数内联,简化get_rec_insert_state函数的逻辑,以优化性能。
  • 在oltp_read_only场景中,经过修改后实现了3%至5%的性能提升。
  • Instant DDL的核心观点是仅更新数据字典信息,而不修改数据行。
  • 8.0.29版本中增加了row_version信息,导致数据解析函数的开销增加。
  • 通过将一些non-inline函数改回inline函数,性能可提升3%至5%。
  • 简化get_rec_insert_state函数的逻辑,减少判断条件以提高效率。
  • 将switch语句改为if/else语句,以优化编译器的分支预测。
➡️

继续阅读