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

TempDB का अनुकूलन:बाधाओं और प्रदर्शन के मुद्दों से बचना

जैसा कि नाम से पता चलता है, TempDB एक अस्थायी कार्यक्षेत्र है जो SQL सर्वर द्वारा मध्यवर्ती और अस्थायी वस्तुओं को बनाने और रखने के लिए आवश्यक है।

TempDB समग्र SQL सर्वर तंत्र में एक महत्वपूर्ण दल है और एक अस्थायी कार्यक्षेत्र के रूप में - जो डेटा रखता है वह प्रकृति में क्षणिक है। दूसरे शब्दों में, आपका SQL सर्वर इंस्टेंस हर बार पुनरारंभ होने पर TempDB को फिर से बनाता है - खुद को एक साफ स्क्रैच पैड देता है जिसके साथ यह काम कर सकता है।

  • उपयोगकर्ता के अनुरोधों से ट्रिगर होने वाली अस्थायी वस्तुएं
  • आंतरिक सिस्टम प्रक्रियाओं के लिए आवश्यक वस्तुएं
  • पंक्ति संस्करण जानकारी

कहने की जरूरत नहीं है, अगर TempDB को बेहतर तरीके से कॉन्फ़िगर नहीं किया गया है, तो इससे परिचालन में अड़चनें आ सकती हैं और प्रदर्शन में गिरावट आ सकती है। यह आपको आश्चर्यचकित कर सकता है कि जटिल जॉइन और सॉर्टिंग ऑपरेशंस के साथ आपके प्रश्न अपेक्षा के अनुरूप परिणाम क्यों नहीं दे रहे हैं।

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

डेटाबेस प्रदर्शन में सबसे गंभीर मुद्दों में से एक TempDB विवाद है। यह तब होता है जब कई संसाधनों को TempDB की आवश्यकता होती है, लेकिन केवल एक TempDB डेटा फ़ाइल तक पहुँचने के लिए होती है।

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

आपको क्या मिलेगा? अवरुद्ध प्रक्रियाओं का एक आभासी ट्रैफिक जाम।

TempDB विवाद को कैसे हल करें और SQL सर्वर प्रदर्शन को कैसे अनुकूलित करें? आइए बुनियादी बातों पर एक नज़र डालें और वहां से अपना काम करें।

डेटा फ़ाइलों की संख्या - मेरे पास कितनी होनी चाहिए?

जब आप SQL सर्वर सेट करते हैं और डिफ़ॉल्ट कॉन्फ़िगरेशन रखते हैं, तो आपके पास TempDB के लिए केवल एक डेटा फ़ाइल होती है। इस कॉन्फ़िगरेशन से संतुष्ट न हों।

अंगूठे के अक्सर बताए जाने वाले नियमों में से एक प्रति कोर एक एकल डेटा फ़ाइल है। लेकिन इस उदाहरण में सावधानी से आगे बढ़ें, यदि आपके सर्वर में 12 कोर हैं, तो 12 TempDB डेटा फ़ाइलों का उपयोग न करें जब तक कि एप्लिकेशन और लोड आवश्यकताओं द्वारा उचित न हो।

आज के हार्डवेयर कॉन्फ़िगरेशन को देखते हुए सबसे अच्छा विकल्प 8 समान आकार की प्राथमिक डेटा फ़ाइलों के साथ शुरू करना और यह देखना है कि क्या विवाद का मुद्दा हल हो गया है। अपने तरीके से ऊपर की ओर काम करें और जरूरत पड़ने पर और चार फाइलें जोड़ें। SQL सर्वर 2016 की स्थापना और सेटअप विज़ार्ड में एक अंतर्निहित सुविधा है जो सुनिश्चित करती है कि आपके पास CPU कोर की संख्या का पता लगाकर और स्वचालित रूप से उपयुक्त संख्या TempDB डेटा फ़ाइलों को बनाकर TempDB डेटा फ़ाइलों की पर्याप्त संख्या है।

आकार मायने रखता है - डेटा फ़ाइलों को आकार के लिए कैसे कॉन्फ़िगर किया जाना चाहिए?

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

अनुशंसित अभ्यास फाइलों को रखने के लिए है और प्रत्येक फ़ाइल के लिए आवश्यक प्रारंभिक स्थान लगभग 80 से 90% वॉल्यूम है जिस पर TempDB संग्रहीत है। OS-आधारित वर्चुअल मेमोरी के लिए 10 से 20% डिस्क स्थान बचा है।

दूसरे शब्दों में, सेटअप के दौरान डेटा फ़ाइलों को पूर्व-आकार दें या उत्पादन परिवेश में फ़ाइलों का आकार बदलें। यह सुनिश्चित करेगा कि TempDB के लिए पर्याप्त डिस्क स्थान आवंटित किया गया है। इस बिंदु पर ऑटोग्रोथ विकल्प को चालू रखने की हमेशा अनुशंसा की जाती है, लेकिन आदर्श रूप से, यह सुनिश्चित करने का प्रयास करें कि SQL सर्वर को अक्सर फ्लाई पर अतिरिक्त डिस्क स्थान आवंटित नहीं करना पड़ता है।

एक दिलचस्प तथ्य, SQL सर्वर 2017 से पहले, सेटअप के समय प्रति TempDB डेटा फ़ाइल में 1 GB से अधिक आवंटित करना संभव नहीं था। नवीनतम संस्करण के साथ, सेटअप के दौरान TempDB डेटा फ़ाइल के लिए 256 GB जितना अधिक आवंटित करना संभव है।

जो हमें अगले प्रश्न पर लाता है:

मैं TempDB डेटा फ़ाइलें कहाँ रखूँ?

SQL सर्वर 2012 से पहले, क्लस्टर वातावरण के मामले में, TempDB को क्लस्टर वातावरण के बीच साझा किए गए डिस्क पर स्टोरेज एरिया नेटवर्क (SAN) की तरह स्थित होना था। SQL सर्वर 2012 से शुरू होकर, TempDB डेटा फ़ाइलों को SSD आधारित स्थानीय संग्रहण पर रखना संभव है। यह साझा SAN और SQL सर्वर इंस्टेंस के बीच बहुत अधिक ट्रैफ़िक होने पर कटौती करता है।

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

आदर्श रूप से, मीडिया को सर्वर कॉन्फ़िगरेशन, एप्लिकेशन आवश्यकताओं और अंतिम लेकिन कम से कम आवंटित बजट को देखते हुए सबसे तेज़ संभव होना चाहिए।

अब जबकि हमने मूल बातें देख ली हैं, आइए SQL सर्वर 2012 के बाद विभिन्न SQL सर्वर परिवर्धनों के लिए प्रासंगिक और स्वागत योग्य परिवर्धन देखें।

और क्या नया है?

एसक्यूएल सर्वर 2016

सेटअप के दौरान समर्पित टैब

  • इस संस्करण के साथ, SQL सर्वर में सेटअप वर्कफ़्लो के दौरान TempDB कॉन्फ़िगरेशन के लिए एक समर्पित टैब है
  • SQL सर्वर 2016 की स्थापना और सेटअप विज़ार्ड में एक अंतर्निहित सुविधा है जो सुनिश्चित करती है कि SQL सर्वर स्थापित करते समय आपके पास पर्याप्त संख्या में TempDB डेटा फ़ाइलें हैं। यह CPU कोर की संख्या का पता लगाता है और अधिकतम 8 के अधीन स्वचालित रूप से TempDB डेटा फ़ाइलें बनाता है। SQL सर्वर सेट करने के बाद आप इस संख्या को बढ़ा सकते हैं।

तत्काल फ़ाइल आरंभीकरण

  • SQL सर्वर को प्रारंभिक सेटअप के दौरान और साथ ही जब उत्पादन चलाने में फ़ाइल का आकार बढ़ता है, TempDB के लिए डिस्क स्थान आवंटित करना होता है। यह आवंटन दो तरह से संभव हो सकता है। पहला तरीका अप्रयुक्त डिस्क स्थान को स्थान आवंटित करने से पहले शून्य लिखकर प्रारंभ करना है। दूसरा तरीका है TempDB विकास के लिए फ़ाइल स्थान को तुरंत आवंटित करना।
  • पहली विधि में, SQL सर्वर को प्रत्येक लॉजिकल डिस्क क्लस्टर को इनिशियलाइज़ करके एक डिस्क इंटेंसिव ऑपरेशन करना होता है। इस पद्धति में, सर्वर पर चलने वाली प्रक्रियाएं जिन्हें TempDB की आवश्यकता होती है, एक अड़चन पैदा करते हुए प्रतीक्षा करनी पड़ सकती है।
  • यदि आप इसके बजाय तुरंत फ़ाइल स्थान आवंटित करना चुनते हैं, तो SQL सर्वर डिस्क स्थान को प्रारंभ किए बिना तुरंत ऑटोग्रोथ के लिए स्थान आवंटित करता है। यह हर बार ऑटोग्रोथ की आवश्यकता होने पर डिस्क i/o को कम करता है और बेहतर थ्रूपुट और प्रदर्शन सुनिश्चित करता है। हालांकि पिछले संस्करणों में IFI को चालू करना संभव था, यह एक बोझिल प्रक्रिया थी। SQL सर्वर के इस संस्करण में, सर्वर सेटअप के समय IFI को सेटअप करना आसान है।
  • ट्रेस फ्लैग 1117 और 1118 निरर्थक हैं

एसक्यूएल सर्वर 2017

  • SQL सर्वर 2017 से पहले, सेटअप के समय प्रति TempDB डेटा फ़ाइल में 1 GB से अधिक आवंटित करना संभव नहीं था, जिसका अर्थ है कि TempDB फ़ाइल का आकार सेटअप पूर्ण होने के बाद बढ़ाना होगा। इस संस्करण के साथ, सेटअप के दौरान TempDB डेटा फ़ाइल के लिए 256 GB जितना अधिक आवंटित करना संभव है।

TempDB की निगरानी

TempDB पर नज़र रखना मुश्किल हो सकता है। आप कैसे बता सकते हैं कि आपके पास TempDB विवाद है? उपयोगकर्ता वस्तुओं, संस्करण स्टोर या आंतरिक वस्तुओं को क्या आवंटित किया जा रहा है? समय के साथ ये कैसे चलन में हैं? कौन से सत्र TempDB का उपभोग कर रहे हैं और किस हद तक? स्पॉटलाइट क्लाउड इन सवालों के जवाब देना आसान बनाता है। यह आपके SQL सर्वर प्रदर्शन के सभी पहलुओं पर 24/7 नज़र रखता है और किसी भी प्रदर्शन समस्या से निपटने के लिए गहन विश्लेषणात्मक कार्यप्रवाह प्रदान करता है। समय के साथ अपने TempDB को ट्रैक करें और कॉन्फ़िगरेशन पर स्वचालित विशेषज्ञ सलाह प्राप्त करें।


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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 में चुनिंदा क्वेरी परिणाम से तालिका कैसे बनाएं?

  2. बाधा का नाम जाने बिना विदेशी कुंजी छोड़ें?

  3. SQL सर्वर में दी गई फ़ाइल आईडी के लिए तार्किक फ़ाइल नाम वापस करने के लिए FILE_NAME() का उपयोग करें

  4. NHibernate और SqlServer में डेटा ऑडिटिंग

  5. एसक्यूएल में जाने के साथ गतिशील क्वेरी निष्पादित करें