एसक्यूएल - डेटाबेस ट्यूनिंग

डेटाबेस विशेषज्ञ या विशेषज्ञ डेटाबेस प्रशासक बनने में समय लगता है। यह सब विभिन्न डेटाबेस डिजाइन और अच्छे प्रशिक्षण में बहुत अनुभव के साथ आता है।

लेकिन शुरुआती सूची में अच्छे डेटाबेस प्रदर्शन के लिए निम्नलिखित सूची उपयोगी हो सकती है -

  • RDBMS अवधारणाओं अध्याय में इस ट्यूटोरियल में बताए गए 3BNF डेटाबेस डिज़ाइन का उपयोग करें।

  • संख्या-से-वर्ण रूपांतरण से बचें क्योंकि संख्या और वर्ण अलग-अलग तुलना करते हैं और प्रदर्शन में गिरावट की ओर ले जाते हैं।

  • सेलेक्ट स्टेटमेंट का उपयोग करते समय, केवल जो भी जानकारी की आवश्यकता हो उसे प्राप्त करें और अपने सेलेक्ट प्रश्नों में * का उपयोग करने से बचें क्योंकि यह सिस्टम को अनावश्यक रूप से लोड करेगा।

  • उन सभी तालिकाओं पर ध्यान से अपनी अनुक्रमणिकाएँ बनाएँ जहाँ आपके पास बार-बार खोज अभियान हों। उन तालिकाओं पर अनुक्रमणिका से बचें, जहां आपके पास खोज कार्यों की संख्या कम है और सम्मिलित करने और अद्यतन कार्यों की संख्या अधिक है।

  • एक पूर्ण-टेबल स्कैन तब होता है जब WHERE क्लॉज में कॉलम उनके साथ जुड़ा कोई इंडेक्स नहीं होता है। SQL कथन के WHERE क्लॉज में शर्तों के रूप में उपयोग किए जाने वाले स्तंभों पर अनुक्रमणिका बनाकर आप एक पूर्ण-तालिका स्कैन से बच सकते हैं।

  • वास्तविक संख्या और दिनांक / समय मान के साथ समानता ऑपरेटरों से बहुत सावधान रहें। इन दोनों में छोटे अंतर हो सकते हैं जो आंख के लिए स्पष्ट नहीं हैं, लेकिन यह सटीक मिलान को असंभव बनाते हैं, इस प्रकार आपके प्रश्नों को कभी लौटने वाली पंक्तियों से रोकते हैं।

  • विवेकपूर्ण तरीके से पैटर्न का उपयोग करें। LIKE COL% एक मान्य WHERE शर्त है, जो वापस सेट को केवल स्ट्रिंग COL के साथ शुरू होने वाले डेटा के साथ कम करता है। हालाँकि,% Y प्रभावी रूप से मूल्यांकन नहीं किया जा सकता है क्योंकि COL% Y ने लौटे परिणामों को और कम नहीं किया है। मूल्यांकन करने का प्रयास बहुत बड़ा माना जाता है। इस स्थिति में, COL% का उपयोग किया जाता है, लेकिन% Y को फेंक दिया जाता है। उसी कारण से, एक प्रमुख वाइल्डकार्ड% COL प्रभावी रूप से संपूर्ण फ़िल्टर का उपयोग करने से रोकता है।

  • अपने SQL प्रश्नों को ठीक से ट्यून करें (क्वेरीज़ और सबक्वेरीज़), SQL सिंटैक्स की संरचना की जाँच करें, यह जानने के लिए कि क्या आपने अपने टेबल को तेज़ डेटा हेरफेर का समर्थन करने के लिए डिज़ाइन किया है और एक इष्टतम तरीके से क्वेरी लिखी है, जिससे आपके DBMS को डेटा को कुशलता से हेरफेर करने की अनुमति मिलती है ।

  • नियमित आधार पर निष्पादित होने वाले प्रश्नों के लिए, प्रक्रियाओं का उपयोग करने का प्रयास करें। एक प्रक्रिया SQL स्टेटमेंट का एक संभावित बड़ा समूह है। प्रक्रियाओं को डेटाबेस इंजन द्वारा संकलित किया जाता है और फिर निष्पादित किया जाता है। SQL कथन के विपरीत, डेटाबेस इंजन को निष्पादित होने से पहले प्रक्रिया को अनुकूलित करने की आवश्यकता नहीं है।

  • यदि संभव हो तो तार्किक ऑपरेटर या क्वेरी में उपयोग करने से बचें। या अनिवार्य रूप से पर्याप्त आकार की तालिका के खिलाफ लगभग किसी भी क्वेरी को धीमा कर देती है।

  • आप अनुक्रमित ड्रॉप करके बल्क डेटा लोड को अनुकूलित कर सकते हैं। कई हजारों पंक्तियों के साथ इतिहास तालिका की कल्पना करें। उस इतिहास तालिका में एक या एक से अधिक अनुक्रमित होने की संभावना है। जब आप किसी इंडेक्स के बारे में सोचते हैं, तो आप आम तौर पर तेजी से टेबल एक्सेस के बारे में सोचते हैं, लेकिन बैच लोड के मामले में, आप इंडेक्स को छोड़ कर लाभ उठा सकते हैं।

  • बैच लेनदेन करते समय, प्रत्येक रिकॉर्ड बनाने के बाद उन्हें बनाने के लिए रिकॉर्ड बनाने की एक उचित संख्या के बाद COMMIT प्रदर्शन करें।

  • नियमित रूप से डेटाबेस को डीफ़्रैग्मेन्ट करने की योजना बनाएं, भले ही ऐसा करने का मतलब साप्ताहिक दिनचर्या विकसित करना हो।

बिल्ट-इन ट्यूनिंग टूल्स

SQL स्टेटमेंट परफॉर्मेंस को मैनेज करने के लिए Oracle में कई टूल हैं लेकिन उनमें से दो बहुत लोकप्रिय हैं। ये दो उपकरण हैं -

  • Explain plan - टूल उस एक्सेस पथ की पहचान करता है जो SQL स्टेटमेंट निष्पादित होने पर लिया जाएगा।

  • tkprof - SQL स्टेटमेंट प्रोसेसिंग के प्रत्येक चरण के दौरान समय के अनुसार प्रदर्शन को मापता है।

यदि आप ओरेकल में क्वेरी के बीते हुए समय को मापना चाहते हैं, तो आप SQL * प्लस कमांड सेट टाइमिंग ऑन का उपयोग कर सकते हैं।

उपर्युक्त औजारों पर अधिक विवरण और डेटाबेस को डीफ़्रैग्मेन्ट करने के लिए अपने RDBMS प्रलेखन की जाँच करें।