MySQL 慢查询

开启慢查询日志

在配置文件my.cnf或my.ini中在 [mysqld] 一行下面加入两个配置参数

slow_query_log = on     #开启慢查询
long_query_time=1       #设置慢查询时间 1 s
log-slow-queries="D:/phpStudy/MySQL/data/slow_query.log"  #旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件hostname-slow.log
slow_query_log_file="D:/phpStudy/MySQL/data/slow_query.log" #新版(5.6及以上版本)慢查询日志保存路径 未指定slow_query_log_file的情况下,会自动生成一个以主机名+‘slow'.log 的文件
log-queries-not-using-indexes = on #开启记录没有使用索引查询语句

sql 查看慢查询配置

show status like 'slow_queries';    #慢查询的次数 (默认是慢查询时间10s)
show variables like 'long_query_time' ;   //可以显示当前慢查询时间
set long_query_time=1 ;    //可以修改慢查询时间 当前会话有效,永久有效请修改配置文件

慢查询记录到日志

在默认情况下,低版本的mysql不会记录慢查询,需要在启动mysql时候,指定记录慢查询才可以

binmysqld.exe –log-slow-queries=D:/abc.log [低版本mysql5.0可以在my.ini指定]

该慢查询日志在mysql5.0这个版本中时放在 mysql安装目录/data/下;

针对 mysql5.5启动慢查询有两种方法

  ① binmysqld.exe - -safe-mode - -slow-query-log

  ②在my.ini 文件中配置 [mysqld] 添加slow-query-log = on # 开启慢查询这个功能

可以通过  slow_query_log_file="日志存放位置"指定目录,默认存放在 mysql5.5.19是在my.ini 的 datadir=“目录” ;

在mysql5.6中,默认是启动记录慢查询的,my.ini其中有一个配置项 slow-query-log=1;

慢查询相关命令

mysql> show variables like '%slow%';
+---------------------+---------------------------------------+
| Variable_name       | Value                                 |
+---------------------+---------------------------------------+
| log_slow_queries    | OFF                                   |
| slow_launch_time    | 2                                     |
| slow_query_log      | OFF                                   |
| slow_query_log_file | D:phpStudyMySQLdataAdmin-slow.log |
+---------------------+---------------------------------------+
mysql> show variables like '%long%';
+---------------------------------------------------+-----------+
| Variable_name                                     | Value     |
+---------------------------------------------------+-----------+
| long_query_time                                   | 10.000000 |
| max_long_data_size                                | 1048576   |
| performance_schema_events_waits_history_long_size | 10000     |
+---------------------------------------------------+-----------+
mysql> show variables like '%min%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| ft_min_word_len          | 4     |
| min_examined_row_limit   | 0     |
| query_cache_min_res_unit | 4096  |
+--------------------------+-------+

相关文章:MySQL中EXPLAIN解释命令 查看索引是否生效

原文地址:https://www.cnblogs.com/xuey/p/9533223.html