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

SQL सर्वर 2012/2014 में छिपे हुए प्रदर्शन और प्रबंधनीयता में सुधार

कई साल पहले, Microsoft ने बड़े आकार, आधुनिक सर्वर हार्डवेयर पर भारी कार्यभार के साथ सर्वश्रेष्ठ प्रदर्शन के लिए SQL Server 2012 और SQL Server 2014 को कॉन्फ़िगर करने के तरीके के बारे में एक बहुत ही उपयोगी ज्ञानकोष लेख प्रकाशित किया था। मेरे सहयोगी आरोन बर्ट्रेंड और मैं दोनों की मूल KB आलेख की पुनरीक्षा में एक छोटी भूमिका थी। यह KB आलेख तब से बहुत अच्छी तरह से अद्यतित रखा गया है, और यह अभी भी SQL सर्वर 2012/2014 के लिए उपयोगी कॉन्फ़िगरेशन विकल्पों के लिए एक अच्छा संदर्भ है।

तब से, Microsoft ने SQL Server 2016 से SQL Server 2012 और SQL Server 2014 दोनों में कई बहुत उपयोगी प्रदर्शन सुधारों को वापस पोर्ट किया है, जब तक आप एक नए पर्याप्त बिल्ड पर हैं SQL सर्वर के इन पुराने संस्करणों में से कोई भी। Microsoft अनुशंसा करता है कि आप SQL सर्वर के बाद के बिल्ड में ठीक किए गए मुद्दों का सामना करने की संभावना को कम करने के लिए सर्विस पैक और संचयी अद्यतन दोनों को सक्रिय रूप से तैनात करें।

एक अतिरिक्त बोनस के रूप में, आपको नई सुविधाएँ और अन्य संवर्द्धन भी मिलेंगे जैसे कि मैं इस लेख में वर्णन करता हूँ। ज्यादातर मामलों में, आपको इन प्रदर्शन सुधारों का लाभ प्राप्त करने के लिए ट्रेस फ्लैग को सक्षम करना होगा।

डर्टी पेज मैनेजर

SQL सर्वर 2012 और SQL सर्वर 2014 में आपके उपयोगकर्ता और सिस्टम डेटाबेस के लिए अप्रत्यक्ष चौकियों को सक्षम करने के संयोजन के साथ पहले डर्टी पेज मैनेजर (DPM) का उपयोग है। अप्रत्यक्ष चौकियाँ SQL Server 2016 पर बनाए गए नए डेटाबेस के लिए डिफ़ॉल्ट हैं, और यह है SQL सर्वर 2016 इंस्टेंस के लिए अनुशंसित कॉन्फ़िगरेशन।

अगर आप ग्लोबल ट्रेस फ्लैग 3449 . को सक्षम करते हैं (और आप SQL Server 2012 SP3 CU3 या बाद के संस्करण या SQL Server 2014 SP1 CU7 या बाद के संस्करण पर हैं), आप कई अलग-अलग सामान्य परिदृश्यों में FlushCache कॉल से बचकर बेहतर प्रदर्शन प्राप्त करेंगे, जैसे बैकअप डेटाबेस, बैकअप लेनदेन लॉग, डेटाबेस बनाएँ, डेटाबेस में फ़ाइल जोड़ें, डेटाबेस को पुनर्प्राप्त करें, डेटाबेस फ़ाइल को सिकोड़ें, और SQL सर्वर "सुंदर" शटडाउन के दौरान। ट्रेस फ्लैग 3449 तुरंत प्रभावी होता है, बिना किसी पुनरारंभ की आवश्यकता के। आपको TF 3449 को स्टार्टअप ट्रेस फ़्लैग के रूप में भी सेट करना चाहिए।

इन FlushCache कॉलों से बचना विशेष रूप से महत्वपूर्ण है जब आपके डेटाबेस सर्वर में बड़ी मात्रा में RAM (256GB से अधिक) हो, आपके उपयोग में आने वाले बफर पूल के आकार के साथ लाभ बढ़ रहा हो। आप इस ब्लॉग पोस्ट में इस एन्हांसमेंट के बारे में अधिक विस्तार से पढ़ सकते हैं:

अगला, यदि आप SQL Server 2012 SP4 या SQL Server 2014 SP2 (या बाद में) पर हैं, तो आपको कई अन्य नए प्रदर्शन संवर्द्धन मिलेंगे, जैसे कि स्वचालित सॉफ्ट NUMA विभाजन और गतिशील मेमोरी ऑब्जेक्ट स्केलिंग जो मूल रूप से SQL Server 2016 में पेश किए गए थे। ।

स्वचालित सॉफ्ट NUMA विभाजन

SQL Server 2012 SP4 और SQL Server 2014 SP2 दोनों में, जब आप ट्रेस फ़्लैग 8079 सेट करते हैं स्टार्टअप ट्रेस फ्लैग के रूप में, SQL सर्वर इंजन स्टार्टअप के दौरान हार्डवेयर लेआउट को स्कैन करेगा और प्रति NUMA नोड पर 8 या अधिक भौतिक कोर की रिपोर्ट करने वाले सिस्टम पर सॉफ्ट NUMA को स्वचालित रूप से कॉन्फ़िगर करेगा। स्वचालित सॉफ्ट NUMA व्यवहार हाइपरथ्रेडिंग (एचटी/लॉजिकल प्रोसेसर) जागरूक है, जिसका अर्थ है कि यह इंटेल हाइपर-थ्रेडिंग और एएमडी एसएमटी दोनों के साथ काम करता है। इष्टतम सॉफ्ट NUMA नोड लेआउट का निर्धारण करते समय, तार्किक CPU जानकारी को क्वेरी किया जाता है और केवल तार्किक और केवल भौतिक नोड्स के समूह को रोकने के लिए उपयोग किया जाता है जिससे सॉफ्ट NUMA नोड्स में प्रदर्शन भिन्नता हो सकती है।

वर्तमान सर्वर प्रोसेसर में एक NUMA नोड में 32 भौतिक कोर हो सकते हैं जो एकल हार्डवेयर NUMA नोड के भीतर SMP जैसी स्केलेबिलिटी समस्याओं को उजागर कर सकते हैं। Microsoft का दावा है कि वे अपने आंतरिक SQL Server 2016 परीक्षण हार्नेस का उपयोग करके इस सुविधा से उल्लेखनीय प्रदर्शन सुधार देखते हैं:

"HT जागरूक ऑटो सॉफ्ट-NUMA के साथ, जब DOP को स्वचालित सॉफ़्ट NUMA का उपयोग करके सॉकेट पर (इस मामले में 12) भौतिक कोर की संख्या पर सेट किया जाता है, तो हमें क्वेरी प्रदर्शन में 30% तक का लाभ मिलता है।"

हमेशा की तरह, यह एक अच्छा विचार है कि उत्पादन में इसका उपयोग करने से पहले स्वचालित सॉफ्ट NUMA के साथ अपने कार्यभार के प्रदर्शन का परीक्षण करें।

डायनामिक मेमोरी ऑब्जेक्ट स्केलिंग

SQL Server 2012 SP4 और SQL Server 2014 SP2 दोनों में, SQL सर्वर आधुनिक सर्वर हार्डवेयर पर बेहतर पैमाने पर स्केल करने के लिए NUMA नोड्स और लॉजिकल प्रोसेसर कोर की संख्या के आधार पर मेमोरी ऑब्जेक्ट्स को गतिशील रूप से विभाजित करेगा। डायनेमिक प्रमोशन का लक्ष्य एक थ्रेड सेफ मेमोरी ऑब्जेक्ट (CMEMTHREAD) को स्वचालित रूप से विभाजित करना है यदि यह एक अड़चन बन जाता है।

कार्यभार और अड़चन के आधार पर गैर-विभाजित मेमोरी ऑब्जेक्ट्स को NUMA नोड (विभाजनों की संख्या NUMA नोड्स की संख्या के बराबर) द्वारा विभाजित करने के लिए गतिशील रूप से प्रचारित किया जाएगा, और NUMA नोड द्वारा विभाजित मेमोरी ऑब्जेक्ट्स को तार्किक CPU कोर द्वारा विभाजित करने के लिए आगे बढ़ाया जा सकता है। (विभाजन की संख्या तार्किक CPU कोर की संख्या के बराबर होती है)। SQL 2014 SP2 या SQL Server 2012 SP4 स्थापित करने के बाद यह एन्हांसमेंट ट्रेस फ्लैग 8048 की आवश्यकता को समाप्त कर देता है।

SOS_RWLock स्पिनलॉक सुधार

SQL सर्वर 2014 SP2 में, सुधार (फिर से SQL सर्वर 2016 से वापस पोर्ट किए गए) हैं जो SOS_RWLock संचालन के लिए स्पिनलॉक की आवश्यकता को दूर करते हैं। Microsoft इस सुधार का अधिक विस्तार से वर्णन इस प्रकार करता है:

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

आपको SQL Server 2012 SP4 और SQL Server 2014 SP2 दोनों में कई उपयोगी प्रबंधनीयता सुधार भी प्राप्त होंगे। आप इन ब्लॉग पोस्ट में इन सुधारों के बारे में अधिक विस्तार से पढ़ सकते हैं:

  • SQL सर्वर 2012 सर्विस पैक 4 (SP4) जारी किया गया!
  • एसक्यूएल सर्वर 2014 सर्विस पैक 2 अब उपलब्ध है !!!

इस सब से मुख्य बात यह है कि यदि आप SQL Server 2012 चला रहे हैं (जो 11 जुलाई, 2017 को मुख्यधारा के समर्थन से बाहर हो गया), तो आप SQL Server 2012 SP4 पर रहना चाहते हैं, जबकि यदि आप SQL Server 2014 चला रहे हैं, आप SQL Server 2014 SP2 या नए पर होना चाहते हैं। इन सुधारों का लाभ उठाने के लिए आपको लागू ट्रेस फ़्लैग को सक्षम करने और प्रासंगिक डेटाबेस गुणों को सेट करने की भी आवश्यकता होगी।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OPENJSON "'के साथ' कीवर्ड के पास गलत सिंटैक्स।" SQL सर्वर में (हल किया गया)

  2. कई इंडेक्स वाली टेबल के लिए स्लो बल्क इंसर्ट

  3. pyodbc डेटाबेस से कनेक्ट नहीं हो सकता

  4. जांचें कि क्या तालिका में OBJECTPROPERTY () के साथ SQL सर्वर में एक विदेशी कुंजी है

  5. निर्यात संग्रहीत कार्यविधि परिणाम SSMS में Excel में सेट किया गया है