天天看点

优化之慢查询

优化之慢查询

概念

查询超过指定的时间的语句叫慢查询

查询

查看慢查询的指定的时间

show variables like “%long%”;

show status like “connections”;

查询当前mysql数据库是否开启慢查询日志功能;

show varlables like ‘%slow%’

配置

5.5版本配置

1.配置慢查询日志存放路径

在磁盘随意位置创建文件夹MysqlLog,并在文件夹内创建

2更改Mysql/slow.log读写方式

文件夹右键-属性-安全-编辑-添加-高级-立即查找-Everyone-编辑-安全控制-确定

3.在my.ini文件中配置

log_slow_queries=ON 开启慢查询

long_query_time=2 设置规定的超时时间

slow_query_log=ON 开启慢查询的日志

log_queries_not_using_indexes=ON 如果没有用到索引查询,则记录到日志

slow_query_log_file=“D:/MysqlLog/slow.log” 日志文件所在的磁盘路径

5.7版本配置

slow_query_log的值是ON,代表当前数据库已经开启了慢查询功能;

slow_query_log_file表示慢日志的路径或使用show variables like 'slow_query_log_file’命令也可以查看慢查询日志的路径

还可以查询超时多少秒算是慢查询:

show variables like ‘long_query_time’;

设置慢查询时间

set global long_query_time=4;

设置之后再次查询使用

show global variables like ‘long_query_time’;

查询有多少条慢查询

show global status like ‘%Slow_queries%’;

查看慢查询日志的存储方式

show variables like ‘%log_output%’;

设置

set global log_output=‘TABLE’;

该系统变量指定未使用索引的查询也被记录到慢查询日志中(可选项)。

如果调优的话,建议开启这个选项。

另外,开启了这个参数,其实使用full index scan的SQL也会被记录到慢查询日志。

mysql> show variables like ‘log_queries_not_using_indexes’;

±------------------------------±------+

| Variable_name | Value |

±------------------------------±------+

| log_queries_not_using_indexes | OFF |

±------------------------------±------+

1 row in set (0.00 sec)

设置

mysql> set global log_queries_not_using_indexes=1;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like ‘log_queries_not_using_indexes’;

±------------------------------±------+

| Variable_name | Value |

±------------------------------±------+

| log_queries_not_using_indexes | ON |

±------------------------------±------+

1 row in set (0.00 sec)

继续阅读