设为首页 收藏本站
查看: 428|回复: 0

[经验分享] mysql5.5慢日志设置和查询

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-2-19 08:49:27 | 显示全部楼层 |阅读模式
mysql> showvariables like '%version%';
+-------------------------+---------------------+
| Variable_name           | Value               |
+-------------------------+---------------------+
|innodb_version          | 5.5.31              |
|protocol_version        | 10                  |
|slave_type_conversions  |                     |
| version                 | 5.5.31-log          |
|version_comment         | Sourcedistribution |
|version_compile_machine | x86_64             |
|version_compile_os      | Linux               |
+-------------------------+---------------------+
7 rows in set (0.00sec)

开启慢查询日志

在mysql的配置文件my.cnf 中的mysqld下方添加以下参数:

1
2
3
4
5
log_slow_queries=ON
long_query_time=1
slow_launch_time=1
slow_query_log=ON
slow_query_log_file=/log/mysql/slow_queries.log




注:

long_query_time=1 表示记录查询时间超过1秒的sql

slow_query_log_file 慢日志文件

slow_launch_time : 表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加



重启mysql后检查结果

mysql> showvariables like '%slow%';
+---------------------+-----------------------------+
| Variable_name       | Value                       |
+---------------------+-----------------------------+
|log_slow_queries    | ON                          |
|slow_launch_time    | 1                           |
|slow_query_log      | ON                          |
|slow_query_log_file | /log/mysql/slow_queries.log |
+---------------------+-----------------------------+
4 rows in set (0.00sec)

mysql> showvariables like '%long%';
+---------------------------------------------------+----------+
| Variable_name                                     |Value    |
+---------------------------------------------------+----------+
|long_query_time                                   | 1.000000 |
|max_long_data_size                                | 1048576  |
|performance_schema_events_waits_history_long_size | 10000    |
+---------------------------------------------------+----------+
3 rows in set (0.00sec)


测试
mysql> selectsleep(2);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (2.00sec)

查看日志是否记录
[iyunv@HE1 /]# tail-f /log/mysql/slow_queries.log
# Time: 16021722:26:54
# User@Host:root[root] @ localhost []
# Query_time:2.000661  Lock_time: 0.000000 Rows_sent:1  Rows_examined: 0
SETtimestamp=1455776814;
select sleep(2);


设置好参数后,以后可通过
1
2
mysql>set GLOBAL slow_query_log=1;开启慢日志
mysql> set GLOBAL slow_query_log=0;关闭慢日志





是否记录没用到索引的SQL语句
mysql> showvariables like '%using%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
|log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00sec)

mysql> set globallog_queries_not_using_indexes=1;
Query OK, 0 rowsaffected (0.00 sec)

mysql> showvariables like '%using%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
|log_queries_not_using_indexes | ON    |
+-------------------------------+-------+
1 row in set (0.00sec)

通过mysqldumpslow工具查询慢日志

[iyunv@HE1 bin]#mysqldumpslow  --help
Usage: mysqldumpslow[ OPTS... ] [ LOGS... ]

Parse and summarizethe 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
  -a          don't abstract all numbers to N and strings to 'S'
  -n NUM      abstract numbers with at least n digits within names
  -g PATTERN  grep: only consider stmts that include this string
  -h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
               default is '*', i.e. match all
  -i NAME     name of server instance (if using mysql.server startup script)
  -l          don't subtract lock time from total time




1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@HE1 bin]#mysqldumpslow -s at -n 3 /log/mysql/slow_queries.log

Reading mysql slowquery log from /log/mysql/slow_queries.log
Count: 3  Time=2.33s (7s)  Lock=0.00s (0s)  Rows=1.0 (3), root[root]@localhost
  select sleep(N)

Count: 1  Time=0.37s (0s)  Lock=0.44s (0s)  Rows=0.0 (0), root[root]@localhost
  create table helei as select * frommysql.help_keyword

Count: 2  Time=0.11s (0s)  Lock=0.03s (0s)  Rows=0.0 (0), root[root]@localhost
  insert into helei  select * from mysql.help_keyword

Count: 2  Time=0.04s (0s)  Lock=0.00s (0s)  Rows=1.0 (2), root[root]@localhost
  select count(*) from helei



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-179821-1-1.html 上篇帖子: MYSQL-MMM主从同步部署mysql高用集群 下篇帖子: mysql取出表中,某字段值最大的一条纪录,sql语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表