7

मैंने एक दिलचस्प प्रदर्शन परिवर्तन देखा है जो 1,5 मिलियन दर्ज मूल्यों के आसपास होता है। क्या कोई मुझे एक अच्छा स्पष्टीकरण दे सकता है कि यह क्यों हो रहा है?एसक्यूएल सर्वर 2008 आर 2 डीसी सम्मिलन प्रदर्शन परिवर्तन

तालिका बहुत सरल है। इसमें शामिल है (बिगिन, बिगिन, बिगिन, बूल, वर्बिनरी (अधिकतम)) मेरे पास पहले तीन बिगिनट्स पर एक पीके क्लूसर्ड इंडेक्स है। मैं डेटा varbinary (अधिकतम) के रूप में केवल बुलियन "सच" डालें।

उस बिंदु से, प्रदर्शन काफी स्थिर लगता है।

किंवदंती: वाई (एमएस में समय) | एक्स (आवेषण 10K)

enter image description here

मैं भी निरंतर अपेक्षाकृत छोटे (कभी कभी बहुत बड़े) बढ़ जाता रहा ग्राफ पर है के बारे में curios।

स्पाइक से पहले वास्तविक निष्पादन योजना।

Actual Execution Plan from before spikes

लीजेंड:
टेबल मैं में डालने हूँ: TSMDataTable
1. BigInt DataNodeID - FK
2. BigInt TS - मुख्य timestapm
3. BigInt सीटीएस - संशोधन टाइमस्टैम्प
4 बिट: आईसीटी - अंतिम डालने वाले मान का रिकॉर्ड रखता है (पढ़ने के प्रदर्शन को बढ़ाता है)
5. डेटा: डेटा
बूल मूल्य वर्तमान समय sta एमपीएल

वृद्धि
यह स्थानीय है।
यह किसी भी संसाधन को साझा नहीं कर रहा है।
यह निश्चित आकार डेटाबेस है (पर्याप्त है कि यह विस्तार नहीं करता है)।
(कंप्यूटर, 4 कोर, 8 जीबी, 7200 आरपीएस, विन 7)।
(SQL सर्वर 2008 R2 डीसी, प्रोसेसर समानता (कोर 1,2), 3GB,)

+1

कीलें शायद एसक्यूएल आलसी लेखक –

+0

BTW हो जाएगा, 3 bigints पर संकुल अनुक्रमणिका एक बुरा विचार है। –

+1

वह क्यों है? आप क्या प्रस्तावित करेंगे? – Falcon

उत्तर

1

आप कार्य योजना लागू करके जांच की है एक बार समय चला जाता है? आंकड़ों के आधार पर योजना बदल सकती है। चूंकि आपका डेटा तेज़ी से बढ़ता है, आंकड़े बदल जाएंगे और इससे एक अलग निष्पादन योजना शुरू हो सकती है।

नेस्टेड लूप डेटा की थोड़ी मात्रा के लिए अच्छे हैं, लेकिन जैसा कि आप देख सकते हैं, समय मात्रा के साथ बढ़ता है। एसक्यूएल क्वेरी ऑप्टिमाइज़र तो शायद हैश या विलय योजना में स्विच करता है जो डेटा की बड़ी मात्रा के लिए संगत है।

इस सिद्धांत की तुरंत पुष्टि करने के लिए, आंकड़े ऑटो अपडेट को अक्षम करने और फिर से अपना परीक्षण चलाने का प्रयास करें। आपको तब "टक्कर" नहीं देखना चाहिए।

संपादित करें: चूंकि फाल्कन ने पुष्टि की है कि आंकड़ों के कारण प्रदर्शन बदल गया है, हम अगले चरणों को पूरा कर सकते हैं।

मुझे लगता है कि आप एक करके एक डालें, सही? उस स्थिति में (यदि आप थोक सम्मिलित नहीं कर सकते हैं) तो आप एक हीप कार्य तालिका में डालने से काफी बेहतर होंगे, फिर नियमित अंतराल में पंक्तियों को लक्ष्य तालिका में थोक में ले जाएं। ऐसा इसलिए है क्योंकि प्रत्येक सम्मिलित पंक्ति के लिए, SQL को कुंजी डुप्लिकेट, विदेशी कुंजी और अन्य चेक और सॉर्ट और पृष्ठों को विभाजित करने के लिए हर समय जांचना पड़ता है।यदि आप थोड़ी देर बाद इन चेकों को स्थगित कर सकते हैं, तो आपको लगता है कि आपको एक शानदार सम्मिलित प्रदर्शन मिलेगा।

मैंने मेट्रिक्स लॉगिंग के लिए इस विधि का उपयोग किया। लॉगिंग एक सादे ढेर तालिका में जायेगी जिसमें कोई इंडेक्स नहीं, कोई विदेशी कुंजी नहीं, कोई चेक नहीं है। हर दस मिनट में, मैं इस तरह की एक नई टेबल बना देता हूं, फिर एक लेनदेन (स्विफ्ट स्वैप) के भीतर दो "sp_rename" के साथ मैं प्रसंस्करण के लिए पूर्ण तालिका उपलब्ध कराता हूं और नई तालिका लॉगिंग लेती है। फिर आपको थोक में केवल एक बार विभाजित करने, छंटनी, सभी जांच करने का आराम मिलता है। इस से

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

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

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

यह एक HW उन्नयन देने के लिए कोशिश कर सकते हैं। आपको यह पता लगाने की आवश्यकता होगी कि कौन सा घटक बाधा है। यह सीपीयू या डिस्क हो सकता है - इस मामले में मेरा पसंदीदा। मेमोरी की संभावना नहीं है यदि आपके पास एक से एक आवेषण है। यह तब आसान होना चाहिए, यदि यह सीपीयू नहीं है (ग्राफ के शीर्ष पर लटकती रेखा) तो यह संभवतः आपके आईओ को वापस पकड़ने की संभावना है। कुछ बेहतर नियंत्रक, बेहतर कैश्ड है और तेजी से डिस्क का प्रयास करें ...

+0

मैं इसे देख लूंगा और आपको बताऊंगा कि मुझे क्या मिला। – Falcon

+1

मैंने इसका परीक्षण किया है, और आंकड़ों को बंद करने के बाद, मुझे "टक्कर" दिखाई नहीं दे रहा था। परीक्षण परिणामों के माध्यम से बहुत ही सुसंगत थे, और मैंने महत्वपूर्ण देखा - 10% - प्रदर्शन में वृद्धि। – Falcon

+1

बहुत अच्छी फाल्कन :) खुश। अब आप जानते हैं कि क्या हो रहा है और आप इसे ठीक करने में सक्षम हो सकते हैं;) मैं अपने उत्तर को संपादित करने के कुछ सुझाव देने की कोशिश करूंगा। – Rbjz