慢查询分析

慢查询常用的分析工具有两个:mysqldumpslow和pt_query_digest。

mysqldumpslow:汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出。

语法:mysqldumpslow -s r -t 10 slow-mysql.log

-s order (c,t,l,r,at,al,ar)

  • c:总次数;
  • t:总时间;
  • l:锁的时间;
  • r:总数据行;
  • at:总时间的平均数;
  • al:锁的时间的平均数;
  • ar:总数据行的平均数。

-t top:指定取前面几天作为结果输出

mysqldumpslow.pl -s t -t 10 sql-slow.log

![image-20201229121932119](2020-12-29 02-慢查询分析.assets/image-20201229121932119.png)

pt_query_digest:

示例命令:

pt-query-digest –explain h=127.0.0.1, u=root,p=password slow-mysql.log

![image-20201229122042859](2020-12-29 02-慢查询分析.assets/image-20201229122042859.png)

汇总的信息:

  • 总的查询时间;
  • 总的锁定时间;
  • 总的获取数据量;
  • 扫描的数据量;
  • 查询大小。

![image-20201229122150951](2020-12-29 02-慢查询分析.assets/image-20201229122150951.png)

![image-20201229122223222](2020-12-29 02-慢查询分析.assets/image-20201229122223222.png)

  • Response: 总的响应时间;
  • time: 该查询在本次分析中总的时间占比;
  • calls: 执行次数,即本次分析总共有多少条这种类型的查询语句;
  • R/Call: 平均每次执行的响应时间;
  • Item : 查询对象。

执行计划:

![image-20201229122333018](2020-12-29 02-慢查询分析.assets/image-20201229122333018.png)