इतना समय पहले नहीं, मैंने अपने एप्लिकेशन डेवलपमेंट स्टाफ को एक्सप्लेन प्लान पर एक ट्यूटोरियल दिया था। एक सवाल जो सामने आया वह यह था कि मैं यह तय करने के बारे में कैसे जाऊं कि कौन से SQL कथनों को ट्यूनिंग की आवश्यकता है? मैं कुछ अलग दृष्टिकोणों का उपयोग करता हूं और विभिन्न कोणों से SQL ट्यूनिंग उम्मीदवारों को ढूंढता हूं।
- मैं नियमित रूप से SQL कथनों पर कोड समीक्षा करता हूं जो हमारे डेटाबेस को प्रभावित करते हैं। मैं अपने अनुभव का लाभ उठाते हुए एक SQL कथन को शीघ्रता से देखता हूँ जो कि नया है या यह तय करने के लिए महत्वपूर्ण रूप से संशोधित किया गया है कि क्या मुझे आगे SQL की जाँच करने की आवश्यकता है। उदाहरण के लिए, यदि किसी टेबल पर कोई क्वेरी PK या Unique कॉलम पर खोज रही है, तो मुझे पूरा यकीन है कि यह तेजी से चलेगी। यदि SQL कथन मुझे संदेहास्पद लगता है, तो मैं इसे स्पष्टीकरण योजना और/या समय विवरण के माध्यम से चलाऊंगा ताकि यह सुनिश्चित हो सके कि यह पर्याप्त रूप से चलता है।
- मेरे पास Oracle का एंटरप्राइज़ मैनेजर है जो मुझे हमारे टेस्ट डेटाबेस सिस्टम में संसाधन विवाद के लिए सचेत करता है। कोड समीक्षा के दौरान मेरे द्वारा याद किए गए किसी भी SQL कथन को कभी-कभी यहां पाया जा सकता है। अगर मुझे संसाधन विवाद की चेतावनी मिलती है, तो मैं आगे बढ़ूंगा और देखूंगा कि कोई SQL कथन या दो समस्या पैदा कर रहा है या नहीं। SQL कथनों के उत्पादन में आने से पहले उन्हें पकड़ने का यह मेरा आखिरी मौका है।
- मैं Oracle के लिए इग्नाइट का लाभ उठाता हूं। यह उत्पाद Confio का है, लेकिन Confio अब Solarwinds का भाग है। आम तौर पर, मैं विक्रेता के उत्पादों को प्लग नहीं करता, लेकिन मैं इस मामले में एक अपवाद बनाऊंगा। इग्नाइट के बारे में मुझे जो चीज पसंद है वह यह है कि मैं इसे हर सोमवार को एक रिपोर्ट ईमेल करता हूं। रिपोर्ट में प्रतीक्षा समय के आधार पर शीर्ष N अपराधी शामिल हैं। इस रिपोर्ट को देखने में मुझे कुछ सेकंड लगते हैं। मैं रिपोर्ट में बड़े सलाखों की तलाश करता हूं। नीचे दिए गए उदाहरण स्क्रीन शॉट में, आप एक नीली पट्टी देख सकते हैं जो तुरंत आपका ध्यान खींच लेती है। दाईं ओर की संख्या एक आईडी मान है और यदि आप उस पर क्लिक करते हैं, तो आप SQL पाठ प्राप्त कर सकते हैं। ट्यूनिंग की आवश्यकता वाले SQL कथनों की पहचान करने का यह एक शानदार तरीका है। यह बहुत तेज़ और बहुत आसान है।
जैसा कि आप देख सकते हैं, मैं समस्याग्रस्त एसक्यूएल को खोजने की कोशिश करता हूं क्योंकि वे विकसित किए जा रहे हैं, जब वे हमारे परीक्षण प्रणाली में होते हैं, और यहां तक कि उनके उत्पादन को हिट करने के बाद भी।