Msdb पर क्वेरी स्टोर को सक्षम करने से क्या लाभ है?


9

SQL सिस्टम डेटाबेस (मास्टर, मॉडल, msdb, tempdb) क्वेरी स्टोर का उपयोग केवल msdb पर किया जा सकता है। मैंने देखा और msdb पर क्वेरी स्टोर के बारे में कोई दस्तावेज नहीं पाया।

जब आप इसे GUI में नहीं देख सकते हैं, तो इसे आपके SQL 2016 उदाहरण पर मान्य किया जा सकता है

मान्य क्वेरी स्टोर बंद है

USE msdb
SELECT * FROM sys.database_query_store_options; 

क्वेरी स्टोर चालू करें

USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = ON
GO
ALTER DATABASE msdb SET QUERY_STORE (OPERATION_MODE = READ_WRITE
, INTERVAL_LENGTH_MINUTES = 30
, MAX_STORAGE_SIZE_MB = 1000
, QUERY_CAPTURE_MODE = AUTO)
GO

वैध क्वेरी स्टोर चालू है

USE msdb
SELECT * FROM sys.database_query_store_options; 

सभी सिस्टम डेटाबेस में से msdb क्वेरी स्टोर का उपयोग करने के विकल्प के साथ केवल एक ही क्यों है, और यह किस मूल्य को जोड़ता है?

-- Stop Query Store
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = OFF
GO

जेम्स, कृपया [model]"अनुमति नहीं" की सूची में शामिल होने से संबंधित मेरा उत्तर अद्यतन देखें ।
सोलोमन रटज़की

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

@SolomonRutzky वास्तव में शायद एक नया प्रश्न इनवर्टर है। नया डेटाबेस बनाते समय क्या मैं अपने आप क्वेरी स्टोर
जेम्स जेनकिन्स

जवाबों:


7

Microsoft एक सुविधा को सक्षम करने का मतलब यह नहीं है कि यह सभी के लिए उपयोगी होगा। कुछ विशेषताओं का उपयोग करने वाले सिस्टम के लिए MSDB में संग्रहीत जानकारी पर निर्भर हो सकते हैं। उन मामलों में क्वेरी स्टोर उपयोगी हो सकता है।

MSDB डेटाबेस ऑब्जेक्ट के उपयोग और ट्यूनिंग के बारे में कुछ लेख यहां दिए गए हैं।

msdb डेटाबेस ऑनलाइन पुस्तकों से।

जियोफ एन। हितेन द्वारा MSDB प्रदर्शन ट्यूनिंग

टिम रेडनी द्वारा MSDB पर रखरखाव का महत्व जहाँ उन्होंने निम्नलिखित उल्लेख किया है:

Msdb में अनुक्रमणिका को अनुकूलित करना आपके उपयोगकर्ता डेटाबेस के समान ही महत्वपूर्ण है। कई बार मुझे ऐसे क्लाइंट मिले हैं जो उपयोगकर्ता डेटाबेस का अनुकूलन कर रहे हैं लेकिन सिस्टम डेटाबेस का नहीं। चूंकि msdb डेटाबेस SQL ​​सर्वर एजेंट, लॉग शिपिंग, सेवा ब्रोकर, SSIS, बैकअप और पुनर्स्थापना और अन्य प्रक्रियाओं द्वारा भारी उपयोग किया जाता है, इसलिए अनुक्रमणिका अत्यधिक खंडित हो सकती है। सुनिश्चित करें कि आपकी अनुक्रमणिका अनुकूलन नौकरियों में आपके सिस्टम डेटाबेस या कम से कम msdb भी शामिल हैं। मैंने देखा है कि इंडेक्स ऑप्टिमाइज़ेशन ने एमएसडीबी के भीतर उच्च खंडित अनुक्रमित से कई गीगाबाइट स्थान खाली कर दिया है।

मैं देख सकता हूँ कि कैसे MS Store आपकी अनुक्रमण रणनीति को बेहतर बनाने में मदद कर सकता है और MSDB में संग्रहीत कुछ सूचनाओं को जानबूझकर क्वेरी / एग्रीगेटिंग / पर्जिंग कर सकता है।


1
[msdb]उद्धरण में उल्लिखित सुविधाओं का उपयोग करने के अलावा , "अन्य प्रक्रियाओं" में ऐसी चीजें शामिल होंगी जैसे: dbmail, सेंट्रल मैनेजमेंट सर्वर (CMS) सेवाएं (सबसे उल्लेखनीय रूप से पंजीकृत सर्वर सूचियों को साझा करना), मुझे लगता है कि लिंक किए गए पोस्ट पर टिप्पणियों में किसी को लगता है नीति आधारित प्रबंधन (पीबीएम), और मुझे लगता है कि सर्वर ऑडिट (कम से कम परिभाषाएं, लेकिन मैंने इसकी पुष्टि नहीं की है)।
सोलोमन रटज़की

5

@SqlWorldWide [msdb]ने प्रश्न का "क्यों " हिस्सा उत्तर दिया, इसलिए मैं यहां नकल नहीं करूंगा। लेकिन जवाब देने के लिए "क्यों नहीं [master], [model], [tempdb]" सवाल का हिस्सा:

  • [tempdb]अस्थायी भंडारण है और इसकी प्रकृति से कभी भी स्वचालित अनुकूलन या ऐतिहासिक विश्लेषण प्रदान करने की क्षमता से लाभ नहीं होगा। यदि स्टोर संग्रह संग्रहीत कार्यविधियों पर निष्पादन आँकड़ों को ट्रैक करता है, तो जब संग्रहीत कार्यविधियाँ कहीं और मौजूद होती हैं, तो वह यहाँ मदद नहीं करेगी। और जब तक अस्थायी संग्रहीत कार्यविधियाँ बनाना संभव है, स्थानीय अस्थायी संग्रहीत प्रोक्स को इस बात से लाभ नहीं होगा कि उनके नाम में कई सत्रों में समान नामों को अलग करने के लिए एक अद्वितीय हैश कोड शामिल है। और जबकि वैश्विक अस्थायी संग्रहीत प्रोक्स का सत्रों में एक सुसंगत नाम होता है, अस्थायी प्रकृति को देखते हुए, यह मानने का कोई तरीका नहीं है कि सत्रों में एक ही नाम के वैश्विक अस्थायी संग्रहीत प्रोक्स (एक ही समय में नहीं मान लें) यहां तक ​​कि एक ही कोड होगा, और इसलिए सार्थक नहीं हो सकता /सहसंबंधी आँकड़े।

  • [model]नए डेटाबेस बनाने के लिए टेम्प्लेट (जिसमें [tempdb]SQL सर्वर इंस्टेंस प्रारंभ / पुनरारंभ होने पर हर बार फिर से बनाया जाता है) शामिल है। क्वेरीज़ यहां से निष्पादित नहीं होती हैं। हालांकि, मुझे लगता है कि क्वेरी स्टोर को यहां सक्षम करने की अनुमति देने का कोई मतलब हो सकता है ताकि नए डीबी बनाते समय यह डिफ़ॉल्ट रूप से चालू हो। लेकिन, फिर भी करने के लिए है कि यह है कि मतलब होगा क्वेरी स्टोर में सक्षम हो जाएगा [tempdb], और कहा कि सिर्फ मूर्ख है (देखें सीधे ऊपर बिंदु) है।

    अद्यतन:
    वाह, नेल्ली! मैंने केवल उस प्रारंभिक प्रश्न को फिर से पढ़ा, जो इस ओर ले जाता है और कुछ अजीब लगा: इसके लिए केवल त्रुटि संदेश थे [master]और [tempdb]; के लिए कोई त्रुटि रिपोर्ट नहीं की गई थी [model]। यह संभव है कि प्रश्न में कॉपी करते समय ओपी ने उस त्रुटि संदेश को छोड़ दिया, इसलिए मैंने खुद को देखने के लिए SQL Server 2016 SP1-CU7-GDR (13.0.4466.4) पर निम्न भाग किया:

    ALTER DATABASE [model] SET QUERY_STORE = ON; -- completes successfully!
    
    -- Restart instance to force recreation of [tempdb];
    
    CREATE DATABASE [IsQueryStoreEnabledByDefault];
    
    SELECT * FROM sys.databases WHERE [is_query_store_on] = 1;
    
    DROP DATABASE [IsQueryStoreEnabledByDefault];

    और परिणाम? [model]और [IsQueryStoreEnabledByDefault]वापस आ रहे हैं, लेकिन [tempdb]है नहीं परिणामों में! तो, एक अतिरिक्त हालांकि पहले दो "हालांकि" एस करने के लिए, ऐसा लगता है कि [model] कर सकते हैं क्वेरी स्टोर सक्षम किया गया है जो एक) चूक क्वेरी संग्रहित समर्थन करने वाली (हाँ, यह एक शब्द, मैं भी जाँच की है ;-) के लिए हाल में डीबीएस बनाया है, और ख) सेवा को फिर से [tempdb]शुरू करने के लिए इसकी उपेक्षा की जाती है (इसलिए इसे चालू करने के लिए यह बैक-डोर नहीं है [tempdb])।  

  • [master]मुख्य सिस्टम डेटाबेस है और आपको यहां कोड चलाना नहीं चाहिए। इसके अलावा, यहां मौजूद प्रक्रियाएं और अक्सर इस्तेमाल होने वाली या तो अनुकूलन से लाभ नहीं होगा, या उपयोगकर्ता डेटाबेस के संदर्भ में निष्पादित करें जहां उन्हें आमंत्रित किया गया है (यानी सिस्टम संग्रहीत procs से शुरू होने वाला sp_एक विशेष मामला है जहां वे सभी में "दिखाई देते हैं"। DBs - के साथ पूरी तरह से योग्य होने की आवश्यकता नहीं है [master]..- और निष्पादित करें जैसे कि वे वास्तव में प्रत्येक DB में मौजूद हैं) और संभवतः उपयोगकर्ता डेटाबेस में क्वेरी स्टोर द्वारा शासित होते हैं जहां उन्हें आमंत्रित किया जा रहा है।


जब आप USE मॉडल सेलेक्ट करते हैं * Sys.database_query_store_options से; मॉडल क्वेरी स्टोर को चालू करने के बाद, यह उस पर प्रदर्शित नहीं होता है। लेकिन> जैसा कि आप कहते हैं कि नया डेटाबेस चालू हो गया है, मेरे मामले में यह उन वैकल्पिक परिवर्तनों का उपयोग करता है जिन्हें मैंने पहले दिन में पाउंड करते समय चुना था। इसलिए यदि आप मॉडल का उपयोग करने जा रहे हैं, तो आप शायद एविएड आश्चर्य के लिए अपनी पसंद के सभी क्वेरी स्टोर विकल्प सेट करना चाहते हैं ।
जेम्स जेनकिंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.