记SQL优化
起因
线上查询接口响应迟缓,达到2s延迟以上,通过生产接口测试,接口响应延时达到5s以上。通过简单接口测试排查得出单表(任务执行表,包含任务执行状态,参数,关联字段)sql查询时间较长。
原因
- 接口sql涉及表数据量过大(1000W-60多字段,包含temple等大字段)
- 打印sql,sql分析explain
- 联合索引字段覆盖较少,导致扫描索引全表后仍进行大量回表查询操作
- 表数据量过多
- order by未走索引
- type:index
- row:6多W
- extra:using where,using filesort,using index
解决
- 重新建立SQL索引
- order by字段改为id,id为雪花算法(分布式id)
- 建立历史数据表
- 建立history表
- 建立bak表
- 建立temp表
- 建立索引
- temp表导入一个月的数据
- temp与正式表相互改名
- 将正式表一个月以前逻辑删除数据导入history,将未删除数据导入bak表
- bak表与temp表相互改名
- 将temp表增量数据导入bak表(基于大于bak主键id的数据或者基于if exist)
记SQL优化
http://lzhnet.top/2023/06/28/记SQL优化/