bwin必赢国际官网:Mysql慢查询和慢查询日志分析

作者:计算机知识

前言

壹,慢日志配置

1)my.cnf文件
long_query_time = 0.五 //实施时间超越0.5s的sql会被记录下来
slow_query_log = ON //开启慢查询
slow_query_log_file = /var/log/mysql/slowquery.log //慢查询日志地方,默许在mysql的数码目录生成。
log_queries_not_using_bwin必赢国际官网:Mysql慢查询和慢查询日志分析,慢日志分析。indexes = OFF //未使用索引的sql查询是或不是记录

修改my.cnf的[mysqld]相关的配置需要重启mysqld服务,或者使用set global var = value动态修改。

二)查看日志。

翻开最终n行数据
tail -100(或者 -n 100) slowquery.log > /home/zhanqi/slowquery.log
查阅早先n行数据
head -100(或者 -n 100) slowquery.log > /home/zhanqi/slowquery.log
翻看某几行的数额
cat slowquery.log | head -n 100 | tail -n 50 //查看50 -100行的数据,不包含50和100这两行
sed -n "50, 100p" slowquery.log // 包含50和100这两行

三)深入分析日志。

Time: 2017-05-26T02:21:45.263281Z 执行sql的时间点
User@Host: root[root] @ [210.73.xxx.xxx] Id: 14032 执行sql的主机信息
Query_time: 2.080283 Lock_time: 0.000038 Rows_sent: 1 Rows_examined: 10221443 执行所用时间锁定时间返回行数扫描行数
SET timestamp=1495765305; 执行sql时unix时间戳(s),* 1000 转成java中的时间戳(ms)
select count(*) as col_0_0_ from course_info courseinfo0_ where courseinfo0_.merchantId=100 limit 1; sql语句

 Mysql慢查询和慢查询日志深入分析


 

        容易学习了下慢日志分析,轻松做下笔记,以便前期方便查看。常常状态下,大家应该优化查询次数多且耗费时间多的话语,大概扫描行数多的语句优化,也许缓存命中率(查询结果记录数/扫描记录数)低的言语。

眼看,大访问量的情景下,可增加节点或转移架构可使得的消除数据库压力,但是总体的原点,都以从单台mysql伊始的。上面总计一些采纳过照旧切磋过的经验,从配置以及调解索引的方面动手,对mysql实香港行政局地优化。


先是步应该做的便是排查难题,搜索瓶颈,所以,先从日记入手

帮助:(/usr/local/mysql/bin/mysqldumpslow --help)

Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are

   --verbose    verbose
   --debug      debug
   --help       write this text to standard output

   -v           verbose
   -d           debug
   -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default 排序
                al: average lock time 平均锁时间
                ar: average rows sent 平均发送给客户端行数
                at: average query time 平均查询时间
                 c: count  一种类型查询的总次数
                 l: lock time  锁总时间
                 r: rows sent  发送给客户端总行数
                 t: query time  查询总时间
  -r           reverse the sort order (largest last instead of first)  倒序
  -t NUM       just show the top n queries 取排序的前NUM个
  -a           don't abstract all numbers to N and strings to 'S' 不要将所有数字归为N,字符串归为S
  -n NUM       abstract numbers with at least n digits within names
  -g PATTERN   grep: only consider stmts that include this string  过滤模式 相当于grep作用
  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard)
  -i NAME      name of server instance (if using mysql.server startup script)
  -l           don't subtract lock time from total time  不要减除锁时间

张开慢查询日志

日记的布局

# User@Host: root[root] @ localhost []
# Query_time: 1.098060  Lock_time: 0.059297 Rows_sent: 0  Rows_examined: 5416
use db_msg;
SET timestamp=1489657202;    //查询时间
DELETE FROM t_msg_recv_5 WHERE expire_time < UNIX_TIMESTAMP() AND channel!='ShangSou' LIMIT 500;

mysql>show variables like “%slow%”; 查看慢查询配置,未有则在my.cnf中加多,如下

简短例子及声明

  • 指令及出口:/usr/local/mysql/bin/mysqldumpslow -s t -t 1 /data/mysql-slow.log

    Reading mysql slow query log from /data/mysql-data/mysql-slow.log
    Count: 389594  Time=4.52s (1762523s)  Lock=0.07s (25931s)  Rows=1.0 (388500), x[x]@[ip]
      SELECT seq_num FROM t_msg_max_num WHERE user_id = "S" AND channel = "S"
    
  • 说明:

    1. Count: 该类型查询执行总次数
    2. Time=4.52s (1722323s):4.52s指该类型查询执行最长时间,1722323s该类型查询总执行时间
    3. Lock=0.07s (25931s): 0.07s平均锁时间 ,25931s总时间
    4. Rows=1.0 (388500):类似的,1.0为平均发送给客户端行数记录,388500发送给客户端总行数
    

 

系统变量log-queries-not-using-indexes:

  • 未使用索引的询问也被记录到慢查询日志中(可挑选)。如若调优的话,提议拉开那么些选项。其它,开启了那些参数,其实采取full index scan的sql也会被记录到慢查询日志。

log-slow-queries = /data/mysqldata/slowquery.log    #日志目录

系统变量log_slow_admin_statements:

  • 是还是不是将慢管理语句比方ANALYZE TABLE和ALTEGL450 TABLE等记入慢查询日志

long_query_time = 1                          #记录下询问时间查过1秒

log-queries-not-using-indexes     #代表记录下未有应用索引的询问

 

解析日志 – mysqldumpslow

深入分析日志,可用mysql提供的mysqldumpslow,使用一点也不细略,参数可–help查看

 

# -s:排序格局。c , t , l , r 表示记录次数、时间、查询时间的有一点、重临的记录数排序;

#                             ac , at , al , ar 代表相应的倒叙;

# -t:重回前面多少条的多寡;

# -g:包涵怎样,大小写不敏感的;

本文由bwin必赢发布,转载请注明来源

关键词: MySQL Mysql数据库 mysql之路