SQL सर्वर संग्रहीत प्रक्रियाओं डेटा डेटा परिणाम?


11

मैंने दोस्तों से यह सुना है, लेकिन मैंने कभी जांच नहीं की कि क्या यह सच है।

क्या यह सच है कि एक निष्पादित क्वेरी के डेटा परिणाम कैश में संग्रहीत हैं?

मेरा मतलब है, अगर मेरे पास एक संग्रहीत प्रक्रिया है जैसे:

SELECT * FROM USERLIST

... क्या यह सच है कि परिणाम (उपयोगकर्ताओं की सूची, इस मामले में) कैश में संग्रहीत है।

इसके अलावा, अगर मेरे पास ये हैं:

SELECT * FROM USERLIST WHERE user="user"
SELECT * FROM USERLIST WHERE user="userzzz"

(जिसमें उपयोगकर्ता / userzzz को मापदंडों के रूप में पारित किया जाता है), क्या यह सही है कि यह डेटाबेस कैश पर 2 अलग-अलग परिणाम संग्रहीत करता है।

मुझे ऐसा नहीं लगता, लेकिन मैं आपसे विशेषज्ञों की पुष्टि चाहता हूं!


अभी आपके लिए उत्तर दिया है marc_s stackoverflow.com/questions/8559443/…

जवाबों:


19

क्वेरी के परिणाम कैश नहीं हैं

हालांकि, स्रोत तालिका और सूचकांक डेटा और मेटाडेटा 1 उपयोग के बाद कैश किया जाएगा (निरंतर उपयोग, लोड और मेमोरी दबाव के अधीन)

यही है, एक क्वेरी के परिणामों का मूल्यांकन हर निष्पादन पर किया जाएगा, लेकिन क्वेरी द्वारा उपयोग किए जाने वाले तालिकाओं (और किसी भी अनुक्रमणिका आदि) की सबसे अधिक संभावना पहले से ही स्मृति में होगी।

संकलित निष्पादन योजना को कैश किया जाएगा, जहां मुझे संदेह से भ्रम होता है


"यही है, एक क्वेरी के परिणामों का मूल्यांकन हर निष्पादन पर किया जाएगा लेकिन क्वेरी द्वारा उपयोग किए जाने वाले तालिकाओं (और किसी भी अनुक्रमणिका आदि) की सबसे अधिक संभावना पहले से ही स्मृति में होगी।" : हाँ, मैं भी मैं का उपयोग नहीं कर रहा हूँ SP मुझे लगता है ... कि एक डेटाबेस अनुकूलन, सपा के साथ कोई फर्क नहीं पड़ता है, है ना?

@markzzz: लगभग सभी SQL एक निष्पादन योजना के लिए संकलित है, चाहे एक सीधा अद्यतन, चयन या एक संग्रहीत प्रक्रिया
gbn

6

जब एक संग्रहीत कार्यविधि निष्पादित की जाती है तो इसे अनुकूलित और संकलित किया जाता है और क्वेरी योजना को प्रक्रिया कैश में रखा जाता है।

जब तक वहाँ स्थान है, अन्य उपयोगकर्ताओं के लिए प्रक्रियाएँ कैश में बनी रहती हैं। हाल ही में उपयोग किए गए (LRU) एल्गोरिदम का उपयोग करके प्रक्रियाएं हटा दी जाती हैं।


हालांकि एक संग्रहीत कार्यविधि का प्रारंभिक निष्पादन डिस्क पर sysprocedures से पुनर्प्राप्ति की आवश्यकता है, बाद के निष्पादन के लिए, प्रक्रिया कैश से अनुकूलित योजना को बस पुनः प्राप्त करना संभव है। इस व्यवहार से महत्वपूर्ण प्रदर्शन लाभ हो सकता है।

तो, कैश में क्या संग्रहीत प्रक्रिया से अनुकूलित योजना है और संग्रहीत प्रक्रिया के परिणाम नहीं हैं।


6

जब कोई क्वेरी SQL सर्वर द्वारा संसाधित होने के लिए तैयार है, तो SQL प्रबंधक इसे देखता है cache; और अगर यह नहीं है, तो इसे संकलित किया जाना चाहिए। संकलन प्रक्रिया में कुछ चीजें शामिल हैं।

जब एक संग्रहीत कार्यविधि निष्पादित की जाती है तो इसे अनुकूलित और संकलित किया जाता है। इसके अनुसार क्वेरी प्लान को प्रक्रिया कैश में रखा गया है।

क्वेरी प्रक्रिया आदि के बारे में विस्तृत जानकारी के लिए Microsoft SQL Server क्वेरी प्रोसेसर आंतरिक और आर्किटेक्चर Compilation and Execution पर अनुभाग की जाँच करें ।

संकलन चरण का अंतिम उत्पाद एक क्वेरी योजना है, जिसे प्रक्रिया कैश में डाल दिया जाता है। SQL क्वेरी परिणाम / संचालन MB, GB में आकार का हो सकता है इसलिए इसे प्रक्रिया कैश या क्वेरी योजना में नहीं डाला जाता है।

अपने प्रश्न के बारे में स्पष्ट करने के लिए संग्रहीत कार्यविधि निष्पादन के लिए निम्न आरेख (MSDN से) की जाँच करें: यहाँ छवि विवरण दर्ज करें


-1

SQL सर्वर मूल रूप से किसी भी क्वेरी (संग्रहीत कार्यविधि कॉल या तदर्थ SQL कथन) को निष्पादित करने के लिए इन चरणों से गुजरता है:

1) क्रमिक रूप से क्वेरी
2 की जाँच करें ) यदि यह ठीक है - यह देखने के लिए योजना कैश की जांच करता है कि क्या उसके पास पहले से ही उस क्वेरी के लिए निष्पादन योजना है
3) यदि निष्पादन योजना है - तो उस योजना का उपयोग किया गया है और क्वेरी निष्पादित की गई है
4) अगर अभी तक कोई योजना नहीं है, तो एक निष्पादन योजना
5 निर्धारित की जाती है) उस योजना को बाद में पुन: उपयोग के लिए योजना कैश में संग्रहीत किया जाता है
6) क्वेरी निष्पादित की जाती है

(Marc_s उत्तर की प्रति)


-1

जैसा कि दूसरों ने कहा है, SQL सर्वर में क्वेरी परिणाम कैश नहीं हैं।

यदि आप किसी क्वेरी (या SP) के परिणामों को कैश करना चाहते हैं, तो वर्कअराउंड हैं। उदाहरण के लिए, ब्रेंट ओजर वेबसाइट पर इस लेख को देखें ।

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