SQL Server 2008 इंटर्न और ट्रबलशूटिंग (इलिनोइस में स्थानीय पुस्तकालय से उधार लिया गया) पर मेरी किताबें पढ़ने के अनुसार, क्रिश्चियन बोल्टन, ब्रेंट ओजर आदि द्वारा मैं SQL सर्वर पर समझ और पुष्टि प्राप्त करने की कोशिश कर रहा हूं और वेब पर बहुत खोज कर रहा हूं, अगर किसी को सराहना होगी मेरी समझ की पुष्टि या सुधार कर सकता है।
प्रत्येक क्वेरी या ऑपरेशन जिसे क्वेरी मेमोरी अनुदान की आवश्यकता होती है उसे कार्य स्थान मेमोरी की आवश्यकता होगी। सॉर्ट, हैश मैच जॉइन, पैरेललिज्म (इस बारे में निश्चित नहीं), बल्क इंसर्ट (सुनिश्चित नहीं), इंडेक्स रीबिल्ड आदि का उपयोग करते हुए सामान्य क्वेरी में क्वेरी वर्कस्पेस मेमोरी की आवश्यकता होगी।
कार्यक्षेत्र मेमोरी SQL सर्वर बफर पूल का हिस्सा है (इसे बफर पूल के हिस्से के रूप में आवंटित किया गया है) और अधिकतम कार्यक्षेत्र मेमोरी बफर पूल को आवंटित मेमोरी का 75% है। डिफ़ॉल्ट रूप से एक भी क्वेरी 25% से अधिक कार्यक्षेत्र मेमोरी (SQL 2008 / SQL 2012 में - संसाधन गवर्नर डिफ़ॉल्ट वर्कलोड समूह द्वारा नियंत्रित बॉक्स) से बाहर नहीं निकल सकती।
मेरी समझ की पुष्टि करना
1) 48 जीबी रैम और अधिकतम सर्वर मेमोरी के साथ 40 जीबी तक कॉन्फ़िगर की गई प्रणाली का मतलब है कि अधिकतम कार्यक्षेत्र मेमोरी 30 जीबी तक सीमित है और एक क्वेरी में 10 जीबी से अधिक कार्यक्षेत्र मेमोरी (क्वेरी मेमोरी) नहीं मिल सकती है। इसलिए यदि आपके पास एक बिलियन पंक्तियों के साथ काम करने वाली एक बुरी क्वेरी है जो बड़े पैमाने पर हैश ज्वाइन कर रही है और 10 जीबी से अधिक मेमोरी (कार्यक्षेत्र मेमोरी) की आवश्यकता है, तो क्या यह मेमोरी ग्रांट कतार या डिस्क पर राइट स्पिल के माध्यम से जाने की भी परवाह करेगा?
2) यदि एक बड़े पैमाने पर सॉर्ट ऑपरेशन करने वाली क्वेरी को 5 एमबी की कार्यक्षेत्र मेमोरी असाइन की गई है और क्वेरी के क्वेरी निष्पादन के दौरान यदि क्वेरी ऑप्टिमाइज़र को पता चलता है कि खराब आँकड़ों या अनुपलब्ध अनुक्रमों के कारण इस क्वेरी को वास्तव में 30 एमबी कार्यक्षेत्र मेमोरी की आवश्यकता होगी तुरंत tempdb के लिए फैल जाएगा। यदि निष्पादन के दौरान सिस्टम में कार्यक्षेत्र मेमोरी की प्रचुरता उपलब्ध है, तो एक बार क्वेरी निष्पादन के दौरान दिए गए कार्यक्षेत्र मेमोरी से अधिक हो जाती है, तो उसे डिस्क पर फैलाना होगा। क्या मेरी समझ सही है?