天天看點

優化之慢查詢

優化之慢查詢

概念

查詢超過指定的時間的語句叫慢查詢

查詢

檢視慢查詢的指定的時間

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)

繼續閱讀