2013-06-11 8 views
10

एक "सबसे अच्छा अभ्यास" आपSQL क्वेरी प्रदर्शन और dropcleanbuffers

DBCC FREESESSIONCACHE 
DBCC FREEPROCCACHE 
DBCC DROPCLEANBUFFERS 

चलाने के लिए एक SQL क्वेरी पर प्रदर्शन विश्लेषण करने से पहले है कि नहीं है।

फिर भी, उदाहरण के लिए, बाद में एक DROPCLEANBUFFERS:

उपयोग बी सी सी DROPCLEANBUFFERS नीचे बंद और सर्वर को पुन: प्रारंभ बिना एक ठंडा बफर कैश साथ प्रश्नों का परीक्षण करने के।

बफर पूल से क्लीन बफर ड्रॉप करने के लिए, पहले चेककोपिन को ठंडा बफर कैश का उत्पादन करें। यह डिस्क पर लिखे जाने और बफर को साफ़ करने के लिए वर्तमान डेटाबेस के लिए सभी गंदे पृष्ठों को मजबूर करता है। के बाद आप यह करते हैं, तो आप बफर पूल से सभी बफर को निकालने के लिए डीबीसीसी DROPCLEANBUFFERS कमांड जारी कर सकते हैं।

मुझे लगता है कि इसका मतलब है कि आप अपनी क्वेरी का परीक्षण करेंगे जैसे कि यह सर्वर में चलने वाली पहली क्वेरी थी, इस प्रकार क्वेरी का वास्तविक "वास्तविक जीवन" प्रभाव कम होगा।

क्या यह सचमुच पूछताछ करने के लिए तीन आदेशों को चलाने के लिए सलाह दी जाती है या क्या यह आपको ऐसे अनुभवजन्य परिणामों में ले जाती है जिनके पास लाइव वातावरण में वास्तविक क्वेरी समय का कोई निकट संबंध नहीं है?

+0

मुझे खेल के लिए देर हो चुकी है लेकिन मुझे लगता है कि मुझे यह इंगित करना चाहिए कि यदि आपके पास उत्पादन में पीएलई समस्याएं हैं तो हाँ, ये आदेश शायद परीक्षण के लिए सहायक होंगे। – influent

उत्तर

7

मैं असहमत हूं कि यह सर्वोत्तम अभ्यास है और इसका शायद ही कभी इसका उपयोग होता है।

एक प्रश्न जो मैं ट्यून करता हूं वह लोकप्रिय होना चाहिए, अक्सर एक रन होना चाहिए। यह मुझे मेरी हिरन के लिए सबसे ज्यादा धमाके देता है। इसे किसी भी योजना या डेटा के लिए शायद ही कभी "ठंडा" चलाया जाना चाहिए। नहीं डिस्क रीड प्रणाली या क्वेरी अनुकूलक संकलन

यह DBA.SE पर कहा गया था कि कुछ समय पहले:

मैं क्वेरी निष्पादन का परीक्षण कर रहा हूँ। इन कृपया देखें

3

मैं उसके जवाब में राज्यों @gbn, और मुझे नहीं लगता कि क्या मैं कभी भी प्रदर्शन के अलावा और कुछ के लिए तीन आदेशों का उपयोग किया है के साथ सहमत संभावित दृष्टिकोण के बीच एक अंतर।

इसके अलावा परीक्षण के लिए केवल इन तीन डीबीसीसी को उत्पादन वातावरण पर चलाने के लिए ज्यादातर मामलों में बीमार सलाह दी जाएगी। और टेस्ट डेटा और टेस्ट लोड के साथ परीक्षण वातावरण में प्रदर्शन ट्यूनिंग प्रश्न, अक्सर आपको आपकी क्वेरी के संबंध में गलत निष्कर्ष निकालने के लिए प्रेरित करेंगे।

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

5

क्या यह सचमुच पूछताछ करने के लिए तीन आदेशों को चलाने के लिए सलाह दी जाती है या क्या यह आपको ऐसे अनुभवजन्य परिणामों में ले जाती है जिनके पास लाइव वातावरण में वास्तविक क्वेरी समय का कोई निकट संबंध नहीं है?

यह निर्भर करता है।

यदि आप DBCC DROPCLEANBUFFERS नहीं चलाते हैं तो एक मौका है कि आप कुछ अजीब परिणामों के साथ समाप्त हो जाएंगे जबतक कि आप अपने प्रदर्शन विश्लेषण के तरीके से बहुत सावधान नहीं हैं। उदाहरण के लिए, आम तौर पर दूसरी बार जब आप कोई क्वेरी चलाते हैं तो यह तेज़ी से चल रहा है क्योंकि आवश्यक पृष्ठ शायद स्मृति में कैश किए जाते हैं - चल रहे DBCC DROPCLEANBUFFERS यहां सहायता करता है क्योंकि यह सुनिश्चित करता है कि आपके परीक्षण में लगातार प्रारंभिक बिंदु है और यह सुनिश्चित करता है कि आपकी क्वेरी कृत्रिम रूप से जल्दी से चल रहा नहीं है क्योंकि यह आपकी क्वेरी के महंगे डिस्क एक्सेस भागों को छोड़ रहा है।

जैसा कि आप कहते हैं, लाइव वातावरण में यह हो सकता है कि यह डेटा हमेशा कैश किया जाता है और इसलिए आपका परीक्षण उत्पादन की स्थिति का प्रतिनिधि नहीं है - यह इस बात पर निर्भर करता है कि आप डेटा के अनुमान के आधार पर प्रदर्शन का विश्लेषण कर रहे हैं या नहीं अक्सर उपयोग किया जाता है और इसलिए आमतौर पर कैश किया जाएगा, या अक्सर पहुंचाया जाएगा और इसलिए डिस्क asscess शामिल होने की संभावना है।

संक्षिप्त उत्तर है कि उन 3 बयानों चल सुनिश्चित करें कि आप संगत परिणामों जबकि निष्पादन परीक्षण प्राप्त करने में मदद कर सकते हैं लेकिन आप जरूरी नहीं करना चाहिए हमेशा परीक्षण से पहले इन चलाने के लिए, बजाय आप समझने के लिए हर एक को होता है की कोशिश करनी चाहिए और उत्पादन वातावरण की तुलना में आपकी क्वेरी पर इसका क्या असर होगा।


एक अलग रूप में के रूप में, कभी रन एक उत्पादन सर्वर पर उन 3 बयानों के किसी भी जब तक आप जानते हैं कि वास्तव में तुम क्या कर रहे हैं!

+0

क्या आप समझा सकते हैं कि यह एक बुरा विचार क्यों है? उस समय उत्पादन सर्वर का सक्रिय रूप से उपयोग नहीं किया जा रहा है – userSteve

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