慢查詢日志中long_query_time 與log_queries_not_using_indexes與min_examined_row_limit 關系分析 引數介紹: long_query_time:慢查詢日志記錄超時的時間,無論是不是有索引,單位秒, log_queries_not_using_indexes:慢查詢日志記錄沒有使用索引的記錄,無論是否超時long_query_time, min_examined_row_limit:慢查詢日志僅僅記錄掃描行數超過行min_examined_row_limit的記錄(不包括該引數值本身,是大于該引數值的掃描行), 綜合分析:
記錄日志關系 = (long_query_time || log_queries_not_using_indexes)&& min_examined_row_limit
可見即使滿足超時條件,如果不滿足掃描行數條件,也不會記錄,因此這個引數要慎用,可見如果以上公式中三個引數都開啟,那么滿足下面2個條件其中之一才會被記錄,
1.我們有只有超時 且 掃描行數大于min_examined_row_limit時候才會被記錄,
2.我們有只有沒有使用索引 且 掃描行數大于min_examined_row_limit時候才會被記錄, 注意的問題: Tags1:min_examined_row_limit有會話變數和全域變數,動態改變引數值的時候需要分別進行修改,實測程序中改變全域變數(set global min_examined_row_limit=100)不會同步改變會話變數(set min_examined_row_limit=100),因此必須手動改變會話變數,才會對當前會話有效,
Tags2:需要注意的是min_examined_row_limit檢測的行數有時候與explain的有些出入,有時候同一個陳述句,explain顯示的select_type=simple的掃描行數rows與慢查詢日志中記錄的Rows_examined:不一樣,后者會多500行左右,不知道為何 下面是Mariadb 5.5.64服務器上進行測驗的相關代碼:
explain select * from hpx_member where u_id = 888444;#u_id 有索引測驗
explain select * from hpx_member where major = '8881';#major沒有索引測驗
explain select * from hpx_member where phone like '15933%';#phone有索引測驗,測驗掃描行數與min_examined_row_limit關系
select * from hpx_member where phone like '1593356%';
show global VARIABLES like '%index%'
show VARIABLES like '%index%'
show global VARIABLES like '%min_examined_row_limit%'
show VARIABLES like '%min_examined_row_limit%'
show VARIABLES like '%long_query_time%'
set global long_query_time=0.0001
set global log_queries_not_using_indexes=off
set global min_examined_row_limit=0
set min_examined_row_limit=50
select sleep(2),8888; 歡迎加我們微信wang1415035017進入微信高級技術群共同進步,或者掃碼加入我們哦(V_V)
歡迎加我們微信wang1415035017進入微信高級技術群共同進步,或者掃碼加入我們哦(V_V)

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/70566.html
標籤:MySQL
