2013-08-21 85 views
2

用什麼方法在現存的MYSQL安裝上找到未使用的索引? Percona有工具,但這些框是Amazon RDS實例,因此我們無法使用這些工具訪問螺母和螺栓。查找未使用的索引

我確實找到了http://hackmysql.com/mysqlidxchk,我認爲這可能是我唯一的選擇。我可以手動梳理並查找帶有重複前導鍵的索引,但這似乎也是反效果的。

我還沒有看到其他的解決方案嗎?

+0

可能重複[如何識別MySQL數據庫中未使用的索引?](http://stackoverflow.com/questions/3243475/how-do-you-identify-unused-indexes-in-a-mysql -database) –

+0

你是對的,傑里米。我以前的搜索是不夠的。 – Susurrus

回答

3

是的,有pt-index-usage,但您不一定需要針對您的RDS實例運行它。

您可以收集查詢日誌*,然後針對運行在任何位置的數據庫快照運行pt-index-usage,即使在您的筆記本電腦上也是如此。該工具僅對日誌中的所有查詢運行EXPLAIN,然後報告數據庫中存在但未被任何EXPLAIN報告使用的任何索引。

RDS僅支持基於表的查詢日誌,請注意由此造成的開銷。

您需要導出基於表的查詢日誌,然後才能將其用作pt-index-usage的輸入。這裏有一個腳本,可以做出口:https://github.com/billkarwin/bk-tools/blob/master/export-slow-log-table

的MySQL 5.6也有新的performance_schema表table_io_waits_summary_by_index_usage(見http://dev.mysql.com/doc/refman/5.6/en/table-waits-summary-tables.html),您可以啓用此找出如何頻繁各項指標從磁盤到內存中加載,因此它是正在使用。雖然您可能沒有使用MySQL 5.6,但我不知道您是否可以在RDS上啓用performance_schema選項。


我在同事的Percona剛剛發佈,確認您可以啓用亞馬遜RDS的performance_schema博客,雖然沒有通過Web UI。 http://www.mysqlperformanceblog.com/2013/08/21/amazon-rds-with-mysql-5-6-configuration-variables/

+0

卡爾溫先生。我想我會走下這條路,看看我能產生什麼。我發佈到mysqlidxchk的鏈接基本上做同樣的事情。我們在5.1上運行,所以performance_schema的東西不可用。 – Susurrus

0

EXPLAIN以及您的查詢在這方面是有幫助的。試試看,如果它沒有幫助,請說出來,以及你想知道的東西作爲評論缺失,我會研究它。

+0

這就是我現在所做的,但是在我們目前的設置中,有數百個查詢需要進行梳理。我已經廣泛地使用EXPLAIN來糾正已經很慢的查詢問題,我正在進入下一個尋找不必要的更新索引的階段。 – Susurrus