MySQL调优三部曲(一)慢查询

拉开慢查询日志,能够让MySQL记录下询问超过钦赐时间的说话,通过定位分析质量的瓶颈,可以更好的优化MySQL的性质

参数表明

  • slow_query_log: 慢查询开启状态(on/off)
  • slow_query_log_file:
    慢查询日志存放地方(该目录必要MySQL的运维账号可写权限,一般安装为MySQL的多寡存放目录)
  • long_query_time: 查询超过多少秒才记录

安装步骤

1. 查看慢查询相关参数

mysql> show variables like 'slow_query%';
+---------------------+--------------------------------------+
| Variable_name       | Value                                |
+---------------------+--------------------------------------+
| slow_query_log      | OFF                                  |
| slow_query_log_file | /var/lib/mysql/9e598ca46b66-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.00 sec)

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

MySQL,2. 设置

  • 全局变量设置

翻开慢查询

mysql> set global slow_query_log='ON'; 

安装慢查询日志存放地方

mysql> set global slow_query_log_file='/var/lib/mysql/slow.log';

安装超时时间

mysql> set global long_query_time=2;

ps1: 使用命令
set global long_query_time=2修改后,需求重新连接或新开3个对话才能看到修改值

ps2: 不理解为什么,作者用全局设置的艺术总是写不了慢查询日志,重启也分外

  • 布置文件设置

修改配置文件my.cnf,在[mysqld]下添加

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2

重启MySQL服务

service mysqld restart

慢查询分析

mysqldumpslow -s [Parameter] -t [Parameter] /var/lib/mysql/slow.log
参数

-s : 排序情势

  • c:query执行的次数
  • t:sql执行的年月
  • l:lock锁表的小时
  • r:sql重返的行数

-t: top,返回前n条数据

-g: 正则匹配,大小写不灵动

回去执行时间最长的前三个query

mysqldumpslow -s t -t 2 /var/lib/mysql/slow.log

显示执行次数最多的前多个query

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

回去遵照时间排序的前10条里面包括左连接的询问语句

mysqldumpslow -s t -t 10 -g "left join" /database/mysql/slow-log

网站地图xml地图