SQL सर्वर फ्रोजन घोस्ट क्लीनअप वर्कअराउंड की आवश्यकता है


15

मेरे पास 5M और 1.5G के बीच पंक्तियों की मात्रा के साथ कई टेबल हैं

प्रत्येक तालिका में अपना BLOB फ़ील्ड होता है, जिसका आकार 100 बाइट्स से 30 एमबीटी तक भिन्न होता है और जिसे 'बड़े मूल्य प्रकारों में से पंक्ति' = ON के रूप में संग्रहीत किया जाता है

टेबल्स को अलग-अलग फाइलग्रुप में 3-4 फाइलों के साथ अलग-अलग डिस्क पर # अलग-अलग LUNs @ बहुत तेज सैन में संग्रहित किया जाता है

हर दिन ये टेबल 5-100 जीबी आकार में और 600k - 1.5M पंक्तियों के साथ बढ़ते हैं

समय की निश्चित मात्रा के बाद , जो 2 सप्ताह से 6 महीने तक भिन्न होती है, कुछ पंक्तियों को हटा दिया जाता है या डीबी को संग्रहित करने के लिए स्थानांतरित किया जाता है, इसलिए - 6 महीने से पुराने वर्कटेबल्स में कोई भी पंक्तियां नहीं हैं।

सर्वर का वर्तमान विन्यास:

  • SQL सर्वर इंजन 2008 R2 SP1 एंटरप्राइज़ @ 24 कोर, @ 64 GB RAM है
  • SQL सर्वर अतिरिक्त स्टार्टअप झंडे के साथ चलता है:

-टी 3640; (संग्रहीत कार्यविधि में प्रत्येक कथन के लिए क्लाइंट के लिए DONE_IN_PROC संदेश भेजना समाप्त कर देता है। यह सेट नोवस ऑन के सत्र सेटिंग के समान है, लेकिन जब ट्रेस ध्वज के रूप में सेट किया जाता है, तो प्रत्येक क्लाइंट सत्र को इस तरह से संभाला जाता है)

-T 1118; (एक बार में (पहले 8 पृष्ठों के लिए) एक सीमा तक अस्थायी रूप से अस्थायी रूप से आवंटन आवंटित किए जाते हैं।)

-T 2301; (उन्नत ऑप्टिमाइज़ेशन सक्षम करता है जो निर्णय समर्थन के लिए विशिष्ट होते हैं। यह विकल्प बड़े डेटा सेट के निर्णय समर्थन प्रसंस्करण पर लागू होता है)

-T 1117; (एक बार में सभी डेटा फ़ाइलों को बढ़ा देता है, अन्यथा यह बदल जाता है।)

-इ; (एक फ़ाइलग्रुप में प्रत्येक फ़ाइल के लिए आवंटित किए गए अंशों की संख्या को बढ़ाता है। यह विकल्प उन डेटा वेयरहाउस एप्लिकेशनों के लिए मददगार हो सकता है, जिनके पास सीमित संख्या में इंडेक्स या डेटा स्कैन चलाने वाले उपयोगकर्ता हैं)

-टी 834; (SQL सर्वर को बफ़र पूल, http://msdn2.microsoft.com/en-us/library/aa366720.aspx , http://support.microsoft के लिए आवंटित की गई मेमोरी के लिए Windows बड़े पृष्ठ के आवंटन का उपयोग करने का कारण बनता है। कॉम / केबी / 920093 )

  • SQL सर्वर बड़े पृष्ठ एक्सटेंशन का उपयोग करता है
  • SQL सर्वर तेज फ़ाइल आरंभीकरण विकल्प का उपयोग करता है
  • AUTOSHRINK सभी डेटाबेस के लिए बंद है

समस्या यह है - कि सर्वर के अपटाइम के कुछ बिंदु (कुछ दिनों से लेकर महीनों तक) GHOST CLEANUPप्रक्रिया शुरू करने से मजबूर क्लीनअप्स को काम करने से मना कर दिया जाता है और बस अपना सामान्य काम किया जाता है - कई सेकंड में कई पेज साफ करता है ( which is seen thru Extended Events), जो उपयुक्त नहीं है , क्योंकि यह हटाए गए सभी पंक्तियों को साफ करने में सक्षम नहीं है

SQL Server 2005 RTM एंटरप्राइज़ के समय से समस्या बनी रहती है

मुझे इस मुद्दे को हल करने की कोशिश कैसे की गई:

  • तालिकाओं के संकुल अनुक्रमित पर SCAN संचालन के लिए मजबूर करने की कोशिश की
  • एससीएएन संचालन को मजबूर करने की कोशिश की, जिसमें तालिकाओं के गुच्छे अनुक्रमित पर बीओएलबी कॉलम की सभी सामग्री शामिल है
  • सिस्टम sp_clean_db_free_space और sp_clean_db_file_free_space
  • DB में सभी फ़ाइलों और पृष्ठों के लिए मैन्युअल रूप से dbcc cleanpage (@dbid, @fileid, @page)
  • क्लस्टर इंडेक्स का पुनर्निर्माण और पुनर्गठन
  • डेटाबेस को फिर से बनाना
  • DBCC FORCEGHOSTCLEANUP

  • जब मैं प्रश्न चलाता हूं:

    select * 
    from sys.dm_db_index_physical_stats(db_id(), object_id('ProblemTable'), 1, 0, 'detailed')

    मुझे लाखों और दसियों करोड़ भूत रिकॉर्ड दिखाई देते हैं, लेकिन केवल आवंटन इकाई प्रकार LOB_DATA के लिए

केवल चीजें, जो मदद करती हैं:

  • SHUTDOWN कमांड के साथ सर्वर को रोकना या पूरे होस्ट को फिर से शुरू करना - यह मदद करता है, पुनरारंभ करने के बाद GHOST CLEANUP प्रक्रिया कुछ घंटे चलती है और वास्तव में सभी भूतों के रिकॉर्ड को साफ करती है
  • EMPTYFILE विकल्प के साथ DBCC SHRINKFILE - सभी डेटा को एक फ़ाइल से दूसरी या नई बनाई गई फ़ाइलों में स्थानांतरित करने से केवल इस फ़ाइल में भूत रिकॉर्ड साफ़ होते हैं - समस्या यह है कि मुझे वास्तव में ऑपरेशन से नफरत है। और यह एक फ़ाइल के लिए 3-4 दिन लगते हैं

प्रश्न - क्या सर्वर डाउनटाइम के बिना GHOST CLEANUP को बाध्य करने के लिए कोई प्रोग्रामेटिक (बेहतर) या रखरखाव तरीका मौजूद है, क्योंकि सर्वर डाउनटाइम बहुत अधिक, यहां तक ​​कि अस्वीकार्य है - इसका हजारों से दसियों हजार डॉलर प्रति घंटे तक

समस्याओं पर ध्यान दिया गया था कि यहाँ एक जैसे हैं:

और बस वही यहाँ है:

जवाबों:


12

अंत में, एमएस ने इस मुद्दे को बग के रूप में मान्यता दी है: http://support.microsoft.com/kb/2622823

संक्षेप में: यह तय है

  • Sql सर्वर 2008 SP3 CU4
  • Sql सर्वर 2008 R2 CU10
  • Sql सर्वर 2008 R2 SP1 CU4

Sql Server 2012 SP1 में मैं रनटाइम के वर्ष से अधिक के लिए समस्या का अनुभव नहीं कर रहा हूं।


3

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

क्या आपने डेटाबेस को बंद करने और फिर ऑनलाइन लाने की अनुमति देने की कोशिश की है? यह चलाने के लिए क्रैश रिकवरी का कारण बनेगा और भूत सफाई को किक कर सकता है।

क्या आप बार-बार टेबल पर लिख रहे हैं? अक्सर मैं हर समय मतलब है?

जैसा कि MSKB 932115 आप देख रहे हैं कि भूत रिकॉर्ड सभी फाइलों में ही बचा है, या यह फ़ाइल समूह में पहली फ़ाइल को साफ कर रहा है?

-T1117 और तत्काल फ़ाइल init का उपयोग क्यों?


1. मैं निश्चित रूप से एमएस के समर्थन में जाऊंगा। 2. यदि मैं DB को बंद कर देता हूं तो यह लगभग 10-30 मिनट रोलिंग ट्रांस आगे और आगे बढ़ता है, जो अस्वीकार्य है। 3. जीसी आईएस चल रहा है, लेकिन यह डिलीट ऑफ-लाइन एलओबी प्रविष्टियों को संसाधित नहीं कर रहा है। 4. प्रति दिन 20 से 600 तक प्रति दिन और हर समय लिखते समय लगातार प्रदर्शन करने वाली तालिकाओं को लिखना। 5. DB की पहली फ़ाइल उपयोग में नहीं है - इसमें बड़ी मेज नहीं हैं और केवल सिस्टम स्टोरेज के रूप में उपयोग की जाती है, इसलिए - बस कोई भी भूत रिकॉर्ड नहीं है।
ओलेग डोक

-T1117 के साथ मैं सिर्फ कई फाइलों के बीच सभी लोड को फैलाना चाहता हूं, इसके बजाय जब फाइलग्रुप से केवल एक फाइल बची होती है, जहां अभी भी खाली जगह मौजूद है - यह पीएफएस के LATCHes पर धीमा करना शुरू कर देता है, तत्काल फाइल इनिट फ़ाइलग्रोथ के समय को कम कर देता है, क्योंकि वेतन वृद्धि 10-50 Gb प्रति टर्न है। मैं फ़ाइलों को केवल उतना ही सेट नहीं कर सकता, जितना मैं कर सकता हूं, क्योंकि यह पूरी तरह से अप्रत्याशित है - किन फाइलों को आज और किस मात्रा में उनका डेटा मिलेगा। यह कहना आसान है कि SAN को अधिक स्थान जोड़ने के लिए कहना होगा, भविष्यवाणी करने की तुलना में कि मुझे किस स्थान को जोड़ना चाहिए।
ओलेग डोक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.