查询

慢查询,顾名思义就是数据库中运行比较慢的 SQL 语句,MySQL 这个功能需要开启才能用;

  1. show variables like '%slow_query_log%';
  2. * slow_query_log //是否开启,默认关闭,建议调优时才开启
  3. * slow_query_log_file //慢查询日志存放目录
  4. show variables like 'long_query_time%';
  5. * 查看阀值(大于),默认 10s
  6. show variables like '%log_output%';
  7. * 查看慢查询日志记录方式
  8. set global slow_query_log =1; //只对当前会话生效,重启失效
  9. set global long_query_time = 1 //设置慢查询阀值
  10. 把未使用索引的 SQL 记录写入慢查询日志:
  11. show variables like 'log_queries_not_using_indexes'; //查看设置,默认关闭
  12. set global log_queries_not_using_indexes = on; //设置

以上设置服务重启后失效,永久开启需要修改配置文件;

  1. vi my.cnf
  2. 在[mysqld]下添加:
  3. slow_query_log = 1 //开启慢查询
  4. long_query_time = 1 //设置慢查询阈值
  5. log_output = File,TABLE //设置慢查询记录方式,File 是文件,Table 会写入 mysql.slow_log
  6. slow_query_log_file = /var/lib/mysql/slow.log //设置慢查询日志位置

保存以后,重启 MySQL 服务即可。

分析

分析工具有很多,本文使用的是 Percona-Toolkit 中的 pt-query-digest 进行分析

安装

https://www.percona.com/downloads/percona-toolkit/3.3.1/binary/redhat/7/

  1. #安装软件源
  2. yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
  3. #查询是否安装正确
  4. yum list | grep percona-toolkit
  5. #安装
  6. yum install percona-toolkit
  7. yum install https://downloads.percona.com/downloads/percona-toolkit/3.3.1/binary/redhat/7/x86_64/percona-toolkit-3.3.1-1.el7.x86_64.rpm

分析

  1. pt-query-digest --help
  2. pt-table-checksum --help
  3. /usr/bin/pt-query-digest --user=root --password=XXXXXXXX --port=3306 --review h=127.0.0.1,D=slow_query_log,t=global_query_review --history h=127.0.0.1,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\"$HOSTNAME\"" /var/log/mysqld-slow.log

显示

从 Github 中找到几个 UI 项目,基本都是通过上述工具分析将结果写入新库,然后通过 PHP 等调用
https://dbaplus.cn/news-11-2520-1.html