MySQL性能优化总结之二
一,获取需要优化的SQL,除了用我上一篇博文提到show processlist方式,还可以开启慢查询日志的方式。
A. mysql之linux版开启慢查询日志:
在配置文件 my.cnf 中的 [mysqld] 一行下边添加两个参数:
其中,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 服务端执行如下命令可以查看配置情况。
- show variables like 'slow_query%';
- show variables like 'long_query_time';
测试慢查询日志:
打开慢查询日志文件:
我们可以看到刚才执行了 2 秒的 SQL 语句被记录下来了。
虽然在慢查询日志中记录查询慢的 SQL 信息,但是日志记录的内容密集且不易查阅。因此,我们需要通过工具将 SQL 筛选出来。
MySQL 提供 mysqldumpslow 工具对日志进行分析。我们可以使用 mysqldumpslow --help 查看命令相关用法。
常用参数如下:
案例:
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 慢查询未开启
4、将 slow_query_log 全局变量设置为“ON”状态 ,临时生效,mysql重启后就会失效
set global slow_query_log='ON';
5、设置慢查询日志存放的位置
set global slow_query_log_file='D:\\kpdata\\DataBase\\Data\\mysql.log';
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、重启服务,查看慢查询开启状态。