我在MySQL中有一個表,有7個索引,其中大多數都在多個列上。我覺得這裏索引太多了。有沒有什麼辦法可以獲得數據庫所有數千個查詢使用哪些索引的統計數據,哪些數據不太值得我知道哪些索引要考慮首先刪除?如何識別哪些索引未被使用?
0
A
回答
3
你可以嘗試確定which indexes are used at all.
然而,就作爲一個有用的列表,對不起,沒有內置的方法來做到這一點,我不認爲查詢分析器甚至做到這一點。
您似乎可能需要執行審計以確定正在使用的影響該表的查詢,並對它們進行解釋以查看它們是否使用了任何索引。
有一個錯誤報告requesting this feature。
0
這不是一個具體的做法,但你可能會說。嘗試EXPLAIN SELECT...
,它會告訴你正在使用哪些表,有多少行,等等,等等這應該給你足夠的數據來加速你的表
0
打開生產中的一般查詢日誌記錄。是的,我知道這很痛苦,我知道它會影響你的生產服務器,但是BITE THE BULLET。稍後會有用。如果可能的話,讓它無限期地打開(當然要確保日誌的旋轉,壓縮和過期能夠正常工作,並且絕對監控磁盤空間的使用情況;告訴Ops如果在壞事情發生時如何關閉它)
然後, mk-query-digest將在您的所有查詢中運行EXPLAIN(當然,這是針對非生產數據庫執行的,但使用生產數據庫的最近轉儲)。
這將使您能夠確定哪些索引正在使用以及使用頻率。至少,如果EXPLAIN沒有說謊,並且您的測試服務器使用與生產相同的計劃。
或者至少,它大多會。 EXPLAIN還沒有告訴你DELETE,UPDATE查詢是如何工作的。
1
您應該查看Percona修補程序或其服務器版本。他們已將表添加到INFORMATION_SCHEMA中,以便您可以找到未使用的索引。
鏈接:
相關問題
- 1. 如何識別用戶選擇哪些?
- 2. 如何識別MySQL數據庫中未使用的索引?
- 3. $ _POST ['variable'],變量未被識別(「未定義索引」)
- 4. 如何識別哪些類型可以被基因化?
- 5. CTE未被識別
- 6. JSON未被識別
- 7. 'javac'未被識別
- 8. DLL未被識別
- 9. Swift:UITextField未被識別
- 10. 如何識別哪個銷被挖掘
- 11. $ _Session數組未識別索引
- 12. 未識別的索引錯誤PHP
- 13. 多個$ _FILES在控制器中未被識別(未定義的索引)
- 14. 通知未被識別
- 15. meta_where代碼未被識別
- 16. R CMD roxygen未被識別
- 17. 元素未被識別
- 18. $ {GIT_BRANCH}未被Jenkins識別
- 19. 最大值未被識別
- 20. XML內容未被識別
- 21. JDABuilder未被Eclipse識別
- 22. iCal未被Google識別
- 23. Grails 3.1.9:POST未被識別
- 24. EntityFramework DataContext未被識別
- 25. css文件未被識別
- 26. JQ未被AppleScript識別
- 27. 如何識別未使用的CSS類?
- 28. 如何輕鬆查看哪些資產未被使用?
- 29. 如何判斷ALL_TAB_COLS中哪些列未被使用?
- 30. 如何識別哪些缺失的Java庫使JAXB工作?
是的,但我有這麼多的疑問 – 2010-05-24 21:37:59