優化之慢查詢
概念
查詢超過指定的時間的語句叫慢查詢
查詢
檢視慢查詢的指定的時間
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)