文章预览
阿里妹导读 用户将 RDS MySQL 实例从 5.6 升级到 8.0 后,发现相同 SQL 的执行时间增长了十几倍。本文就该问题逐步展开排查,并最终定位根因。 一、背景 用户将 MySQL 实例从 5.6 升级到 8.0 后,发现相同 SQL 的执行时间增长了十几倍。 用户的查询在简化后可以认为是一个对非索引字段做 order by 的全表扫描,理论上性能差异不应该如此巨大。 带着这个疑问,本文将逐步展开问题排查的过程,定位性能退化的根因。 二、问题分析 2.1 初分析 我们首先基于问题实例进行分析,直接对比了问题 SQL 在不同版本之间的执行计划差异。 从 EXPALIN 的结果来看,两者相同,均为全表扫描 + filesort; 线上实例的 EXPLAIN 对比 从 Optimizer Trace 结果来看,除了版本间 trace 信息输出格式的差异外,执行情况基本相同; 线上实例的 Optimizer Trace 对比 从 profiling 信息看
………………………………