TempDB पर DDL विवाद


9

मेरे पास SQL ​​Server 2005 Standard x64 है जो पिछले कुछ महीनों से TempDB DDL विवाद के साथ समस्याओं का सामना कर रहा है। सर्वर प्रतीक्षा संसाधन 2: 1: 103 (प्रतीक्षा प्रकार PAGELATCH_EX) पर विवाद का अनुभव करेगा।

जब सर्वर शालीन लोड के अंतर्गत हो, तो यह समस्या छिटपुट रूप से प्रकट होती है। मैं "अस्थायी तालिकाओं को विनाश के लिए" दर पर निगरानी कर रहा हूं और यह उस समय 5,000+ तक कूद सकता है जब हमारे पास 2: 1: 103 पर PAGELATCH_EX के मुद्दे हों। मैंने जो भी पढ़ा है यह काउंटर 0 समय का बहुमत होना चाहिए, लेकिन हमारा समय के बहुमत से 300-1100 से कहीं भी रहना है। काउंटर केवल 0 पर जाता है जब सिस्टम पर बहुत कम उपयोगकर्ता होते हैं।

मैं एक संकीर्ण स्टैक में सुई की तलाश किए बिना टेम्पर्ड पर डीडीएल विवाद का कारण क्या है, मैं कैसे संकीर्ण कर सकता हूं?


क्या है SELECT @@VERSION;? मेरे उत्तर के अनुसार मेरा पहला सुझाव यह सुनिश्चित करना होगा कि आप SP4 पर हैं और सबसे नवीनतम संचयी अद्यतन।
हारून बर्ट्रेंड

यह SP4 (9.00.5000)
डेविड जॉर्ज

जवाबों:


14

मैंने इसे बहुत मुद्दा देखा है और इसे ठीक करने के लिए अंततः जारी किया गया हॉटफिक्स Microsoft सीएसएस के साथ मेरे मामले का प्रत्यक्ष परिणाम था। फिक्स के लिए कोई सार्वजनिक KB आलेख नहीं है। कृपया सुनिश्चित करें कि आपने सर्विस पैक 4 और सबसे हाल का संचयी अद्यतन SQL सर्वर पर (लेखन के समय, कि संचयी अद्यतन # 3 (9.00.5259) ) लागू किया है।

जब तक हॉटफ़िक्स जारी नहीं किया गया, तब तक Microsoft का सुझाव बस # टैम्प टेबल बनाना बंद करना था (बहुत अधिक जैसे KB # 916086 )। चूँकि इसका मतलब होगा दर्जनों और दर्जनों रिपोर्टिंग प्रक्रियाओं का एक बार फिर से लिखना, मेरे मामले में वर्कअराउंड (ट्रेस झंडे या अस्थायी फ़ाइल लेआउट की परवाह किए बिना) हर दूसरे सप्ताहांत में हमारे क्लस्टर को फिर से शुरू करना था। छी।

अस्थायी उपयोग को ट्रैक करने के लिए, आस-पास कई स्क्रिप्ट हैं, जो मदद कर सकती हैं, उदाहरण के लिए एडम मैकनिक का sp_whoIsActive , विशेष रूप से देखें:

और यह स्क्रिप्ट (और टिप्पणियों में भी) @ SQLSoldier से:

मैं यह सुनिश्चित करूँगा कि आपके सभी शाप देने वाले LOCAL STATIC READ_ONLY FORWARD_ONLY( यह और यह देखें ) का उपयोग कर रहे हैं , और देखें कि क्या कोई ज्ञात महंगे प्रश्न हैं जो #temp टेबल / @table वैरिएबल, CTEs का व्यापक उपयोग करते हैं, या अनावश्यक रूप से हो सकते हैं या हैश में शामिल हो सकते हैं ... जो सभी समस्या में योगदान कर सकते हैं (मुझे संदेह है कि आपको एक सुनहरा कारण मिलेगा)। "बैंग-फॉर-योर-हिरन" शुरुआती बिंदु के रूप में सबसे आसान स्वीपिंग फिक्स दोष के बजाय उचित और सस्ती कर्सर विकल्पों का उपयोग करना होगा।

इस बीच मैं (a) CU # 3 और (b) कॉल PSS स्थापित करूँगा। उन्हें बताएं कि आप एक बहुत ही विशिष्ट फिक्स के बाद हैं जो पहले से ही बग के रूप में पुष्टि की गई है और अन्य उपयोगकर्ताओं को एक निजी हॉटफ़िक्स के रूप में जारी किया गया है: "VSTS # 109112 - अस्थायी तालिका आस्थगित ड्रॉप कुछ वर्कलोड के लिए पैमाने पर नहीं है।" आपको शुरू में केस शुल्क का भुगतान करना पड़ सकता है, लेकिन चूंकि यह एक बग है, इसलिए शुल्क वापस किया जाना चाहिए।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
पॉल व्हाइट 9

5

आपको शायद 1118 ध्वज का पता लगाना होगा

पहले टेम्पलडब के बारे में पॉल रैंडल के मिथक देखें , और उनका टीएफ 1118 लेख भी

TF 328551 में यहाँ वर्णित है

मुझे इसका कोई प्रत्यक्ष अनुभव नहीं है लेकिन ऐसा लगता है जैसे मैंने पढ़ा है


दुर्भाग्य से TF1118 ने कोई मदद नहीं की है
डेविड जॉर्ज

5

मुझे लगता है कि आप पहले से ही अपने TempDB डेटा-फ़ाइलों को अलग करने की कोशिश कर रहे हैं ताकि विवाद (पूर्व-उत्पादन के माध्यम से स्पष्ट रूप से) समाप्त हो सकें। यदि आप ब्रेवर हैं, तो पॉल रैंडल को आधिकारिक रूप से संदर्भित करने वाले ट्रेस ध्वज पर विचार करें: http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(1230 -tempdb-चाहिए-हमेशा-है-एक डेटा-फ़ाइल-प्रति-प्रोसेसर-core.aspx

दर्द किस कारण से हो रहा है, इसके लिए आपको कुछ जांच कार्य करने की आवश्यकता है:

  • क्या यह अभी घटित होना शुरू हुआ है? क्या बदल गया?
  • स्मृति दबाव में सर्वर है, तो TempDB में किया जाना चाहिए?
  • क्या चेक डीबीए या ऑनलाइन री-इंडेक्सिंग, रनिंग जैसी कोई डीबीए प्रक्रियाएं हैं?
  • अधिक विदेशी अलगाव स्तर का उपयोग किया जाता है, या सेवा दलाल? sys.dat डेटाबेस पर एक नज़र डालें

इस Microsoft TempDB दस्तावेज़ के निचले भाग में एक अच्छी क्वेरी है जो कि टेम्पर्ड का उपयोग करने के लिए प्रयास करने के लिए है: http://technet.microsoft.com/en-gb/library/cc966545.aspx


TF1118 पर संबंधित जानकारी शायद अधिक महत्वपूर्ण है I
gbn

@ इसने कुछ महीने पहले शुरू किया था और इसमें कोई सर्वर परिवर्तन नहीं थे। हमने TF1118 को बिना किसी भाग्य के साथ आज़माया है क्योंकि हम वास्तव में उस समस्या के साथ मदद नहीं कर रहे हैं जो उस सिस्टम मेटा डेटा टेबल तक पहुंच को क्रमबद्ध करता है जो 2: 1: 103 पर ताले बनाते हैं। नष्ट होने की जरूरत की एक टन अस्थायी तालिकाओं से स्टेमिंग। इस दौरान कोई DBA कार्य नहीं चल रहा है। कोई सेवा दलाल और कोई विदेशी अलगाव स्तर नहीं।
डेविड जॉर्ज

कोई सर्वर नहीं बदलता है, लेकिन क्या कोई एप्लिकेशन कोड परिवर्तन थे? स्मृति ठीक है - पृष्ठ जीवन प्रत्याशा, क्वेरी रन समय आदि?
पीटर स्कोफील्ड

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

मैंने सभी की जाँच की है कि सभी और IO विलंबता एक मुद्दा नहीं है। TempDB को बिना किसी राहत के कई अलग-अलग कई फ़ाइल कॉन्फ़िगरेशन में कॉन्फ़िगर किया गया है। यह एक 24-कोर प्रणाली है इसलिए हम 8 अस्थायी फ़ाइलें चला रहे हैं, लेकिन 24 फ़ाइलों के लिए सभी तरह से अलग कॉन्फ़िगरेशन की कोशिश की है। मेमोरी ठीक है, पृष्ठ जीवन प्रत्याशा भी अच्छी है। क्वेरी रन समय ऊपर और नीचे हैं, लेकिन कुछ भी पागल या नया नहीं है।
डेविड जॉर्ज

4

यदि आप अभी भी इसे नीचे देख रहे हैं, तो मैंने हाल ही में तुल्यकालिक टेबल ड्रॉप्स के साथ एक समान अजीब प्रदर्शन जारी किया था। यदि आपके पास SQL ​​2005 में चल रहे एक sql इंस्टेंस पर बड़ी संख्या में डेटाबेस (> 100 या तो) हैं और आपके पास बहुत सारी अस्थायी तालिकाएँ हैं और स्टेटमेंट बनाते हैं तो आप धीमी गति से टेबल टेबल ड्रॉप प्राप्त कर सकते हैं। Sysinos_db_index_usage_stats से लौटी पंक्ति गणना की जाँच कर सकते हैं कि यह अपराधी के रूप में बहुत दूर से शासन कर सकता है।

KB आलेख समस्या का वर्णन करता है। http://support.microsoft.com/kb/2003031

क्वेरी प्रदर्शन कम हो जाता है जब sysinos_db_index_usage_stats में बड़ी संख्या में पंक्तियाँ होती हैं

इस परिदृश्य पर विचार करें:

Microsoft SQL Server 2005 में, आप अक्सर DDL ऑपरेशन करते हैं जिसमें बहुत सी टेबल (विशेषकर अस्थायी डेटाबेस में अस्थायी टेबल) को छोड़ना और उनका मनोरंजन शामिल होता है। आपके पास sysinos_db_index_usage_stats डायनामिक मैनेजमेंट व्यू (DMV) में बड़ी संख्या में प्रविष्टियाँ (100,000 या अधिक) हैं।

इस प्रश्न के मेरे स्वीकृत उत्तर से लिया गया। वहाँ कुछ और भी विस्तार है। एसक्यूएल 2005 में धीमी गति से टेबल टेबल गिरती है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.