優化 慢查詢

2021-09-28 22:15:16 字數 2419 閱讀 3231

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

檢視慢查詢的指定時間

show variables like

"%long%"

;show

status

like

"connections"

;

查詢當前mysql資料庫是否開啟了慢查詢日誌功能

show variables 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表示慢日誌的路徑,或使用slow 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)

慢查詢優化

建索引的幾大原則 1.最左字首匹配原則,非常重要的原則,mysql會一直向右匹配直到遇到範圍查詢 between like 就停止匹配,比如a 1 and b 2 and c 3 and d 4 如果建立 a,b,c,d 順序的索引,d是用不到索引的,如果建立 a,b,d,c 的索引則都可以用到,a...

SQL慢查詢優化

3月19日,3月20日的18 00 20 00之間,db伺服器的cpu load飆公升 dba提出問題原因是sql where rest id and state and id and valid 掃瞄行數太多,執行時間過長 在b端心跳連線時,會傳 queue marker 引數,含義為上次處理的最...

Mysql優化 慢查詢

先查詢是否開啟 開啟慢查詢日誌 set global slow query log 1 檢視引數設定 show variables like long query time 這裡查詢的是查過多少時間才會記錄成慢查詢 預設10 秒以上的s ql語句記錄到日誌中 修改引數 set global long...