यह एक महान सवाल है और मैं प्रतिक्रियाओं को आकर्षक लगता हूं। मैं ओरेकल डीबीए के रूप में इस पर टिप्पणी करने जा रहा हूं और मेरे उत्तर ओरेकल डेटाबेस के लिए विशिष्ट हैं। यह एक बड़ी गलती है जो बहुत से लोग ओरेकल के साथ काम करते समय करते हैं। मुझे यकीन नहीं है कि यह अन्य अनुप्रयोगों पर भी लागू होता है। यह ऑफ-टॉपिक नहीं है, लेकिन इसका मतलब एक विशेष उत्तर के रूप में है।
जब आप ओरेकल के साथ प्रदर्शन को ट्यून करते हैं, तो आप वास्तव में बाधाओं को दूर करना चाहते हैं। हालांकि हम में से अधिकांश यह नहीं कहते हैं, यह बाधाओं के सिद्धांत पर आधारित है: https://en.wikipedia.org/wiki/Theory_of_constraints
स्मृति आपकी अड़चन नहीं हो सकती है। ओरेकल में मेमोरी को प्रबंधित करने के लिए जटिल तंत्र हैं और सिर्फ बढ़ती हुई मेमोरी वास्तव में चीजों को धीमा कर सकती है अगर अन्य क्षेत्र हैं जहां अड़चन है। मैं आपको एक उदाहरण देता हूं जो बहुत आम है।
क्वेरीज़ धीमी लग रही हैं। आम सहमति अगर हम रैम को बढ़ाते हैं, तो हमें प्रश्नों की प्रतिक्रिया समय बढ़ाना चाहिए क्योंकि मेमोरी डिस्क से तेज है। खैर ... यह है कि Oracle डेटा के लिए स्मृति प्रबंधन को कैसे संभालता है। Oracle में विभिन्न प्रकार के मेमोरी लोकेशन होते हैं जो विशिष्ट कर्तव्यों के लिए आवंटित किए जाते हैं। तो आप इन यादों को बढ़ा सकते हैं। डेटा के लिए उपयोग किए जाने वाले क्षेत्र को 'बफर कैश' कहा जाता है। यह लिंक की गई सूचियों की एक श्रृंखला है (उनमें से प्रत्येक संस्करण के साथ संख्या बढ़ जाती है)। जब भी किसी क्वेरी के दौरान डिस्क पर एक ब्लॉक पाया जाता है, तो उस पर चिपकाने के लिए कौन सी सूची निर्धारित की जाए, इस पर एक हैश एल्गोरिथ्म चलाया जाता है। सूची में इसे कहां रखा जाए यह एक टच काउंट एल्गोरिथ्म (ओरेकल सपोर्ट साइट पर समझाया गया) पर आधारित है। इसलिए आपको इसे प्राप्त करने के लिए भुगतान करना होगा ... यह वास्तव में महत्वपूर्ण नहीं है)।
जब आप एक क्वेरी चलाते हैं, तो Oracle उस समय आपके द्वारा खोजी गई बफ़र श्रृंखला पर एक कुंडी निकालता है। यह LATCH (ध्यान दें: यह एक लॉक नहीं है। Google "कुंडी" यदि आपको अंतर नहीं पता है) आपके पढ़ने की अवधि के लिए उस श्रृंखला के अन्य सभी कार्यों को अवरुद्ध करता है। तो यह पढ़ता है और लिखता है (यह ओरेकल का दावा ताला पूरी तरह से अलग नहीं है की तुलना में अलग है)।
यह आवश्यक है क्योंकि जब आप श्रृंखला में ब्लॉक पढ़ते हैं, तो ओरेकल इसे इस आधार पर स्थानांतरित करता है कि यह कितनी बार 'अनुरोध' है। अधिक बार अनुरोध किए गए ब्लॉकों को शीर्ष पर ले जाया जाता है और कम अक्सर अनुरोध किए गए ब्लॉक नीचे और वृद्ध बाहर छोड़ दिए जाते हैं। आपके पास लिंक किए गए सूची को पढ़ने वाले 2 सत्र नहीं हो सकते हैं और चारों ओर बढ़ते हुए ब्लॉक हो सकते हैं या आप ऐसे बिंदुओं को मारेंगे जो गैर-मौजूद स्थानों पर इंगित करते हैं।
जब आप मेमोरी का आकार बढ़ाते हैं, तो आप प्रत्येक लिंक की गई सूची के आकार को बढ़ाते हैं। इससे सूची को पढ़ने में लगने वाला समय बढ़ जाता है। एक एकल खराब क्वेरी या जटिल क्वेरी जुड़े सूचियों को हजारों या लाखों पढ़ सकते हैं। प्रत्येक पढ़ा तेज है, लेकिन उनमें से संख्या ले जाया जाता है और ये अन्य सत्रों को अवरुद्ध करेगा। ओरेकल इसे 'लॉजिकल आईओ' (या बफर गेट या कुछ अन्य सामान) कहता है। यह लिंगो ओरेकल के लिए विशिष्ट है और आईटी के अन्य हिस्सों में इसका मतलब कुछ और हो सकता है)।
इसलिए, यदि सूची लंबी है और आपके पास वास्तव में खराब एसक्यूएल है, तो SQL स्टेटमेंट उनके लैच को लंबे समय तक पकड़ेंगे। बढ़ती स्मृति कभी-कभी REDUCE प्रदर्शन कर सकती है। अधिकांश समय, ऐसा नहीं होगा। लोग बहुत पैसा खर्च करेंगे और कोई फायदा नहीं होगा। कहा जा रहा है, ऐसे समय होते हैं जब आपको बफ़र कैश में अधिक मेमोरी की आवश्यकता होती है, लेकिन आपको यह जानने के लिए अड़चन को ठीक से पहचानना होगा कि क्या यह उचित है। मैं इस पोस्ट में इसका विश्लेषण कैसे करें, इस पर चर्चा नहीं कर सकता। DBA फ़ोरम देखें। कुछ लोग वहां इसकी चर्चा करते हैं। बल्कि जटिल है।
क्या किसी के पास सॉफ्टवेयर के अन्य टुकड़ों के साथ विशिष्ट उदाहरण हैं जहां ऐसा हो सकता है? Go द गोल ’नामक एक भयानक व्यवसायिक पुस्तक है जो एक कारखाने में बाधाओं को कम करने पर चर्चा करती है। यह प्रक्रिया बहुत कुछ वैसा ही है जैसा कि प्रदर्शन के मुद्दों का मूल्यांकन करते समय ओरेकल डीबीए करते हैं। यह अक्सर एमबीए कार्यक्रमों में मानक पढ़ने है। आईटी व्यवसायों के लिए पढ़ना बहुत मूल्यवान है।
https://en.wikipedia.org/wiki/Eliyahu_M._Goldratt