Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2016 SP1 में मेमोरी लिमिट

कुछ हफ़्ते पहले, मैंने SQL सर्वर 2016 सर्विस पैक 1 के बारे में एक बहुत बड़ी बात की थी। एंटरप्राइज़ संस्करण के लिए पहले से आरक्षित कई सुविधाओं को निचले संस्करणों के लिए खोल दिया गया था, और मैं इन परिवर्तनों के बारे में जानने के लिए उत्साहित था।

फिर भी, मैं कुछ ऐसे लोगों को देख रहा हूँ जो, मान लीजिए, मुझसे थोड़ा कम उत्साहित हैं।

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

तो मानक संस्करण ग्राहकों के लिए इसमें वास्तव में क्या है?

मुझे लगता है कि अधिकांश लोगों की सबसे बड़ी समस्या यह है कि मानक संस्करण में अधिकतम मेमोरी अभी भी 128GB तक सीमित है। वे इसे देखते हैं और कहते हैं, "जी, सभी सुविधाओं के लिए धन्यवाद, लेकिन स्मृति सीमा का मतलब है कि मैं वास्तव में उनका उपयोग नहीं कर सकता।"

हालांकि, सतही क्षेत्र परिवर्तन प्रदर्शन सुधार के अवसर लाते हैं, भले ही वह उनका मूल इरादा नहीं था (या यहां तक ​​​​कि अगर ऐसा था - मैं उन बैठकों में से किसी में नहीं था)। आइए फाइन प्रिंट के एक छोटे से हिस्से पर करीब से नज़र डालें (आधिकारिक डॉक्स से):

SQL Server 2016 SP1 में एंटरप्राइज़/स्टैंडर्ड के लिए मेमोरी लिमिट्स

चतुर पाठक देखेंगे कि बफर पूल सीमा शब्द बदल गया है, इससे:

मेमोरी:प्रति उदाहरण उपयोग की जाने वाली अधिकतम मेमोरी

प्रति:

मेमोरी:अधिकतम बफर पूल आकार प्रति उदाहरण

यह मानक संस्करण में वास्तव में क्या होता है इसका एक बेहतर विवरण है:केवल बफर पूल के लिए 128GB की सीमा, और अन्य मेमोरी आरक्षण इससे अधिक हो सकते हैं (प्लान कैश की तरह पूल सोचें)। इसलिए, वास्तव में, एक मानक संस्करण सर्वर 128GB बफर पूल का उपयोग कर सकता है, फिर अधिकतम सर्वर मेमोरी अधिक हो सकती है और अन्य आरक्षणों के लिए उपयोग की जाने वाली अधिक मेमोरी का समर्थन कर सकती है। इसी तरह, एक्सप्रेस संस्करण को अब बफर पूल के लिए 1.4GB का उपयोग करने के लिए ठीक से प्रलेखित किया गया है।

मानक संस्करण में पहली बार प्रदर्शित की जा रही सुविधाओं के लिए आप उस सबसे बाएं कॉलम (उदाहरण के लिए "प्रति उदाहरण" और "प्रति डेटाबेस") में कुछ बहुत विशिष्ट शब्दों को भी देख सकते हैं। अधिक विशिष्ट होने के लिए:

  • उदाहरण 128GB मेमोरी तक सीमित है बफ़र पूल के लिए
  • उदाहरण में एक अतिरिक्त हो सकता है बफ़र पूल सीमा के ऊपर और ऊपर कॉलमस्टोर ऑब्जेक्ट को 32GB आवंटित किया गया।
  • उदाहरण के लिए प्रत्येक उपयोगकर्ता डेटाबेस में एक अतिरिक्त हो सकता है 32GB स्मृति-अनुकूलित तालिकाओं के लिए आवंटित, बफर पूल सीमा के ऊपर और ऊपर।

और स्पष्ट होने के लिए:कॉलमस्टोर और इन-मेमोरी OLTP के लिए ये मेमोरी सीमा बफर पूल सीमा से घटाई नहीं जाती है , जब तक सर्वर में 128GB से अधिक मेमोरी उपलब्ध है। यदि सर्वर में 128GB से कम है, तो आप देखेंगे कि ये तकनीकें बफर पूल मेमोरी के साथ प्रतिस्पर्धा करती हैं, और वास्तव में अधिकतम सर्वर मेमोरी के% तक सीमित हैं। इस पोस्ट में माइक्रोसॉफ्ट के परीक्षित सवजानी से अधिक विवरण उपलब्ध हैं।

मेरे पास इसकी सीमा का परीक्षण करने के लिए हार्डवेयर आसान नहीं है, लेकिन यदि आपके पास 256GB या 512GB मेमोरी वाली मशीन है, तो आप सैद्धांतिक रूप से इसे एक मानक संस्करण उदाहरण के साथ उपयोग कर सकते हैं, यदि आप कर सकते हैं - उदाहरण के लिए - अपने में फैलाना -कुल 128GB + (32GB * (डेटाबेस का #)) के लिए <=32GB भाग में डेटाबेस में मेमोरी डेटा। यदि आप इन-मेमोरी के बजाय ColumnStore का उपयोग करना चाहते हैं, तो आप अपने डेटा को कई उदाहरणों में फैला सकते हैं, जिससे आपको (128GB + 32GB) * (# इंस्टेंस) मिलते हैं। और आप इन रणनीतियों को ((128GB + 32GB ColumnStore) * (# उदाहरणों के)) + (32GB इन-मेमोरी * (# डेटाबेस के * # उदाहरणों के)) के लिए जोड़ सकते हैं।

क्या आपके डेटा को इस तरह से तोड़ना आपके आवेदन के लिए व्यावहारिक है, मुझे यकीन नहीं है; मैं केवल सुझाव दे रहा हूं कि यह संभव है। 128GB से अधिक मेमोरी वाले सर्वर पर मानक संस्करण का बेहतर उपयोग करने के लिए आप में से कुछ पहले से ही इनमें से कुछ चीजें कर रहे होंगे।

विशेष रूप से कॉलमस्टोर के साथ, बफर पूल के अतिरिक्त 32GB का उपयोग करने की अनुमति देने के अलावा, ध्यान रखें कि आप यहां जो संपीड़न प्राप्त कर सकते हैं उसका मतलब है कि आप पारंपरिक रूप से समान डेटा के साथ उस 32GB सीमा में अक्सर अधिक फिट हो सकते हैं पंक्ति-भंडार। और यदि आप किसी भी कारण से कॉलमस्टोर का उपयोग नहीं कर सकते हैं (या यह अभी भी 32 जीबी में फिट नहीं होगा), तो अब आप पारंपरिक पेज या पंक्ति संपीड़न को लागू कर सकते हैं - यह आपको 128 जीबी बफर पूल में अपने पूरे डेटाबेस को फिट करने की अनुमति नहीं दे सकता है, लेकिन यह आपके अधिक डेटा को किसी भी समय स्मृति में रहने के लिए सक्षम कर सकता है।

एक्सप्रेस (निचले पैमाने पर) में भी इसी तरह की चीजें संभव हैं, जहां आपके पास बफर पूल के लिए 1.4GB हो सकता है, लेकिन कॉलमस्टोर के लिए अतिरिक्त ~352MB प्रति इंस्टेंस, और इन-मेमोरी OLTP के लिए ~ 352MB प्रति डेटाबेस।

लेकिन एंटरप्राइज़ संस्करण में अभी भी बहुत कुछ है

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

तो सिर्फ इसलिए कि कुछ तकनीकें हैं जो आपको मानक संस्करण से अधिक लाभ उठाने की अनुमति देंगी, इसका मतलब यह नहीं है कि यह आपकी प्रदर्शन आवश्यकताओं को पूरा करने के लिए जादुई पैमाने पर होगी। "इसे एक बजट पर करना" (उदाहरण के लिए विभाजन और पठनीय माध्यमिक) के बारे में मेरी अन्य पोस्टों की तरह, आप निश्चित रूप से एक समाधान के साथ समय और प्रयास खर्च कर सकते हैं, लेकिन यह आपको केवल इतना ही मिलेगा। इस पोस्ट का उद्देश्य केवल यह दिखाना था कि आप 2016 SP1 में मानक संस्करण के साथ पहले से कहीं अधिक आगे बढ़ सकते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस से सभी कनेक्शनों को समाप्त करने के लिए स्क्रिप्ट (RESTRICTED_USER ROLLBACK से अधिक)

  2. चयन कथनों में NOLOCK संकेत का प्रभाव

  3. SQL सर्वर में sys.columns, sys.system_columns और sys.all_columns के बीच अंतर

  4. HTTP स्थिति 401 के साथ अनुरोध विफल हुआ:SSRS में अनधिकृत

  5. SQL LIKE स्टेटमेंट में वेरिएबल का उपयोग करना