बेंजामिन नेवारेज़ द्वारा Microsoft SQL Server 2014 क्वेरी ट्यूनिंग और ऑप्टिमाइज़ेशन (किंडल पर भी उपलब्ध) की मेरी प्रति, पिछले सप्ताह आई। मैं इसे तुरंत प्राप्त करने में सक्षम नहीं था, लेकिन सप्ताहांत में मैं अंततः डायपर परिवर्तन और चिड़ियाघर की यात्रा के बीच इसके माध्यम से क्रूज करने में सक्षम था।
TL;DR :वर्थ द मनी
बेंजामिन पूरी क्वेरी ऑप्टिमाइज़ेशन प्रक्रिया का एक संपूर्ण विवरण प्रस्तुत करता है, और बहुत सारी पृष्ठभूमि आपको इसे समझने की आवश्यकता होगी। वह अनुक्रमित, सांख्यिकी और योजना कैशिंग के साथ-साथ पैरामीटर सूँघने जैसे सामान्य मुद्दों से निपटने का तरीका मानता है। वह ऑप्टिमाइज़ फॉर एड हॉक वर्कलोड और फ़ोर्स्ड पैरामीटराइज़ेशन जैसे लोकप्रिय विकल्पों के बारे में बताते हैं, और वे कैसे योजनाओं को कैश और पुन:उपयोग करने के तरीके को बदलते हैं। वह कई गैर-दस्तावेज सुविधाओं और ट्रेस फ़्लैग्स पर भी चर्चा करता है जो आपकी क्वेरी के लिए SQL सर्वर के दृष्टिकोण को बेहतर ढंग से समझने (या जबरदस्ती) करने में आपकी मदद कर सकते हैं, और ऑप्टिमाइज़र द्वारा किए गए निर्णयों और उनके प्रभाव की समीक्षा करने के लिए ट्रेस, एक्सटेंडेड इवेंट्स और डीबीसीसी कमांड का उपयोग कैसे करें। ve था।
इन-मेमोरी ओएलटीपी ("हेकाटन"), क्लस्टर्ड कॉलमस्टोर इंडेक्स, इंक्रीमेंटल स्टैटिस्टिक्स और नए कार्डिनैलिटी एस्टीमेटर सहित कई नई SQL सर्वर 2014 सुविधाओं के लिए समर्पित सामग्री का एक अच्छा हिस्सा भी है। जैसा कि पुस्तक लिखी जा रही थी, SQL Server 2014 के लिए AdventureWorks नमूना डेटाबेस अभी तक प्रकाशित नहीं हुए थे, लेकिन वे अब उपलब्ध हैं।
पुस्तक क्वेरी अनुकूलक सीमाओं पर एक जटिल लेकिन सूचनात्मक अध्याय के साथ समाप्त होती है जो उप-इष्टतम योजनाओं की ओर ले जाती है, और उनके आसपास काम करने के लिए संकेत और योजना गाइड का उपयोग कैसे करें।
कुछ सीमाएं
क्वेरी ट्यूनिंग के लिए एक पूरी तरह से पूर्ण समग्र संदर्भ में, कुछ चीजें थीं जो मैंने सोचा था कि बेहतर हो सकता था:
- बेंजामिन ट्रेस और एक्सटेंडेड इवेंट्स से शोप्लान जानकारी एकत्र करने के बारे में बात करता है, और सही ढंग से बताता है कि प्रोफाइलर वह तरीका नहीं है जिससे आप ट्रेस चलाना चाहते हैं, क्योंकि भयानक और अच्छी तरह से प्रलेखित प्रदर्शन ओवरहेड। यह एक अच्छी बात है, क्योंकि ट्रेस को हटा दिया गया है और प्रोफाइलर वह है जिसे लोग आमतौर पर उपयोग करने के लिए डिफ़ॉल्ट करते हैं।
query_post_execution_showplan
. के ऊपरी हिस्से के बारे में एक छोटी सी चेतावनी है घटना, जो मुझे लगता है कि थोड़ा और जोर दिया जा सकता था, अनुस्मारक के साथ कि इसका उपयोग केवल बहुत लक्षित ट्यूनिंग और समस्या निवारण के लिए किया जाना चाहिए। अपने कार्यभार में प्रत्येक प्रश्न के लिए इसे एकत्रित करने से अच्छे से अधिक नुकसान होने की संभावना है।
- वह फ़िल्टर्ड इंडेक्स और आंकड़ों पर चर्चा करता है, लेकिन इस तथ्य पर प्रकाश डालता है कि जब स्वचालित अपडेट की बात आती है तो वे समस्याग्रस्त होते हैं, क्योंकि कोई विशेष एल्गोरिदम उपयोग नहीं किया जाता है, भले ही इंडेक्स केवल तालिका के सबसेट का प्रतिनिधित्व करता है। Microsoft ने पुष्टि की है कि यह एक समस्या है, लेकिन इस समय, उनके पास इसे ठीक करने की कोई योजना नहीं है। अधिक जानकारी के लिए, #509638 कनेक्ट करें और #333532 कनेक्ट करें देखें। अन्य फ़िल्टर की गई अनुक्रमणिका सीमाओं पर विचार करने के लिए इस ब्लॉग पोस्ट को भी देखें।
- जबकि 2014 की सुविधाओं का कवरेज काफी व्यापक था, मुझे
sys.dm_exec_query_profiles
का कोई उल्लेख नहीं मिलने पर आश्चर्य हुआ , वास्तविक समय में क्वेरी प्रगति पर नज़र रखने के लिए एक नया DMV - सभी तरह से व्यक्तिगत ऑपरेटर के लिए। हालांकि, यह सभी के लिए आवश्यक जानकारी नहीं है, क्योंकि यह बहुत व्यापक उपयोग का मामला नहीं है (IMHO यह केवल विशेष रूप से लंबे समय तक चलने वाले प्रश्नों के लिए वास्तव में उपयोगी है)।
- यह पूरी तरह से सही है, लेकिन तकनीकी शीर्षकों में यह सामान्य है:सूचकांक थोड़ा गलत है। उदाहरण के लिए, SQL संतरी योजना एक्सप्लोरर का संदर्भ पृष्ठ 13 की ओर इशारा करता है, लेकिन प्रासंगिक सामग्री वास्तव में पृष्ठ 14 पर है। जैसा कि मैंने कहा, बहुत मामूली नाइट-पिक, यह सिर्फ मेरे लिए बाहर खड़ा था क्योंकि यह पहली चीज थी जिसे मैंने देखा था सूचकांक में ऊपर। :-)
मैं इन शिकायतों पर विचार नहीं करूंगा। किसी भी किताब में हर चीज के बारे में अंतिम विवरण नहीं हो सकता। तो कृपया उन्हें परिशिष्ट मानें। :-)
सारांश
यह मेरे लिए शीघ्र ही एक सुविधाजनक संदर्भ बन गया है; कुत्ते के कान पहले से ही मेरे कई बुकमार्क को ब्लॉग पोस्ट में बदल रहे हैं जो कुछ अस्पष्ट विवरण या ट्रेस ध्वज का उल्लेख करते हैं, और कई मामलों में बेंजामिन ने इसे अधिक विस्तार से वर्णित किया है और/या इसे बेहतर संदर्भ के साथ तैयार किया है। इस पुस्तक और नीचे उल्लिखित कुछ शीर्षकों के बीच, मुझे लगता है कि टी-एसक्यूएल से परिचित कोई भी व्यक्ति गोता लगाने से पहले ऑप्टिमाइज़र के बारे में शून्य ज्ञान होने पर भी बहुत तेज़ी से गति प्राप्त कर सकता है।
पूरक सामग्री
अन्य पुस्तकें जिन्हें मैं इस शीर्षक के पूरक के रूप में सुझाऊँगा:
- Fritchey की SQL सर्वर क्वेरी प्रदर्शन ट्यूनिंग प्रदान करें
- एसक्यूएल सर्वर 2012 के लिए जेसन स्ट्रेट के विशेषज्ञ प्रदर्शन अनुक्रमण
- फ्रित्ची की SQL सर्वर निष्पादन योजनाओं को अनुदान दें
और निश्चित रूप से ट्यूनिंग और अनुकूलन की आपकी समझ में मदद करने के लिए ब्लॉग पोस्ट और अन्य लेखों की एक अंतहीन आपूर्ति है। मैं पॉल व्हाइट की सामग्री के प्रति आंशिक हूं - वे लगभग उतने ही गहरे हैं जितना कि नश्वर कभी जाना चाहेंगे, लेकिन आप उनमें से केवल स्किमिंग करके भी एक टन प्राप्त कर सकते हैं। ग्रांट और गेल शॉ के पास प्रश्नों और निष्पादन योजनाओं पर कुछ मूल्यवान सामग्री भी है, और किम्बर्ली ट्रिप और एरिन स्टेलाटो इंडेक्स-संबंधित या आंकड़ों से संबंधित किसी भी चीज़ के लिए महान संसाधन हैं।
- पॉल व्हाइट:SQLPerformance.com | sql.कीवी
- फ्रित्ची (और संसाधन) को अनुदान दें
- गेल शॉ
- किम्बर्ली ट्रिप
- एरिन स्टेलेटो
आपको कुछ ओवरलैप मिल सकता है, लेकिन मैं कई स्रोतों से जानकारी लेने में बड़ा विश्वास रखता हूं। कभी-कभी वे एक ही जानकारी प्रस्तुत कर रहे होते हैं, लेकिन एक व्यक्ति के कहने के तरीके या उनके द्वारा दिए गए संदर्भ के आधार पर प्रकाश बल्ब क्लिक करता है। मैंने शायद 50 अन्य लोगों को भी अच्छी सामग्री के साथ याद किया।
ओह, और क्या मैंने हमारे मुफ़्त टूल, प्लान एक्सप्लोरर का उल्लेख किया है, इससे भी मदद मिल सकती है? मेरी अपडेट की गई डेमो किट उदाहरणों के एक समूह के माध्यम से चलती है।