कार्यक्षेत्र मेमोरी आंतरिक


13

SQL Server 2008 इंटर्न और ट्रबलशूटिंग (इलिनोइस में स्थानीय पुस्तकालय से उधार लिया गया) पर मेरी किताबें पढ़ने के अनुसार, क्रिश्चियन बोल्टन, ब्रेंट ओजर आदि द्वारा मैं SQL सर्वर पर समझ और पुष्टि प्राप्त करने की कोशिश कर रहा हूं और वेब पर बहुत खोज कर रहा हूं, अगर किसी को सराहना होगी मेरी समझ की पुष्टि या सुधार कर सकता है।

प्रत्येक क्वेरी या ऑपरेशन जिसे क्वेरी मेमोरी अनुदान की आवश्यकता होती है उसे कार्य स्थान मेमोरी की आवश्यकता होगी। सॉर्ट, हैश मैच जॉइन, पैरेललिज्म (इस बारे में निश्चित नहीं), बल्क इंसर्ट (सुनिश्चित नहीं), इंडेक्स रीबिल्ड आदि का उपयोग करते हुए सामान्य क्वेरी में क्वेरी वर्कस्पेस मेमोरी की आवश्यकता होगी।

कार्यक्षेत्र मेमोरी SQL सर्वर बफर पूल का हिस्सा है (इसे बफर पूल के हिस्से के रूप में आवंटित किया गया है) और अधिकतम कार्यक्षेत्र मेमोरी बफर पूल को आवंटित मेमोरी का 75% है। डिफ़ॉल्ट रूप से एक भी क्वेरी 25% से अधिक कार्यक्षेत्र मेमोरी (SQL 2008 / SQL 2012 में - संसाधन गवर्नर डिफ़ॉल्ट वर्कलोड समूह द्वारा नियंत्रित बॉक्स) से बाहर नहीं निकल सकती।

मेरी समझ की पुष्टि करना

1) 48 जीबी रैम और अधिकतम सर्वर मेमोरी के साथ 40 जीबी तक कॉन्फ़िगर की गई प्रणाली का मतलब है कि अधिकतम कार्यक्षेत्र मेमोरी 30 जीबी तक सीमित है और एक क्वेरी में 10 जीबी से अधिक कार्यक्षेत्र मेमोरी (क्वेरी मेमोरी) नहीं मिल सकती है। इसलिए यदि आपके पास एक बिलियन पंक्तियों के साथ काम करने वाली एक बुरी क्वेरी है जो बड़े पैमाने पर हैश ज्वाइन कर रही है और 10 जीबी से अधिक मेमोरी (कार्यक्षेत्र मेमोरी) की आवश्यकता है, तो क्या यह मेमोरी ग्रांट कतार या डिस्क पर राइट स्पिल के माध्यम से जाने की भी परवाह करेगा?

2) यदि एक बड़े पैमाने पर सॉर्ट ऑपरेशन करने वाली क्वेरी को 5 एमबी की कार्यक्षेत्र मेमोरी असाइन की गई है और क्वेरी के क्वेरी निष्पादन के दौरान यदि क्वेरी ऑप्टिमाइज़र को पता चलता है कि खराब आँकड़ों या अनुपलब्ध अनुक्रमों के कारण इस क्वेरी को वास्तव में 30 एमबी कार्यक्षेत्र मेमोरी की आवश्यकता होगी तुरंत tempdb के लिए फैल जाएगा। यदि निष्पादन के दौरान सिस्टम में कार्यक्षेत्र मेमोरी की प्रचुरता उपलब्ध है, तो एक बार क्वेरी निष्पादन के दौरान दिए गए कार्यक्षेत्र मेमोरी से अधिक हो जाती है, तो उसे डिस्क पर फैलाना होगा। क्या मेरी समझ सही है?

जवाबों:


13

यह भी इस स्मृति अनुदान कतार के माध्यम से जाने के लिए या डिस्क के लिए सही दूर फैल जाएगा परवाह है?

यह उस तरह से काम नहीं करता है। एक बार एक योजना चुने जाने के बाद जिसे मेमोरी अनुदान की आवश्यकता होती है, क्वेरी को अनुदान प्राप्त करना होगा ताकि वह कतार से गुजर सके। स्पिलिंग, यदि कोई हो, निष्पादन चक्र में बहुत बाद में होता है। एक क्वेरी अनुदान के बजाय w / o से आगे जाने का फैसला नहीं कर सकती है। इसे अनुदान और, बेस डॉन प्राप्त करना चाहिए जो निष्पादन शुरू करते हैं। यदि अनुदान अपर्याप्त है (खराब अनुमान के कारण या अनुरोध के मुकाबले बहुत कम अनुदान प्राप्त करने के कारण), तो क्वेरी को फैलाने के लिए मजबूर किया जाएगा।

यदि क्वेरी ऑप्टिमाइज़र को पता चलता है कि खराब आँकड़ों या अनुपलब्ध अनुक्रमों के कारण

कड़ाई से बोलना आशावादी नहीं है, क्वेरी निष्पादन है। क्वेरी ऑप्टिमाइज़र की योजना को तय करने में केवल एक कहावत है, लेकिन एक बार योजना को चुनने और निष्पादन में लॉन्च करने के बाद ऑप्टिमाइज़र तस्वीर से बाहर हो जाता है। भी, 'लापता अनुक्रमित' यहाँ कोई भूमिका नहीं निभाते हैं। एक अनुपलब्ध सूचकांक एक बुरी योजना को बाध्य कर सकता है, लेकिन यह प्रभावित नहीं कर सकता है कि उस 'बुरी' योजना को कैसे निष्पादित किया जाता है क्योंकि उस योजना को वास्तव में क्या सूचकांक मौजूद है, इस पर विचार करते हुए बनाया गया था ताकि यह पता चल सके कि यह वास्तव में क्या कर सकता है और क्या नहीं कर सकता है। स्पिल्स लगभग हमेशा खराब अनुमानों के कारण होते हैं, अर्थात। ऑप्टिमाइज़र और निष्पादन में खराब आँकड़े या खराब कार्डिनैलिटी आकलन एल्गोरिदम (यह वास्तव में जटिल हो जाता है यदि आप विवरणों में खोदते हैं तो मैं यहां रुकूंगा)।

यदि निष्पादन के दौरान सिस्टम में कार्यक्षेत्र मेमोरी की प्रचुरता उपलब्ध है, तब भी जब क्वेरी निष्पादन के दौरान दिए गए कार्यक्षेत्र मेमोरी से अधिक हो जाती है, तो उसे डिस्क पर फैलाना होगा

दुर्भाग्य से हाँ। हालाँकि ऑप्टिमाइज़र को एक योजना के साथ आना चाहिए जो उपलब्ध रैम का लाभ उठाता है।

मैं पढ़ने की सलाह देता हूं कि SQL सर्वर मेमोरी अनुदान को समझना इस विषय पर एक विस्तृत अंतर है।


4
Remus Rusanu (MSFT) मुझे आपके ब्लॉग पोस्ट में उन वेब सर्च रिलेटेड के दौरान भी देखा गया, जिन्हें ऑपरेटर्स को क्वेरी मेमोरी ग्रांट की आवश्यकता होती है। धन्यवाद, आप इस मंच का समर्थन करने वाले एक सच्चे रत्न हैं।
SQL लर्नर


रेमस, एडम मैकनिक से PASS शिखर सम्मेलन बहुत गहन है और कार्यक्षेत्र मेमोरी से संबंधित किसी भी प्रश्न को स्पष्ट करता है।
SQL लर्नर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.