MySQL慢日志设置 及 mysqldumpslow 日志分析工具的基本使用

目录

MySQL慢日志配置

查看是否开启慢日志

1.开启慢日志-终端开启:

2.开启慢日志-永久启动慢日志:

查看慢日志记录的阈值

1.修改阀值-终端修改:

2.修改阀值-永久配置慢日志阈值:

查看慢日志条数

mysqldumpslow 日志分析工具

查看帮助

常用命令

日志含义


MySQL慢日志配置

查看是否开启慢日志

show variables like "%slow_query_log%";

默认情况下slow_query_log关闭的: 

1.开启慢日志-终端开启:

set global slow_query_log=1;

但是这样开启,只是只对当前数据库生效,重启数据库MySQL 则会失效

2.开启慢日志-永久启动慢日志:

修改配置文件:my.cnf

[mysqld]下增加或修改参数:

slow_query_log=1

slow_query_log_file=/var/lib/mysql/{host_name}-slow.log

查看慢日志记录的阈值

show variables like 'long_query_time%';

默认long_query_time =10秒

1.修改阀值-终端修改:

# 更改阀值为3秒

set global long_query_time=3;

需要注意的是,设置完慢sql的阀值,需要关闭窗口,重新进入窗口,输入下面命令查看是否成功设置:

show variables like 'long_query_time%';

2.修改阀值-永久配置慢日志阈值:

slow_query_log=1;

slow_query_log_file=路径

long_query_time=3;

log_output=FILE        

 

查看慢日志条数

show global status like 'Slow_queries%';

mysqldumpslow 日志分析工具

查看帮助

[root@iZnm201qbh8hw7dnjoda3lZ ~]# 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

  -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

参数含义

s:表示按照何种方式排序

c: 访问次数

l: 锁定时间

r: 返回记录

t: 查询时间

al: 平均锁定时间

ar: 平均返回记录数

at: 平均查询时间

t: 即为返回前面多少条数据

g: 后边搭配一个正则匹配模式,大小写不敏感的

常用命令

# 得到返回记录集最多的10个SQL

mysqldumpslow -s r -t 10 /var/lib/mysql/mysql-slow.log

# 得到访问次数最多的10个SQL

mysqldumpslow -s c -t 10 /var/lib/mysql/mysql-slow.log

# 得到按照时间排序的前10条里面含有左连接的查询语句

mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/mysql-slow.log

# 另外建议在使用这些命令时结合 | more  使用

mysqldumpslow -s r -t 10 /var/lib/mysql/mysql-slow.log | more

日志含义

Count: 433  Time=2.20s (950s)  Lock=0.00s (0s)  Rows=483.7 (209463), root[root]@localhost

出现次数(Count),

执行最长时间(Time),

累计总耗费时间(Time),

等待锁的时间(Lock),

发送给客户端的行总数(Rows),

扫描的行总数(Rows),

执行用户及地址root[root]@localhost

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL 查询日志可以记录执行时间超过指定阈值的 SQL 查询语句,用于帮助 DBA 或开发者监控和优化 SQL 查询性能。 以下是 MySQL 查询日志分析的一般步骤: 1. 开启 MySQL 查询日志。在 MySQL 配置文件中设置 `slow_query_log` 参数为 `ON`,并指定 `slow_query_log_file` 参数为日志文件路径。 2. 查看查询日志。可以使用 `mysqldumpslow` 工具或者其他第三方工具来查看查询日志,例如: ``` mysqldumpslow -s t /path/to/slow_query_log_file ``` 上面的命令会按照时间排序并显示执行时间最长的 SQL 查询语句。 3. 分析查询语句。对于执行时间较长的 SQL 查询语句,可以进行如下分析: - 检查 SQL 查询语句是否存在索引。可以使用 `EXPLAIN` 命令或者其他第三方工具来查看 SQL 查询语句的执行计划,判断是否存在全表扫描或者索引失效等问题。 - 检查 SQL 查询语句的优化方式。可以考虑对 SQL 查询语句进行重构,使用更优的语法或者查询方式,例如使用 JOIN、子查询等方式来替代多次查询。 - 检查 MySQL 数据库的配置参数。可以根据查询语句的特点来调整 MySQL 数据库的配置参数,例如 `innodb_buffer_pool_size`、`max_connections`、`query_cache_size` 等参数。 4. 优化查询语句。根据分析结果,对 SQL 查询语句、MySQL 数据库配置参数等进行优化,提高查询性能。 总之,MySQL 查询日志分析需要结合实际情况和经验进行,需要不断地监控和优化,以提高 MySQL 数据库的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ahuuua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值