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 सर्वर कॉलम स्टोर (पीडीएफ) के लिए संवर्द्धन हालांकि यह आधिकारिक उत्पाद दस्तावेज नहीं है।