2010-09-30 11 views
6

मेरे पास एक संग्रहीत प्रक्रिया है जिसमें कई SELECT आदेश शामिल हैं।क्या मैक्सडीओपी सिर्फ एक संग्रहीत प्रक्रिया के लिए सेट किया जा सकता है?

प्रत्येक चयन कमांड के अंत में OPTION (MAXDOP 8) डालने के बजाय, क्या मैं इसे संग्रहीत प्रक्रिया की शुरुआत में सेट कर सकता हूं और अंत में इसे सर्वर पर सेट किए बिना इसे हटा सकता हूं?

पूर्व।

sp_configure 'max degree of parallelism', 4 
go 
reconfigure with override 
+1

क्यों 'MAXDOP 8?' क्या आपके पास सर्वर स्तर पर समानांतरता समानता 1 है? संग्रहित प्रक्रिया में क्या गलत है जिसे आपको क्वेरी विकल्प जोड़ने की आवश्यकता महसूस होती है? – LittleBobbyTables

+0

इस सेटिंग का उपयोग कर आप किस मुद्दे को सही करने का प्रयास कर रहे हैं? मुझे संदेह है कि यदि आप अधिक जानकारी (कोड सहित) पोस्ट कर सकते हैं तो बेहतर तरीका हो सकता है। –

उत्तर

4

दुख की बात है, नहीं।

आपके विकल्प या तो sp_configure 'max degree of parallelism' का उपयोग कर सर्वर स्तर पर सेट हैं, या OPTION (MAXDOP 8) का उपयोग करने के लिए अपने संग्रहित प्रक्रिया में प्रत्येक SELECT कथन को अपडेट करें।

उसने कहा, क्वेरी विकल्प अंतिम उपाय होना चाहिए और यदि आपके प्रश्न खराब प्रदर्शन कर रहे हैं, तो अंतर्निहित समस्या हो सकती है।

2

सौभाग्य से नहीं। ऐसी चीजों को करने का अनुशंसित तरीका उन्हें बिल्कुल नहीं करना है। ओवरराइटिंग क्वेरी केवल दुर्लभ अपवाद होना चाहिए जब SQL सर्वर वास्तव में खराब योजना चुनता है, न कि नियम।

को समझने के लिए सबसे महत्वपूर्ण बात यह है कि क्वेरी संकेत डिजाइन कर रहे हैं: और जब एक प्रश्न योजना लागू किए जाने की है, उचित कार्रवाई क्वेरी योजना गाइड का उपयोग करने के लिए है समय विकल्प (उन्हें कोड प्रश्नों को संशोधित करने के लिए परिवर्तन की आवश्यकता है) और उनका दुरुपयोग करने से एप्लिकेशन की भविष्य की रखरखाव बहुत कम हो जाती है (जब हार्डवेयर में परिवर्तन होता है, या विभिन्न परिनियोजन साइटों पर, संकेत होगा गलत)। इसके विपरीत क्वेरी प्लान गाइड परिनियोजन समय विकल्प हैं, उन्हें साइट परिवर्तन की आवश्यकता नहीं है और साइट पर हार्डवेयर क्षमता और वर्कलोड के अनुसार प्रत्येक तैनात साइट पर अनुकूलित किया जा सकता है।

+0

किसी भी संकेत का उपयोग शायद ही कभी अनुशंसित किया जाता है, लेकिन हम अभी भी उन्हें एक कारण या किसी अन्य कारण के लिए उपलब्ध हैं और आप शायद सोचना चाहें क्यों;) ... क्षमा करें, लेकिन यह उत्तर कोई मदद नहीं है। –

11

मेरी इच्छा है कि proc के दायरे के लिए MAXDOP सेट करने का कोई तरीका था लेकिन मैं सहमत हूं कि ऐसा करने का कोई तरीका नहीं है।

ऊपर दी गई कुछ सलाहयों का मुकाबला करने के लिए, MAXDOP संकेत का उपयोग करने के बहुत अच्छे कारण हैं, जैसे कि घंटे के बाद इंडेक्स बिल्ड, अपडेट या डेटा एक बहु प्रोसेसर वातावरण में बनाता है, लेकिन जहां प्रोसेसर गिनती से MAXDOP कम सेट होता है व्यस्त "चोटी" घंटों के दौरान गतिविधि को संतुलित करने में मदद के लिए, जैसे कि सामान्य व्यावसायिक घंटों। सूचकांक संकेतों जैसे कुछ संकेतों के विपरीत, यह आपकी प्रक्रियाओं को अधिक धागे का उपयोग करने के लिए मजबूर नहीं करेगा, लेकिन यदि योजना इतनी चुनती है तो यह ऐसा करने में सक्षम होगी।

कुछ इंडेक्स बिल्ड्स धागे को दोगुना करते हुए लगभग दोगुनी तेजी से निष्पादित करेंगे, इसलिए वास्तविक लाभ है।

+0

[प्लस 1] विशिष्ट किनारे के मामलों को पहचानने के लिए जो यह विकल्प फायदेमंद है। – l46kok

संबंधित मुद्दे