Mysql

在 slow_log 表中,sql_text 列顯示“節流:索引未使用”警告已被抑制”而不是精確查詢

  • May 1, 2015

我正在嘗試從 slow_log 表中查找執行緩慢的查詢(因為我無法直接訪問伺服器來檢查慢速日誌文件)。在 sql_text 列而不是查詢中,它顯示“節流:未使用索引”警告被抑制”。有人可以幫助我如何找到執行緩慢的查詢。

在此處輸入圖像描述

不幸的是,您不會從mysql.slow_log. 為什麼 ?

顯然使用了兩個選項

根據MySQL 文件(慢查詢日誌,第 9 段)

要在寫入慢查詢日誌的語句中包含不使用索引進行行查找的查詢,請啟用 log_queries_not_using_indexes 系統變數。記錄此類查詢時,慢查詢日誌可能會快速增長。可以通過設置 log_throttle_queries_not_using_indexes 系統變數對這些查詢設置速率限制。預設情況下,此變數為 0,表示沒有限制。正值對不使用索引的查詢的日誌記錄施加了每分鐘的限制。第一個這樣的查詢會打開一個 60 秒的視窗,在該視窗中伺服器將查詢記錄到給定的限制,然後抑制其他查詢。如果在視窗結束時有被抑制的查詢,伺服器會記錄一個摘要,指示有多少查詢以及在這些查詢中花費的總時間。

這表明您的log_throttle_queries_not_using_indexes已設置為禁止 SQL 文本。您可以通過以下方式驗證這一點

mysql> SELECT @@global.log_throttle_queries_not_using_indexes;

由於它是一個全域動態變數,您必須登錄root@localhost並執行

mysql> SET GLOBAL log_throttle_queries_not_using_indexes = 0;

這應該會暴露新的查詢進入mysql.slow_log,但你永遠不會看到那些以前的慢查詢是什麼。

你必須執行這個

mysql> SELECT @@global.log_output;

如果您看到FILE,TABLE這意味著存在慢查詢日誌的文本版本。您必須讓系統管理員獲取所需的慢速日誌資訊(此資訊可能需要 Starbucks GiftCard。如果慢速日誌文件包含相同的消息,請取回您的 Starbucks GitftCard。)

引用自:https://dba.stackexchange.com/questions/99380