अपने डेटाबेस पर प्रदर्शन ट्यूनिंग करना सबसे आम और फिर भी सबसे महत्वपूर्ण गतिविधि है जो हर डेटाबेस एडमिनिस्ट्रेटर (DBA) को निरंतर और नियमित आधार पर करना चाहिए। विशेषज्ञ सलाह देते हैं कि आप डेटाबेस को अनुकूलित प्रदर्शन के लिए नियमित रूप से फाइन-ट्यून करें। फाइन-ट्यूनिंग उपयोगकर्ताओं को उनकी रिपोर्ट और क्वेरी तेजी से चलाने और परिणाम जल्दी प्राप्त करने में मदद करता है। यह पोस्ट Oracle® डेटाबेस के समस्या निवारण और ट्यूनिंग के लिए कुछ तकनीकों को साझा करता है।
ट्यूनिंग चरण
शुरू करने के लिए, आपको उस क्षेत्र की पहचान करने की आवश्यकता है जहां समस्या हो रही है। संभावित क्षेत्र जो समस्या को ट्रिगर कर सकते हैं उनमें ऑपरेटिंग सिस्टम, डेटाबेस, मेमोरी की कमी, आदि शामिल हैं। एक समस्या क्षेत्र की पहचान करने के बाद, आप अधिकतम लाभ के लिए उस क्षेत्र को ट्यून करने के लिए आगे बढ़ सकते हैं। यह ब्लॉग केवल प्रदर्शन ट्यूनिंग पर केंद्रित है।
Oracle ने DBAs को समस्याओं का निदान करने और प्रदर्शन मुद्दों के निवारण में मदद करने के लिए कुछ टूल दिए हैं। इन टूल्स में ऑटोमैटिक डेटाबेस डायग्नोस्टिक मॉनिटर (ADDM) और ऑटोमैटिक वर्कलोड रिपॉजिटरी (AWR) रिपोर्ट शामिल हैं, जिन्हें आप समस्याग्रस्त समय अवधि के लिए उत्पन्न कर सकते हैं और अपने विश्लेषण में उपयोग कर सकते हैं। आपको टूल्स का उपयोग तिरछे या ट्यून करने योग्य घटकों को देखने के लिए करना चाहिए।
AWR रिपोर्ट में शीर्ष समयबद्ध घटनाएं
AWR एक टूल है जिससे आप एक विशेष इंस्टेंस द्वारा सांख्यिकी रूप में मेमोरी उपयोग को सारांशित करने वाली रिपोर्ट उत्पन्न कर सकते हैं। AWR रिपोर्ट उत्पन्न करने के लिए, sqlplus प्रॉम्प्ट में निम्नलिखित फ़ाइल चलाएं:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql यह एक पूर्व-संग्रहीत टेम्पलेट का उपयोग करके HTML प्रारूप में AWR रिपोर्ट उत्पन्न करता है। AWR रिपोर्ट उत्पन्न करने के बाद, आप AWR रिपोर्ट में शीर्ष समयबद्ध घटनाएं अनुभाग को तुरंत देख सकते हैं, जो समस्या क्षेत्र की पहचान करता है, जैसा कि निम्नलिखित छवि में दिखाया गया है:
ADDM ट्यूनिंग सत्र
आम तौर पर, जब कोई समस्या रिपोर्ट की जाती है, तो DBA केवल उस क्षेत्र का समस्या निवारण कर सकता है या उस विशिष्ट समस्या को हल कर सकता है। हालांकि, यदि समस्या सही ढंग से पहचानी और संबोधित नहीं की जाती है, तो यह भविष्य में बड़ी समस्याओं का कारण बन सकती है। DBA यहां बड़ी तस्वीर को याद कर सकता है। DBAs को डेटाबेस मुद्दों के बारे में एक बड़ी और पूरी तस्वीर प्राप्त करने में मदद करने के लिए, Oracle ने DBAs के लिए एक और टूल, ADDM प्रदान किया है। एक ADDM ट्यूनिंग सत्र मैन्युअल ट्यूनिंग सत्र के समान प्रक्रिया का पालन करता है। निम्नलिखित छवि तुलना दिखाती है:
छवि स्रोत: Oracle 11G प्रदर्शन ट्यूनिंग प्रशिक्षण मैनुअल
SQL या Oracle Enterprise Manager (OEM) के माध्यम से ADDM रिपोर्ट प्राप्त करें। निम्नलिखित छवि नमूना SQL दिखाती है:
खराब SQL और निष्पादन योजनाएं
AWR या ADDM रिपोर्ट द्वारा खराब SQL/SQLID के अनुभागों की पहचान करने के बाद, आप उनके बारे में अधिक जानकारी एकत्र करने के लिए DBMS_XPLAN का उपयोग कर सकते हैं। DBMS_XPLAN पैकेज निम्नलिखित टेबल फ़ंक्शन प्रदान करता है जिनका उपयोग आप निष्पादन (exec) योजना को पुनर्प्राप्त और प्रदर्शित करने के लिए कर सकते हैं:
DISPLAY DISPLAY_AWR select plan_table_output from table (DBMS_XPLAN.DISPLAY_AWR('fs22b3fgfh8xc')); DISPLAY_CURSOR निम्नलिखित छवि EXPLAIN PLAN कमांड से नमूना आउटपुट दिखाती है और पहचानती है कि क्वेरी पूर्ण तालिका स्कैन का उपयोग कर रही है या कुछ इंडेक्स का उपयोग करके डेटा को संकीर्ण कर रही है:
ADDM रिपोर्ट दर्शाती है कि क्या कुछ नए इंडेक्स बनाकर कोई प्रदर्शन लाभ प्राप्त किया जा सकता है। आप OEM से SQL ट्यूनिंग सलाहकार भी चला सकते हैं ताकि क्वेरी को फाइन-ट्यून किया जा सके और संभवतः एक बेहतर निष्पादन योजना का उपयोग किया जा सके। ज्यादातर समय, समस्याग्रस्त SQL के लिए एक बेहतर योजना का उपयोग करने से प्रमुख प्रदर्शन समस्या हल हो जाती है।
SQL ट्यूनिंग सलाहकार
SQL ट्यूनिंग सलाहकार SQL स्टेटमेंट का विश्लेषण करने और SQL प्राधिकरण ID (SQLID) का उपयोग करके विश्लेषण और समाधान सुझाकर प्रदर्शन सिफारिशें प्राप्त करने में मदद करता है। SQL ट्यूनिंग सलाहकार निम्नलिखित स्रोतों का विश्लेषण करता है:
- शीर्ष गतिविधि: वर्तमान में सक्रिय शीर्ष SQL स्टेटमेंट का विश्लेषण करता है।
- SQL ट्यूनिंग सेट: आपके द्वारा प्रदान किए गए SQL स्टेटमेंट के सेट का विश्लेषण करता है।
- ऐतिहासिक SQL (AWR): AWR स्नैपशॉट द्वारा एकत्र किए गए स्टेटमेंट से SQL स्टेटमेंट का विश्लेषण करता है।
निम्नलिखित स्क्रीनशॉट कुछ उदाहरण दिखाते हैं:
लंबे समय तक चलने वाले अनुरोध
Oracle eBusiness Suite डेटाबेस में, लंबे समय तक चलने वाले अनुरोधों का मुद्दा ज्यादातर सामने आता है जहां कुछ समवर्ती अनुरोध चलते रहते हैं। इसे हल करने के लिए, आपको समवर्ती अनुरोधों से जुड़े डेटाबेस सत्र के बारे में अधिक जानकारी एकत्र करने की आवश्यकता है। निम्नलिखित छवि इस जानकारी को एकत्र करने के चरण दिखाती है
Oracle डेटाबेस मेमोरी पैरामीटर
AWR रिपोर्ट की समीक्षा करने के बाद, एक DBA आसानी से उस कैश की पहचान कर सकता है जिसे फाइन-ट्यूनिंग की आवश्यकता है क्योंकि उस कैश के लिए कैश हिट अनुपात अन्य कैश की तुलना में कम है। निम्नलिखित छवि कुछ शीर्ष डेटाबेस पैरामीटर दिखाती है जिन्हें आपको इंस्टेंस-वाइड मेमोरी ट्यूनिंग के लिए विचार करना चाहिए।
छवि स्रोत: https://ora-performance-tuning.blogspot.com/2014/02/automatic-shared-memory-management.html
आमतौर पर देखे जाने वाले प्रतीक्षा घटनाएं
निम्नलिखित तालिका कुछ सामान्य प्रतीक्षा घटनाओं और उनके संभावित कारणों को दिखाती है:
(
तालिका स्रोत: Oracle प्रदर्शन ट्यूनिंग 11G OCP प्रशिक्षण मैनुअल, अध्याय 20, पृष्ठ 24
शीर्ष 10 ट्यूनिंग मुद्दे
ग्राहक आमतौर पर निम्नलिखित शीर्ष 10 ट्यूनिंग मुद्दों का सामना करते हैं:
-
खराब कनेक्शन प्रबंधन: डेवलपर्स एप्लिकेशन में डेटाबेस से कनेक्ट करने के लिए कोड लिखते हैं या डेटाबेस से डेटा लाने के लिए क्वेरी चलाते हैं। डेटा प्राप्त होने और कुछ और आवश्यक न होने के बाद, कोड को डेटाबेस से कनेक्शन बंद करना चाहिए। हालांकि, यह अक्सर नहीं होता है, जिससे डेटाबेस में निष्क्रिय सत्रों की संख्या बढ़ जाती है। ये सत्र कीमती संसाधनों का उपयोग करते हैं जिनका उपयोग अन्य सक्रिय कनेक्शन के लिए किया जा सकता था।
-
कर्सर और शेयर्ड पूल का खराब उपयोग: एक कर्सर एक डेवलपर के शस्त्रागार में एक उपकरण है जो ज्यादातर अप्रयुक्त रहता है। कर्सर के बिना, Oracle को हर बार चलाने पर कोड को हार्ड पार्स करना पड़ता है। यह बार-बार चलने वाले SQL क्वेरी के प्रदर्शन को बहुत प्रभावित करता है। एक DWA इंस्टेंस दक्षता प्रतिशत - Execute to Parse %. AWR रिपोर्ट अनुभाग को देखकर इस समस्या की पहचान कर सकता है।
-
खराब SQL: जिस तरह से एक SQL क्वेरी लिखी जाती है (डेटा लाने के लिए जॉइन कंडीशन के साथ) उस SQL के प्रदर्शन को निष्पादित होने के बाद महत्वपूर्ण रूप से प्रभावित करती है। आपको बड़ी तालिकाओं के लिए पूर्ण तालिका स्कैन से बचना चाहिए। SQL तैयार होने के बाद, डेवलपर्स और DBAs को उस SQL पर एक एक्सप्लेन प्लान चलाना चाहिए ताकि डेटाबेस में इसे चलाने की लागत समझी जा सके। कर्सर, बाइंड वेरिएबल, और इंडेक्स का उपयोग करके, आप दक्षता बढ़ा सकते हैं।
-
गैर-मानक इनिशियलाइज़ेशन पैरामीटर का उपयोग: DBAs को हमेशा केवल मानक या अनुशंसित इनिशियलाइज़ेशन पैरामीटर का उपयोग करना चाहिए। गैर-मानक इनिशियलाइज़ेशन पैरामीटर का उपयोग केवल तब करें जब Oracle सर्विस रिक्वेस्ट (SR) द्वारा सुझाया गया हो।
-
डेटाबेस I/O गलत होना: जब एक DBA डेटाबेस हार्डवेयर चुन रहा होता है तो उसे डेटाबेस को कई डिस्क पर वितरित करने का प्रयास करना चाहिए और नेटवर्क टीम को डेटाबेस सर्वर से अंतिम उपयोगकर्ताओं तक डेटा यात्रा की गति और वापस के बारे में चर्चा में शामिल करना चाहिए। एक DBA को किसी भी बॉटलनेक या प्रदर्शन समस्या से बचने के लिए नेटवर्क स्विच और राउटर की गति को ध्यान में रखना चाहिए।
-
रेडो लॉग सेटअप समस्याएं: रेडो लॉग रेडो बफर से डेटा स्टोर करने के लिए आवश्यक हैं ताकि किसी भी क्रैश की स्थिति में Oracle लेनदेन को फिर से कर सके। यदि रेडो लॉग आकार अपर्याप्त है, तो डेटाबेस में कई स्विच हो सकते हैं जो प्रदर्शन समस्याओं का कारण बनते हैं। यह आर्काइव जनरेशन पर लोड भी बढ़ाता है।
-
बफर कैश में डेटा ब्लॉकों का क्रमांकन: यह फ्री लिस्ट ग्रुप या अनडू सेगमेंट की कमी के कारण होता है। यह स्थिति बड़े सक्रिय उपयोगकर्ता आधार वाले इन्सर्ट-हैवी डेटाबेस के लिए उत्पन्न होती है लेकिन कम अनडू सेगमेंट होते हैं, जो अंततः प्रदर्शन समस्याओं का कारण बनते हैं।
-
पूर्ण तालिका स्कैन: एक्सप्लेन प्लान चलाकर क्वेरी में पूर्ण तालिका स्कैन की जांच करें। आम तौर पर, एक क्वेरी जो पूर्ण तालिका स्कैन करती है, खराब SQL डिजाइन को दर्शाती है, जिसे इंडेक्स का उपयोग करके और आवश्यक डेटा को संकीर्ण करके ठीक किया जा सकता है। कुछ मामलों में, पूर्ण तालिका स्कैन फायदेमंद हो सकते हैं, विशेष रूप से छोटी तालिकाओं के मामले में।
-
रिकर्सिव SQL: रिकर्सिव SQL डेवलपर्स के लिए वरदान हो सकता है यदि सही ढंग से उपयोग किया जाए, लेकिन यह दोधारी तलवार हो सकता है। सही ढंग से किया गया, यह आउटपुट को कुशलता से प्रदान करता है। अन्यथा, यह डेटाबेस के प्रदर्शन को बहुत प्रभावित करता है।
-
इन-डिस्क सॉर्टिंग: इन-डिस्क सॉर्टिंग डेटाबेस के लिए एक बहुत महंगा कार्य है। यह खराब SQL डिजाइन और खराब अनुकूलन को इंगित करता है। आप इंस्टेंस एक्टिविटी स्टैट्स - सॉर्ट्स (डिस्क) AWR रिपोर्ट अनुभाग में इस मुद्दे की पहचान कर सकते हैं।
निष्कर्ष
हालांकि DBAs को प्रदर्शन ट्यूनिंग के लिए विभिन्न क्षेत्रों पर विचार करना चाहिए, डेटाबेस की दुनिया में, प्रदर्शन ट्यूनिंग डेटाबेस और एप्लिकेशन डिजाइन चरण से शुरू होती है। प्रदर्शन ट्यूनिंग परिप्रेक्ष्य को ध्यान में रखकर डिजाइन किए गए डेटाबेस और एप्लिकेशन, प्रदर्शन ट्यूनिंग विचार के बिना डिजाइन किए गए एप्लिकेशन की तुलना में अधिक स्केलेबल होते हैं।
इस ब्लॉग में शामिल प्रदर्शन ट्यूनिंग बिंदु सिर्फ हिमशैल का सिरा हैं। मैं साथी DBAs को सलाह देता हूं कि वे इस विषय पर अधिक पढ़ते रहें ताकि डेटाबेस प्रदर्शन का समग्र ध्यान रख सकें।
टिप्पणी करने या प्रश्न पूछने के लिए फीडबैक टैब का उपयोग करें।
हमारी डेटाबेस सेवाओं के बारे में अधिक जानें।
Rackspace को Oracle उत्पादों का व्यापक ज्ञान है। जानें कि हम आपके Oracle निवेश को कैसे अधिकतम कर सकते हैं।