Mysqldumpslow使用说明 分析慢日志
一、慢查询日志介绍
MySQL中,SQL的执行效率直接影响了MySQL的性能。为了及时发现并处理有性能异常的SQL,MySQL专门设立了慢查询日志(slow query log)。SQL执行时间大于long_query_time设定的时候,MySQL就会将这条SQL记录到慢查询日志中。
MySQL慢查询日志既可以保存成文件,又可以保存在MySQL的表中。由于保存在表中,会给数据库带来额外的压力,一般都保存在文件中,其保存路径由slow_query_log_file变量决定。
慢查询日志记录了SQL的执行日期时间、SQL查询消耗时间、锁定时间、以及SQL语句。慢查询日志是一个流水账,并不能很好的用于统计分析。
二、慢查询用法
mysqldumpslow能将相同的慢SQL归类,并统计出相同的SQL执行的次数,每次执行耗时多久、总耗时,每次返回的行数、总行数,以及客户端连接信息等。
mysqldumpslow语法说明:
-s ,按照什么方式起来排序。默认at,也就是按照平均查询时间来排序。都是按照倒序排列。
al: average lock time 平均锁定时间
ar: average rows sent 平均返回行数
at: average query time 平均查询时间
c: count 总执行次数
l: lock time 总锁定时间
r: rows sent 总返回行数
t: query time 总查询时间
-t ,show the top n queries,显示前多少名的记录
-a ,默认不开启这个选项。mysqldumpslow将相似的SQL的值(字符串或者数字)替换为N,开启该选项,则显示真实值。不开启该选项,有点类似于Oracle的绑定变量的记录。
-g ,类似于grep命令,过滤出需要的信息。如,只查询A表的慢查询记录。
-l ,总时间中包含锁定时间
举例说明:
平均执行时间最长的前10条SQL
mysqldumpslow -s at -t 10 dev_121_21-slow.log
执行结果如下:
[root@dev_121_21 data]# mysqldumpslow -s at -t 10 dev_121_21-slow.log
Reading mysql slow query log from dev_121_21-slow.log
Count: 1 Time=14348.68s (14348s) Lock=0.00s (0s) Rows=182897.0 (182897), super_dev[super_dev]@[192.168.120.103]
SELECT * FROM `MOVIE_INTERFACE_LOG`
Count: 1 Time=6763.39s (6763s) Lock=0.00s (0s) Rows=11751450.0 (11751450), super_dev[super_dev]@[192.168.120.103]
SELECT * FROM `access_log`
Count: 7 Time=5123.90s (35867s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
call test.pro_test_data_1(N,N)
Count: 2 Time=3449.94s (6899s) Lock=0.00s (0s) Rows=2114376.5 (4228753), super_dev[super_dev]@[192.168.120.103]
SELECT * FROM `UC_USER`
Count: 1 Time=2410.83s (2410s) Lock=0.00s (0s) Rows=0.0 (0), dev_user[dev_user]@[192.168.120.223]
show create table `user_db`.`access_log`
Count: 4 Time=2121.44s (8485s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
call test.pro_test_data(N,N)
Count: 3 Time=1062.25s (3186s) Lock=0.00s (0s) Rows=126317.3 (378952), super_dev[super_dev]@[192.168.120.103]
SELECT * FROM `TB_BIS_POS_ORDER`
Count: 1 Time=781.73s (781s) Lock=0.00s (0s) Rows=0.0 (0), dev_user[dev_user]@[192.168.120.154]
truncate table test.UC_USER_1
Count: 3 Time=682.35s (2047s) Lock=0.00s (0s) Rows=617058.7 (1851176), 2users@2hosts
SELECT * FROM `SCHE_EXECUTER`
Count: 4 Time=451.14s (1804s) Lock=0.00s (0s) Rows=1030821.8 (4123287), 2users@3hosts
SELECT * FROM `GATEWAY_RECONICILIATION_LOG`
平均锁定时间最长的前10条SQL
mysqldumpslow -s al -t 10 dev_121_21-slow.log
执行次数最多的前10条SQL
mysqldumpslow -s c -t 10 dev_121_21-slow.log
显示SQL的具体值,而不是由N代替。便于查看执行计划并优化
mysqldumpslow -a slow.log
显示所有occ_sys表相关的慢SQL的具体值
mysqldumpslow -a -g 'occ_sys' dev_121_21-slow.log
Tag标签:「mysql 慢日志 Mysqldumpslow」更新时间:「2021-11-05 00:52:34」阅读次数:「942」