【背景】:
目前经常出现慢 sql 导致的线上问题。
比如,开发的小伙伴优化了索引以后,发上线,结果发现执行的 sql 走了其他的索引,反而导致变慢了。
或者测试环境正常的 sql,在线上的大批量数据下,就开始出现异常。
【解决思路】
所以针对这类问题,应该怎么建立 sql 层的准出标准或者类似的保障机制?
我之前想了下,大概有下面几点,大家帮忙看看有没有什么可以补充的
1、索引变更场景,先用 explain 逐条分析 sql,拿到受影响的 sql,再单条执行 sql 对比执行时间
2、已存在的 sql 优化场景,就执行单条 sql,对比执行时间。
3、新增 sql 场景,同步线上涉及表数据到测试环境,执行 sql 获取执行时间
另外可以想办法 copy 数据库的执行语句,针对 sql 进行压测,随着压力增长或者数据量增长,是否存在性能瓶颈。