होल्ड ऑन होल्ड ऑन होल्ड
हालांकि प्रदर्शन और लाइसेंसिंग पहलू दिलचस्प हैं, वे विचार करने के लिए केवल एक कार्यभार का पहलू नहीं हैं।
प्रोसेसर की पसंद पर असर डालने वाली एक चीज है श्रमिक सूत्र।
वर्कर थ्रेड्स?
हाँ दोस्त! वे चीजें हैं जो आपका SQL सर्वर आपके प्रश्नों को चलाने के लिए उपयोग करेगा और उन सभी पृष्ठभूमि सामानों को करेगा जो चीजों को आकार में रखने के लिए करने की आवश्यकता है।
जब आप वर्कर थ्रेड से बाहर निकलते हैं, तो आप THREADPOOL से टकराते हैं प्रतीक्षा करता है
धागा पूल?
धागा पूल। यह RESOURCE_SEMAPHORE और RESOURCE_SEMAPHORE_QUERY_COMPILE के साथ-साथ आपके सर्वर पर होने वाले सबसे कम इंतजार में से एक है । लेकिन वे मेमोरी वेट हैं, और यह एक सीपीयू प्रश्न है।
तो वापस क्यों यह wiggity wack है।
यह कैसे SQL सर्वर कार्यकर्ता सूत्र की गणना करता है :
ध्यान दें कि कोर कोर को दोगुना करना मैक्स वर्कर थ्रेड्स को दोगुना नहीं करता है, और आपको 1 कोर के साथ समान संख्या मिलती है जैसा कि आप 4 कोर के साथ करते हैं? समीकरण है:512 + ((logical CPUs - 4) * 16)
यह शर्म की बात है, क्योंकि जब कोर मायने रखता है, घड़ी की गति आमतौर पर एक पीढ़ी या दो वापस करने के लिए nosedives।
इंटेल चिप्स के किसी भी हालिया लाइन पर एक नज़र डालने से एक समान प्रवृत्ति दिखाई देगी।
मुझे कैसे पता चलेगा कि मुझे कितने धागे चाहिए?
यह बहुत कुछ पर निर्भर करेगा:
- उपयोगकर्ताओं की संख्या
- समानांतर प्रश्नों की संख्या
- धारावाहिक प्रश्नों की संख्या
- डेटाबेस और डेटा सिंक्रनाइज़ेशन की संख्या (लॉग शिपिंग के लिए मिररिंग, एजी, बैकअप)
- यदि आप चूक पर MAXDOP और CTFP छोड़ देते हैं
यदि आप आज उनमें से नहीं चल रहे हैं, तो आप शायद ठीक हैं।
लेकिन आप कैसे जानते हैं कि आप क्या हैं?
अच्छे प्रश्न हैं, और बहुत अच्छे प्रश्न हैं, और lemme आपको कुछ बताते हैं, जो एक महान प्रश्न है ।
THREADPOOL कनेक्शन समस्याओं के रूप में प्रकट हो सकता है, और आप त्रुटि लॉग में संदेश देख सकते हैं कि कोई थ्रेड स्पॉन करने में सक्षम नहीं है ।
आप sp_Blitz या sp_BlitzFirst (पूर्ण प्रकटीकरण, मैं इस परियोजना में योगदान देता हूं) जैसे मुफ्त टूल का उपयोग करके अपने सर्वर के प्रतीक्षा आँकड़े देख सकता हूं।
EXEC sp_Blitz
EXEC sp_BlitzFirst @SinceStartup = 1
क्या मैं सिर्फ मैक्स वर्कर थ्रेड्स नहीं बढ़ा सकता?
MWT बढ़ने से वृद्धि हो सकती है SOS_SCHEDULER_YIELD
।
यह दुनिया का अंत नहीं है, लेकिन इसके बारे में सोचें जैसे कि एक शिक्षक की कक्षा में बंचा चिल्लाते हुए बच्चों को जोड़ना।
अचानक, यह ध्यान आकर्षित करने के लिए प्रत्येक बच्चे के लिए कठिन होने वाला है।
जब एक प्रक्रिया अपने 4ms क्वांटम को समाप्त करती है , तो संभवतः सीपीयू पर प्राप्त होने के इंतजार में इसके आगे और धागे होंगे।
प्रदर्शन उसी के बारे में महसूस कर सकता है।
मैं कम वर्कर थ्रेड्स का उपयोग कैसे कर सकता हूं?
आप एक [संज्ञा] के क्रूर [संज्ञा], समर्थन के लिए परिवारों के साथ कार्यकर्ता हैं! बंधक! सपने!
लेकिन ठीक है, नीचे की रेखा का सम्मान करेंगे। तुम मालिक हो।
शुरू करने के लिए सबसे आसान जगह चूक से समानांतरता के लिए MAXDOP और कॉस्ट थ्रेशोल्ड फॉर पैरेललिज़्म जैसी सेटिंग्स बदल रही है।
यदि आपके पास उन लोगों को सेट करने के बारे में प्रश्न हैं, तो यहां से जाएं:
उसके बाद, आपकी नौकरी बहुत मुश्किल हो जाती है। आपको पता चल जाएगा कि उन सभी थ्रेड्स का उपयोग क्या है। आप कभी-कभी अपने प्रतीक्षा आँकड़े देखकर ऐसा कर सकते हैं।
विशेष रूप से, यदि आपको समानांतरवाद पर उच्च प्रतीक्षा ( CXPACKET
) और ताले पर उच्च प्रतीक्षा ( LCK_
) है, तो आप समानांतर प्रश्नों को शामिल करते हुए लंबी अवरुद्ध श्रृंखलाओं में दौड़ सकते हैं।
तुम्हें पता है क्या बदबू आ रही है? जबकि उन सभी समानांतर प्रश्नों को उनके ताले प्राप्त करने की प्रतीक्षा कर रहे हैं, वे अपने आवंटित धागे वापस नहीं देते हैं।
आप लगभग चार कोर वीएम सुन सकते हैं कि आपके व्यवस्थापक ने आश्वासन दिया था कि आप किसी भी कार्यभार को हवा, हुह के लिए पर्याप्त से अधिक थे?
दुर्भाग्य से, उस सामान को हल करने के लिए आपको किस प्रकार की क्वेरी और इंडेक्स ट्यूनिंग करनी है, यह सवाल के दायरे से परे है।
उम्मीद है की यह मदद करेगा!