क्या SQL सर्वर 2014 बैच मोड में निष्पादित कर सकता है?


21

जब एक कॉलमस्टोर इंडेक्स क्वेरी क्वेरी में उपयोग किया जा रहा है तो बैच मोड का उपयोग करने में सक्षम है। दस्तावेज़ीकरण इस बात पर पतला है कि बैच मोड में क्या चल सकता है और क्या नहीं। कृपया निम्नलिखित (प्रेरक) क्वेरी योजना को देखें जहां बैच मोड (हरे) में आश्चर्यजनक संख्या में चीजें निष्पादित होती हैं:

यहाँ छवि विवरण दर्ज करें

(यह एक अनुमानित योजना है। मैंने वास्तविक योजना का उपयोग यह सत्यापित करने के लिए किया कि वास्तविक निष्पादन मोड वास्तव में बैच है।)

ध्यान दें, कि केवल T1 का बिल्ड साइड एक कॉलमस्टोर इंडेक्स का उपयोग करता है। सभी जांच इनपुट (टी 2 और टी 3) रोस्टोरेस हैं। उनका डेटा बैच मोड में परिवर्तित होता है। मैंने हमेशा सोचा कि बैच मोड का उपयोग केवल जांच पक्ष के माध्यम से चलने वाले डेटा स्ट्रीम के लिए किया जा रहा है।

ऐसा लगता है कि डेटा बैच मोड में संक्रमण कर सकता है, भले ही वह कॉलमस्टोर इंडेक्स से उत्पन्न न हो। यह सवाल है: SQL सर्वर बैच मोड का उपयोग केवल पंक्तिबद्ध प्रश्नों के लिए ही क्यों नहीं करता है? उनमें से कुछ के लिए फायदेमंद हो सकता है। क्या कॉलमस्टोर इंडेक्स का उपयोग औपचारिक आवश्यकता है जो SQL सर्वर को बैच मोड पर विचार करने के लिए आवश्यक है? क्या हम बैच मोड को प्रेरित करने और प्रदर्शन लाभ प्राप्त करने के लिए कॉलमस्टोर इंडेक्स के साथ एक शून्य पंक्ति डमी टेबल जोड़ सकते हैं?

SQL सर्वर 2014 के रूप में वास्तव में बैच मोड में क्या चल सकता है?


5
SQL सर्वर पंक्ति मोड के लिए बैच मोड का उपयोग केवल क्वेरी के रूप में ही क्यों नहीं करता है? क्योंकि CS अब केवल बैच मोड का समर्थन करता है। उनमें से कुछ के लिए फायदेमंद हो सकता है। क्या कॉलमस्टोर इंडेक्स का उपयोग औपचारिक आवश्यकता है जो SQL सर्वर को बैच मोड पर विचार करने के लिए आवश्यक है? हाँ सीएस एक आवश्यकता है। Neugebauer द्वारा खोले गए Row Store के लिए अभी भी एक सक्रिय वस्तु इंप्लीमेंट बैच बैच मोड सपोर्ट है
परिजन शाह

जवाबों:


30

SQL सर्वर 2014 के रूप में वास्तव में बैच मोड में क्या चल सकता है?

SQL सर्वर 2014 बैच मोड ऑपरेटरों की मूल सूची में निम्नलिखित जोड़ता है:

  • हैश आउटर जॉइन (पूर्ण जॉइन सहित)
  • हश अर्ध सम्मिलित हों
  • हश एंटी सेमी जॉइन
  • यूनियन ऑल (केवल संघटन)
  • स्केलर हैश एग्रीगेट (कोई समूह नहीं)
  • बैच हैश टेबल बिल्ड हटाया गया

ऐसा लगता है कि डेटा बैच मोड में संक्रमण कर सकता है, भले ही वह कॉलमस्टोर इंडेक्स से उत्पन्न न हो।

SQL सर्वर 2012 बैच ऑपरेटरों के उपयोग में बहुत सीमित था। बैच मोड योजना में एक निश्चित आकार था, जो कि आंकड़े पर निर्भर था, और एक बार पंक्ति-मोड प्रसंस्करण के लिए संक्रमण होने पर बैच मोड को पुनरारंभ नहीं कर सकता था।

SQL सर्वर 2014 क्वेरी ऑप्टिमाइज़र की सामान्य संपत्ति ढांचे में निष्पादन मोड (बैच या पंक्ति) को जोड़ता है, जिसका अर्थ है कि यह योजना में किसी भी बिंदु पर और बैच मोड से बाहर संक्रमण करने पर विचार कर सकता है। योजना में अदृश्य निष्पादन मोड एडेप्टर द्वारा संक्रमण लागू किया जाता है। इन एडेप्टरों में अनुकूलन के दौरान शुरू किए गए संक्रमणों की संख्या को सीमित करने के लिए उनसे जुड़ी लागत होती है। इस नए लचीले मॉडल को मिश्रित मोड निष्पादन के रूप में जाना जाता है।

निष्पादन मोड एडेप्टर को अनएक्सप्लिमेंटेड TF 8607 के साथ ऑप्टिमाइज़र के आउटपुट में देखा जा सकता है (हालांकि उदासीन रूप से उपयोगकर्ता-दृश्य निष्पादन योजनाओं में नहीं)। उदाहरण के लिए, निम्नलिखित को एक पंक्ति स्टोर में पंक्तियों की गणना के लिए कैप्चर किया गया था:

रो एड टू बैच एडेप्टर

क्या कॉलमस्टोर इंडेक्स का उपयोग औपचारिक आवश्यकता है जो SQL सर्वर को बैच मोड पर विचार करने के लिए आवश्यक है?

यह आज है, हाँ। इस प्रतिबंध का एक संभावित कारण यह है कि यह स्वाभाविक रूप से एंटरप्राइज़ संस्करण में बैच मोड प्रसंस्करण को रोकता है।

क्या हम बैच मोड को प्रेरित करने के लिए कॉलमस्टोर इंडेक्स के साथ एक शून्य पंक्ति डमी टेबल जोड़ सकते हैं?

हां, यह काम करता है। मैंने लोगों को सिर्फ इसी वजह से सिंगल-रो क्लस्टर्ड कॉलमस्टोर इंडेक्स के साथ क्रॉस-जॉइन करते देखा है। टिप्पणियों में आपके द्वारा किए गए सुझाव को झूठी पर एक डमी कॉलमस्टोर टेबल में शामिल होने के लिए बहुत बढ़िया है।

-- Demo the technique (no performance advantage in this case)
--
-- Row mode everywhere
SELECT COUNT_BIG(*) FROM dbo.FactOnlineSales AS FOS;
GO
-- Dummy columnstore table
CREATE TABLE dbo.Dummy (c1 int NULL);
CREATE CLUSTERED COLUMNSTORE INDEX c ON dbo.Dummy;
GO
-- Batch mode for the partial aggregate
SELECT COUNT_BIG(*) 
FROM dbo.FactOnlineSales AS FOS
LEFT OUTER JOIN dbo.Dummy AS D ON 0 = 1;

डमी छोड़ बाहरी में शामिल होने की योजना:

डमी टेबल के साथ बैच मोड

डॉक्यूमेंटेशन पतला है

सच।

जानकारी का सबसे अच्छा आधिकारिक स्रोत Columnstore Indexes Described और SQL Server Columnstore Performance Tuning हैं

SQL सर्वर MVP Niko Neugebauer के यहाँ सामान्य रूप से कॉलमस्टोर पर एक भयानक श्रृंखला है

Microsoft रिसर्च पेपर में 2014 के परिवर्तनों के बारे में कुछ अच्छे तकनीकी विवरण हैं, SQL सर्वर कॉलम स्टोर (पीडीएफ) के लिए संवर्द्धन हालांकि यह आधिकारिक उत्पाद दस्तावेज नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.