(使用的数据库:MYSQL 5.7 版本,InnoDB 引擎) 自从服务加了Skywalking后,将大部分慢接口暴露出来。于是就有了这次慢接口的优化。大概的优化过程。
如果说你的服务没有接如这种情况监控服务,那我们可以使用阿里巴巴开源的Arthas来进行链路追踪(使用trace进行查看每一步方法的调用耗时)arthas官方文档
使用的索引 | 预扫描行数 | 是否回表 | 是否排序 | 执行时间 | 结论 |
---|
1. - 这种情况我们呢可以查看他的索引基数通过 show index from table_name.大概看一下cardinality基数字段,大概评估一下。然后使用命令 analyze table tb_name重新计算一下。
- 因为对与mysql选择索引其中索引基数是重要条件之一
- 索引基数是通过抽样计算计算出来的,所以不一定是准确的,所以通过analyze table进行重新采样计算后就可以了。
2. - 如果说通过索引基数还没有OK的话,那就有可能是在这条语句中与可能有排序或者有创建临时表的情况,使用这个你认为扫描行数少的有可能产生。所以你可以考虑优化索引了,创建一个符合索引且不需要回表的
(id,create_time)
这是最重要的一步
在实际工作中有很多同学都认为加索引会影响更新效率。但是这个影响想说对于查询很慢的影响来说很是小的一个影响。