2010-07-14 32 views
11

我最近完全重寫了一個大型項目。在這樣做的時候,我整理了大量的隨機MySQL查詢。我記得在開發以前的代碼庫的過程中,我創建了索引,我確信有很多不再使用的數字。如何識別MySQL數據庫中未使用的索引?

有沒有辦法監測MySQL的索引使用情況,以確定哪些索引正在使用,哪些不是?

回答

14

我不認爲這個信息在股票MySQL安裝中可用。

Percona爲MySQL創建工具和補丁來收集索引使用數據。

參見:

參見:

您還可能有興趣在名爲MySQLIndexAnalyzer一個Java應用程序,這有助於找到冗餘指標。但是這個工具不知道哪些索引是未使用的。

+1

+1 - 我也會推薦Percona補丁。我沒有訪問它們,所以最終記錄了每個查詢運行,然後解析這個表離線運行EXPLAIN對查詢和計算哪些索引/被使用,然後讓我找出哪些/不是, T /! – 2010-07-14 06:27:33

+0

@Dave Rix:考慮到這種情況的好方法。如果您還記錄每條查詢在日誌中出現的次數,則可以將其映射到由EXPLAIN報告的每個查詢所報告的索引,然後推斷哪些索引經常使用而不經常使用。一個被使用但很少使用的索引也可能成爲刪除的候選對象。 – 2010-07-14 06:52:43

+0

你是對的 - 儘管有一個名爲mysqlidxchx的舊工具,但它並不在股票發行版中。看到我的帖子最後兩段在這裏: http://www.mysqlperformanceblog.com/2009/10/16/how-not-to-find-unused-indexes/ – 2010-07-23 16:20:01