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

आंकड़े अपडेट के लिए संभावित सुधार :MAXDOP

इसलिए, SQL सर्वर 2016 में, नमूना मोड का उपयोग करते हुए आँकड़े अद्यतन अब संगतता स्तर 130 के तहत समानांतर में चलते हैं, और यह सभी स्वचालित और मैन्युअल आँकड़े अद्यतनों के लिए डिफ़ॉल्ट रूप से इसी तरह काम करता है। इसे यहाँ संक्षेप में समझाया गया है:

  • SQL सर्वर 2016 में क्वेरी ऑप्टिमाइज़र परिवर्धन

(दस्तावेजों को भी अद्यतन किया गया है, संगतता स्तर विषय और अद्यतन सांख्यिकी विषय दोनों।)

क्या यह अच्छा नहीं होगा, हालांकि, यह निर्दिष्ट करने में सक्षम होना चाहिए कि इन कार्यों के लिए वास्तव में कितने सीपीयू का उपयोग किया जा सकता है (सिर्फ 16 की सीमा को अनुमति देने के अलावा)? मुझे लगता है कि इसे 4 या 8 तक सीमित करने में सक्षम होना समर्थन करने के लिए एक स्पष्ट और तार्किक बात होगी। विशेष रूप से 16 या उससे कम कोर वाले सिस्टम चलाने वाले ग्राहकों के लिए, या एक बॉक्स पर कई इंस्टेंस, जो रिसोर्स गवर्नर जैसी एंटरप्राइज़ सुविधाओं पर भरोसा नहीं कर सकते हैं (जो कि अधिकांश एंटरप्राइज़ ग्राहकों को या तो, IMHO का उपयोग करके परेशान नहीं किया जा सकता है)।

इसके लिए व्यावसायिक औचित्य वही होगा जो MAXDOP समर्थन REBUILD, DBCC CHECKDB और इसके रखरखाव संचालन के परिवार को जोड़ने के लिए उपयोग किया जाता है, आदि। आप इस प्रकार की गतिविधि को सभी कोर पर कब्जा करने से रोकना चाहते हैं, बिना कुछ कठोर किए ऑटो-अपडेट को बंद करने या इंस्टेंस-वाइड MAXDOP का उपयोग करने के रूप में - क्योंकि हर किसी के पास रखरखाव विंडो की विलासिता नहीं होती है।

और इस मामले में, उदाहरण-व्यापी MAXDOP वैसे भी मदद नहीं करेगा , क्योंकि SQL Server 2016 RTM में एक बग है जहां MAXDOP को अनदेखा किया जाता है नमूना सांख्यिकी अद्यतन के लिए। एक सुधार आ रहा है, लेकिन मुझे लगा कि आपको पता होना चाहिए; यदि इससे आपको कोई समस्या हो रही है, तो एक विकल्प निम्न संगतता स्तर का उपयोग करना है।

लेकिन मैं एक बात दोहराऊंगा जो मैं अक्सर कहता हूं:संगतता स्तर बहुत अधिक भीड़ हो रहा है। अगर मुझे अपने डेटाबेस पर समानांतर नमूना आँकड़े चाहिए, लेकिन मेरे पास पुराने CE की आवश्यकता के लिए पर्याप्त कार्डिनैलिटी अनुमान प्रतिगमन हैं, तो मुझे एक या दूसरे को चुनना होगा।

और एक और बात:इस उपयोग के मामले के लिए रिसोर्स गवर्नर ओवरकिल है, और सांख्यिकी अपडेट से मूल उपयोग को सीमित करना वास्तव में एक एंटरप्राइज फीचर नहीं होना चाहिए (बिल्कुल ऊपर उल्लिखित REBUILD और CHECKDB की तरह)। कृपया मुझे यह न बताएं कि RG एक स्वीकार्य विकल्प है, क्योंकि यह केवल एंटरप्राइज़ संस्करण *और* वर्कलोड वर्गीकरण वाले उपयोगकर्ताओं के लिए ही संभव है, जिन्हें MAXDOP हर समय द्वारा सीमित किया जाना चाहिए। . मुझे इसे विशिष्ट ऑपरेशन (या, केवल मेरी सबसे बड़ी/समस्या तालिकाओं के लिए) द्वारा सीमित करने में सक्षम होना चाहिए, न कि लॉगिन के पूरे सत्र को बाधित करके।

मैं कैसे चाहता हूं कि वे ऐसा करेंगे

आदर्श रूप से, हम इसे डेटाबेस स्तर पर, नए DATABASE स्कोप्ड कॉन्फ़िगरेशन विकल्प का उपयोग करके, और कथन स्तर पर, परिचित विकल्प (MAXDOP n) सिंटैक्स का उपयोग करके सेट करने में सक्षम होंगे। स्टेटमेंट स्तर जीत जाएगा, और कोई भी नमूना मोड सांख्यिकी अपडेट (स्वचालित सहित) बिना स्पष्ट MAXDOP संकेत के डेटाबेस स्तर सेटिंग पर वापस आ जाएगा। यह मुझे 4 का MAXDOP सेट करने की अनुमति देगा, उदाहरण के लिए, अप्रत्याशित समय पर होने वाले सभी स्वचालित आंकड़े अपडेट के लिए, लेकिन ज्ञात रखरखाव विंडो में मैन्युअल संचालन के लिए 8 या 16। एक उदाहरण के रूप में।

यदि आप इसके लिए वोट करना चाहते हैं, तो कृपया निम्न कनेक्ट आइटम देखें, और इसके लिए एक व्यावसायिक औचित्य जोड़ें (एक ला माइकल कैंपबेल):

  • कनेक्ट #628971 :आंकड़े अपडेट करने के लिए MAXDOP पैरामीटर जोड़ें

बेशक, वह आइटम 2010 से है, इसलिए डेटाबेस स्कोप्ड कॉन्फ़िगरेशन एवेन्यू के बारे में कोई उल्लेख नहीं है, इसलिए मैंने एक टिप्पणी भी छोड़ी है।

इस बीच, यदि आप नमूना मोड के लिए समांतरता को अक्षम करना चाहते हैं, तो पुराने व्यवहार पर प्रभावी ढंग से लौटने के लिए एक ट्रेस ध्वज है (आप इसे 130 से कम संगतता स्तर पर वापस लाकर भी कर सकते हैं, लेकिन मैं इसकी अनुशंसा नहीं करता क्योंकि यह बहुत सी अन्य चीजों को प्रभावित करता है)। जब मुझे ट्रेस फ़्लैग को सार्वजनिक रूप से प्रकट करने का अधिकार दिया जाएगा, तो मैं इस स्थान को अपडेट कर दूंगा, लेकिन अभी, Microsoft इसे अपने सीने से कसकर पकड़े हुए है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रियाओं के लिए एक और तर्क

  2. MSDB पर रखरखाव का महत्व

  3. SQL में एक कॉलम का नाम कैसे बदलें

  4. एसिंक्रोनस प्रोसेसिंग के लिए सर्विस ब्रोकर को कॉन्फ़िगर करना

  5. SQL में एक संख्यात्मक कॉलम का औसत कैसे खोजें