记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优化/
Author
kuaile000
Posted on
June 28, 2023
Licensed under