2015-05-15 44 views
1

我想知道是否有任何其他方式來檢查我們的慢查詢沒有記錄緩慢的查詢。假設,我有一個高度繁忙的服務器不能記錄太多以節省內存和I/O。那麼,有沒有其他方法可以檢查我是否有緩慢的查詢? 我知道,我們可以對查詢進行分析,但仍不確定究竟要做什麼才能確定哪個查詢是大部分時間和內存的查詢。確定緩慢的查詢沒有緩慢的查詢日誌在mysql服務器

剛剛開始mysql管理,不知道如何處理這個。任何指導將不勝感激。

回答

1

我發現緩慢是造成服務器陷入困境的最好來源。

建議您開始將long_query_time的適度高值。這將最大限度地減少I/O和磁盤空間。修復它找到的查詢,如果可以的話。

當您已經精疲力竭時,請降低該設置以查找更多。

使用pt-query-digest查找「最差」查詢。

請記住,高價值僅查找長查詢,即使它們很少。較低的值會發現經常運行的快速查詢,這可能是真正的惡棍。

另一種方法是僅在短時間內或在相對空閒時間內打開緩存日誌。你發現的東西可能仍然非常有用。

軼事:在一個系統中有一個查詢,其中WHERE被錯誤地配置爲運行100%的CPU。一線修復將CPU降至2%。

另一個軼事:一個特定的查詢很快,但頻繁運行。有一點算術說,查詢不應該像看到的那樣頻繁發佈。當查詢可能在循環之外時,該查詢就在循環內部。

回到你正在服用的方向...你可能手動做SHOW PROCESSLIST看什麼是頻繁或緩慢運行。這是乏味的,並打或錯過。但它可能會捕獲(1)緩慢,不頻繁的查詢,以及(2)快速,頻繁的查詢。

如果你想發佈SHOW VARIABLES;SHOW GLOBAL STATUS;,我會檢查幾百個公式,這可能導致更多的洞察效率低下。

+0

明白了。謝謝。 – Astha