MySQL 慢查询分析实践

mysql默认未开启慢查询记录功能;默认慢查询时间为10秒。

一、mysql开启慢查询日志记录

// 查看慢查询是否开启
show variables like 'slow_query%';
show variables like 'long_query_time';

// 设置慢查询
set GLOBAL slow_query_log='ON';
set  long_query_time=2;
set GLOBAL long_query_time=2;

// 测试慢查询是否生效
select sleep(2)

// 配置文件修改慢查询
[mysqld]
slow_query_log = ON
long_query_time = 2
slow_query_log_file = /usr/local/mysql/data/slow.log

// 重启mysql
systemctl restart mysql

二、利用mysqldumpslow命令,对慢查询日志进行分析统计

  1. 参数解释
    -s, 是表示按照何种方式排序
    c: 访问计数
    l: 锁定时间
    r: 返回记录
    t: 查询时间
    al:平均锁定时间
    ar:平均返回记录数
    at:平均查询时间
    -t, 是top n的意思,即为返回前面多少条的数据;
    -g, 后边可以写一个正则匹配模式,大小写不敏感的;

  2. 基本用法

  • 得到返回记录集最多的10个SQL。
    mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
  • 得到访问次数最多的10个SQL
    mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
  • 得到按照时间排序的前10条里面含有左连接的查询语句。
    mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log
  • 在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
    mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容