2010-07-14 7 views
11

मैंने हाल ही में एक बड़ी परियोजना को पूरी तरह से फिर से लिखा है। ऐसा करने में, मैंने यादृच्छिक MySQL प्रश्नों की बड़ी संख्या को समेकित किया है। मुझे याद है कि पिछले कोडबेस के विकास के दौरान, मैंने इंडेक्स को एक सनकी पर बनाया, और मुझे यकीन है कि वहां एक बड़ी संख्या है जिसका उपयोग अब नहीं किया जाता है।आप एक MySQL डेटाबेस में अप्रयुक्त अनुक्रमणिका की पहचान कैसे करते हैं?

क्या MySQL के इंडेक्स उपयोग की निगरानी करने का कोई तरीका है यह निर्धारित करने के लिए कि कौन से इंडेक्स का उपयोग किया जा रहा है, और कौन से नहीं हैं?

उत्तर

14

मुझे नहीं लगता कि यह जानकारी एक स्टॉक MySQL स्थापना में उपलब्ध है।

पेर्कोना इंडेक्स उपयोग डेटा एकत्र करने के लिए MySQL के लिए टूल और पैच बनाता है।

देखें:

भी देखें:

तुम भी MySQLIndexAnalyzer नामक एक जावा अनुप्रयोग है, जो अनावश्यक अनुक्रमणिका को खोजने के लिए मदद करता है में रुचि हो सकती। लेकिन इस उपकरण में कोई विचार नहीं है कि इंडेक्स का उपयोग नहीं किया जाता है।

+1

+1 - मैं भी पेर्कोन पैच की सिफारिश करता हूं। मेरे पास उनके पास पहुंच नहीं थी, इसलिए प्रत्येक क्वेरी चलाने के लिए लॉगिंग समाप्त हो गई, फिर इस तालिका को ऑफ़लाइन चलने वाले प्रश्नों के खिलाफ एक्सप्लिन चलाना और गिनती करना/कौन सा इंडेक्स/इस्तेमाल किया गया था, जिससे मुझे यह पता चल जाएगा कि कौन सा/टी /! –

+0

@ डेव रिकिक्स: स्थिति को देखते हुए अच्छा समाधान। यदि आप अपने लॉग में प्रत्येक क्वेरी को कितनी बार देखा जाता है, तो आप यह भी मान सकते हैं कि आप प्रत्येक क्वेरी के लिए EXPLAIN द्वारा रिपोर्ट किए गए इंडेक्स को मैप कर सकते हैं, और फिर एक्सट्रैपोलेट कर सकते हैं कि कौन सी अनुक्रमणिका अक्सर बनाम बनाम होती है। एक इंडेक्स जिसका उपयोग किया जाता है, लेकिन केवल दुर्लभ रूप से उपयोग किया जाने वाला भी उम्मीदवार हो सकता है। –

+0

आप सही हैं - यह स्टॉक रिलीज में उपलब्ध नहीं है, हालांकि mysqlidxchx नामक एक पुराना टूल है। मेरे पोस्ट के अंतिम दो पैराग्राफ यहां देखें: http://www.mysqlperformanceblog.com/2009/10/16/how-not-to-find-unused-indexes/ –

संबंधित मुद्दे