\#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语句,以优化编译器的分支预测。
➡️