Linux培训
美国上市Linux培训机构

400-111-8989

热门课程

MySQL负载高时,如何找到是由哪些SQL引起的?

  • 时间:2016-12-01 14:16
  • 发布:linux培训
  • 来源:每日一问

问题:MySQL负载高时,如何找到是由哪些SQL引起的?

答:

方法:慢查询日志分析(MySQLdumpslow)

慢查询日志例子,可看到每个慢查询SQL的耗时:

日志显示该查询用了1.958秒,返回254786行记录,一共遍历了254786行记录。及具体的时间戳和SQL语句。

使用MySQLdumpslow进行慢查询日志分析

MySQLdumpslow -s t -t 5 slow_log_20140819.txt

输出查询耗时最多的Top5条SQL语句

-s:排序方法,t表示按时间 (此外,c为按次数,r为按返回记录数等)

-t:去Top多少条,-t 5表示取前5条

执行完分析结果如下:

以第1条为例,表示这类SQL(N可以取很多值,这里MySQLdumpslow会归并起来)在8月19号的慢查询日志内出现了1076100次,总耗时99065秒,总返回440058825行记录,有28个客户端IP用到。

通过慢查询日志分析,就可以找到最耗时的SQL,然后进行具体的SQL分析了

慢查询相关的配置参数

log_slow_queries:是否打开慢查询日志,得先确保=ON后面才有得分析

long_query_time:查询时间大于多少秒的SQL被当做是慢查询,一般设为1S

log_queries_not_using_indexes:是否将没有使用索引的记录写入慢查询日志

slow_query_log_file:慢查询日志存放路径

上一篇:MySQL读写性能是多少,有哪些性能相关的重要参数?
下一篇:如何针对具体的SQL做优化?

如何选择MySQL存储引擎?

MySQL如何做主从数据同步?

如何针对具体的SQL做优化?

MySQL负载高时,如何找到是由哪些SQL引起的?

选择城市和中心
贵州省

广西省

海南省