MySQL性能优化总结之二

一,获取需要优化的SQL,除了用我上一篇博文提到show processlist方式,还可以开启慢查询日志的方式。

A. mysql之linux版开启慢查询日志:

在配置文件 my.cnf 中的 [mysqld] 一行下边添加两个参数:

MySQL性能优化总结之二

其中,slow_query_log = 1 表示开启慢查询;

slow_query_log_file 表示慢查询日志存放的位置;

long_query_time = 2 表示查询 >=2 秒才记录日志;

log_queries_not_using_indexes = 1 记录没有使用索引的 SQL 语句。

注意:slow_query_log_file 的路径不能随便写,否则 MySQL 服务器可能没有权限将日志文件写到指定的目录中。建议直接复制上文的路径。

修改保存文件后,重启 MySQL 服务。在 /var/lib/mysql/ 目录下会创建 slow-query.log 日志文件。连接 MySQL 服务端执行如下命令可以查看配置情况。

  1. show variables like 'slow_query%';
  2. show variables like 'long_query_time';

测试慢查询日志:

MySQL性能优化总结之二

打开慢查询日志文件:

MySQL性能优化总结之二 

我们可以看到刚才执行了 2 秒的 SQL 语句被记录下来了。

虽然在慢查询日志中记录查询慢的 SQL 信息,但是日志记录的内容密集且不易查阅。因此,我们需要通过工具将 SQL 筛选出来。

MySQL 提供 mysqldumpslow 工具对日志进行分析。我们可以使用 mysqldumpslow --help 查看命令相关用法。

常用参数如下:

MySQL性能优化总结之二

案例:

MySQL性能优化总结之二 

 B. mysql之windows版开启慢查询日志:

1、CMD命令行进入MySQL数据库

2、登录mysql数据库

3、show variables like 'slow_query%';show variables like 'long_query_time';

// show variables like '%quer%';  ---- 这个更好

 slow_query_log      | OFF  慢查询未开启

MySQL性能优化总结之二

4、将 slow_query_log 全局变量设置为“ON”状态 ,临时生效,mysql重启后就会失效

set global slow_query_log='ON';

MySQL性能优化总结之二

5、设置慢查询日志存放的位置

set global slow_query_log_file='D:\\kpdata\\DataBase\\Data\\mysql.log';

MySQL性能优化总结之二

 

6、找到mysql的安装目录,找到my.ini文件夹在[mysqld]处加入以下代码开启慢查询,永久有效。

#开启慢查询
slow_query_log = ON
#log-slow-queries:代表MYSQL慢查询的日志存储目录,此目录文件一定要有写权限;
log-slow-queries="C:/Program Files (x86)/MySQL/MySQL Server 5.0/log/mysql-slow.log"
#最长执行时间 (查询的最长时间,超过了这个时间则记录到日志中) .
long_query_time = 1
#没有使用到索引的查询也将被记录在日志中
log-queries-not-using-indexes = ON

7、重启服务,查看慢查询开启状态。