मेमोरी ट्यूनिंग Oracle मेमोरी घटकों को मुफ्त मेमोरी वितरित या पुन:आवंटित करता है। यह मुख्य रूप से Oracle प्रश्नों पर प्रदर्शन ट्यूनिंग के लिए उपयोग किया जाता है।
आजकल, प्रत्येक क्लाइंट के लिए एक प्रमुख मुद्दा डेटाबेस के प्रदर्शन से संबंधित है। यह ब्लॉग बताता है कि डेटाबेस में मेमोरी को कैसे ट्यून किया जाए जिसके परिणामस्वरूप डेटाबेस में उच्च प्रदर्शन होता है। निम्नलिखित विभिन्न प्रकार की मेमोरी ट्यूनिंग विधियां उपलब्ध हैं:ओएस स्तर की प्रक्रिया ट्यूनिंग, सीपीयू ट्यूनिंग, रैम ट्यूनिंग, डेटाबेस ट्यूनिंग आदि। इस ब्लॉग में I डेटाबेस में मेमोरी ट्यूनिंग के बारे में चर्चा करेंगे।
डेटाबेस मेमोरी ट्यूनिंग:
डेटाबेस के लिए मेमोरी ट्यूनिंग सिस्टम ग्लोबल एरिया (SGA) ट्यूनिंग के अलावा और कुछ नहीं है। SGA ट्यूनिंग के संबंध में प्रमुख घटक सूची निम्नलिखित हैं। आइए इनमें से प्रत्येक घटक को विस्तार से देखें:
- पूल रखें
- डिफ़ॉल्ट पूल, रीसायकल पूल, स्ट्रीम पूल
- DB बफ़र कैश:मुफ़्त बफ़र, संशोधित बफ़र, पिन किए गए बफ़र
- साझा पूल
पूल रखें:
कुछ पैकेज ऐसे होते हैं जो रोजाना इस्तेमाल किए जाते हैं। प्रदर्शन बढ़ाने के लिए, आपको उन पैकेजों को SGA में रखना होगा। प्रक्रिया की सहायता से आप उस पैकेज को कीप पूल में रख सकते हैं। यदि SGA को आवंटित स्थान शटडाउन हो जाता है, तो SGA को RAM में पुनः आबंटित करना होगा, उस समय पैकेज को कीप पूल में रखने के बाद भी यह होगा बह गया। अगली बार जब आप उस पैकेज को फिर से शुरू और निष्पादित करेंगे, तो पैकेज तब तक कीप पूल में रहेगा जब तक आप डेटाबेस को बंद नहीं करते। ऐसा करके हम I/O को कम करते हैं।
हिट राशन की मदद से, आप यह सुनिश्चित कर सकते हैं कि पार्स कोड निष्पादन योजना लाइब्रेरी कैश से फ्लश हो रही है। लाइब्रेरी कैश के लिए हिट अनुपात> 85% होना चाहिए।
स्ट्रीम पूल डेटा पंप के लिए बफर बनाने के लिए उपयोग किया जाता है। प्रदर्शन को बढ़ाने के लिए दैनिक कुछ टेबल (छोटी टेबल) का उपयोग किया जाता है। उन तालिकाओं को SGA (कीप पूल) में रखना बेहतर है। यह प्रदर्शन को बढ़ाएगा जहां आप डिस्क से डेटा नहीं ला रहे हैं, बल्कि मेमोरी से ही। बड़ी टेबल के लिए हमारे पास रीसायकल पूल है
डिफ़ॉल्ट रूप से, जब भी हम उन तालिकाओं (छोटी तालिकाओं) का चयन करते हैं जो ब्लॉक के रूप में डेटा बफर कैश में प्राप्त की जाती हैं और यह डिफ़ॉल्ट पूल में रहती हैं। . जब आप अन्य तालिकाओं का चयन करते हैं तो यह डिफ़ॉल्ट पूल फ्लश हो जाता है। यदि आपके पास बफ़र में जगह है तो यह ठीक है, यदि नहीं, तो यह नई तालिकाओं को समायोजित करने के लिए पिछली तालिकाओं को फ्लश करेगा। प्रदर्शन बढ़ाने के लिए, डिफ़ॉल्ट पूल के बजाय छोटे तालिकाओं को पूल में रखें . डेटा बफर कैश के लिए हिट अनुपात> 95% होना चाहिए। यदि यह 95% से कम है तो हमें डेटाबेस बफर कैश का आकार बदलना होगा।
मेमोरी ट्यूनिंग में प्रमुख हिस्सा डेटाबेस बफर कैश और साझा पूल है, जो मेमोरी में पर्याप्त डेटा बनाए रखने के लिए उपयोगी है। SGA ट्यूनिंग के लिए सभी को डेटाबेस बफर कैश में बुनियादी संचालन जानने की जरूरत है। ब्लॉग के अंत में, मैं मेमोरी को ट्यून करने के लिए हिट अनुपात की गणना करने के लिए कुछ नमूना SQL क्वेरी उदाहरण साझा करूंगा।
मुफ़्त बफ़र
संशोधित डेटा छवि (डेटा) को बदलने से पहले प्राप्त किए गए ब्लॉक और डेटा बफर कैश में कॉपी का उपयोग करता है। इन बफ़र्स को फ्री बफ़र्स कहा जाता है। नीचे दी गई छवि से, 1000 मान वाली डिस्क या 1000 मान वाली मेमोरी समान हैं। नीचे की छवि फ्री बफर दिखाती है:
संशोधित बफ़र्स
संशोधित बफ़र्स को डर्टी बफ़र्स भी कहा जाता है। डिस्क में छवि और डेटा के डेटा बफ़र कैश में छवि को बदल दिया गया है, लेकिन इन बफ़र्स या डेटा ने अभी तक डिस्क पर नहीं लिखा है। इन बफ़र्स को डर्टी बफ़र्स कहा जाता है।
निम्न छवि संशोधित बफ़र दिखाती है:
पिन किए गए बफ़र
डीबी बफर कैश में डेटा हर बार बदल रहा होगा। सर्वर प्रक्रिया आगे के लेनदेन के लिए इन संशोधित डेटा का चयन करेगी। ये चयनित डेटा पिन किए गए डेटा या बफर के अलावा और कुछ नहीं है।
भौतिक पढ़ता है :Oracle डेटा I/O निष्पादित करके उस oracle को डिस्क से पढ़ने को रोकता है।
तार्किक पढ़ता है :यदि Oracle डेटाबेस बफर कैश से डेटा को पढ़कर किसी अनुरोध को संतुष्ट कर सकता है तो यह तार्किक रीड के अंतर्गत आता है।
DB ब्लॉक हो जाता है :जब Oracle डेटाबेस बफर कैश में आवश्यक डेटा ढूंढता है, तो Oracle जाँचता है कि डेटा प्रतिबद्ध है या नहीं, यदि प्रतिबद्ध है तो बफ़र्स से प्राप्त करता है। इन बफ़र्स को DB बफ़र गेट्स के नाम से भी जाना जाता है।
लगातार पढ़ना :डेटाबेस बफर कैश में, जो ब्लॉक मौजूद हैं, संशोधित हैं लेकिन प्रतिबद्ध नहीं हैं। इसलिए, डेटा को पूर्ववत डेटाफ़ाइल से प्राप्त किया जाना चाहिए।
db_buffer_cache का लक्ष्य तार्किक पठन बढ़ाना है।
सॉफ्ट पार्सिंग :यदि हमारे पास पहले से ही लाइब्रेरी कैश में निष्पादन योजना उपलब्ध है, तो यह डिस्क पर नहीं जाएगी, यह मौजूदा निष्पादन योजना से एक पार्स योजना (पार्स कोड) बनाएगी। इसे सॉफ्ट पार्स कहते हैं।
कठिन पार्सिंग :एक पार्स कोड बनाने के लिए, यह जांच करेगा कि कोई निष्पादन योजना उपलब्ध है, यदि निष्पादन योजना उपलब्ध है तो यह सॉफ्ट पार्स के साथ जाती है। यदि निष्पादन योजना उपलब्ध नहीं है, तो यह हार्ड पार्स करता है जिसका अर्थ है कि यह डिस्क पर जाता है।
साझा पूल :साझा पूल लाइब्रेरी कैश और डेटा डिक्शनरी कैश का संयोजन है।
लाइब्रेरी कैश: लाइब्रेरी कैश का लक्ष्य सॉफ्ट पार्सिंग को बढ़ाना है
लक्ष्य प्राप्त करने के तरीके:
-
बाइंड वैरिएबल का उपयोग करना
-
संग्रहीत कार्यविधियाँ लिखकर
-
हिट अनुपात (साझा पूल आकार में वृद्धि न करने पर> 85% होना चाहिए)
-
DBMS_Shared_pool (पैकेज) SQL क्वेरी का उपयोग करके मेमोरी को ट्यून करने में हिट अनुपात प्रमुख भूमिका निभाता है।
डेटा डिक्शनरी कैशे :इसे रो कैश भी कहा जाता है। डेटा डिक्शनरी कैश हिट अनुपात>85% होना चाहिए, अगर साझा पूल आकार में वृद्धि नहीं होती है।
हिट अनुपात की गणना करने के लिए निम्नलिखित नमूना क्वेरी हैं।
select (sum(pinhits)/sum(pins))*100 as lchitratio from v$librarycache;
select namespace, pins, pinhits, reloads from v$librarycache order by namespace;
Dbms_Shared_pool का पैकेज प्राप्त करने के लिए कृपया @$ORACLE_HOME/rdbms/admin/dbmspool.sql
चलाएं
select namespace, kept, locks, executions from v$db_object_cache where type like '%PROC%';
डेटा डिक्शनरी कैश हिट अनुपात:
select (sum(gets-getmisses-fixed))/sun(gets) as "ddchitratio" from v$rowcache;
लॉग बफ़र कैश फिर से करें:
नाम चुनें, मान v$sysstat
. से जहां नाम जैसे 'redo%';
मुझे आशा है कि आपको ऊपर चर्चा की गई बातें उपयोगी लगी होंगी और अब आप आसानी से डेटाबेस में मेमोरी को ट्यून कर सकते हैं।
कोई टिप्पणी करने या प्रश्न पूछने के लिए प्रतिक्रिया टैब का उपयोग करें। आप हमारे साथ बातचीत भी शुरू कर सकते हैं।