2013-04-05 8 views
13

जब मैं कोई क्वेरी चलाता हूं तो SQL सर्वर परिणाम कैश करता है?क्या एसक्यूएल सर्वर क्वेरी परिणाम पूछता है?

क्योंकि: जब मैं नीचे दिए गए क्वेरी चलाएँ:

SELECT id 
FROM Foo 
WHERE Foo.Name LIKE '%bar%' 

क्वेरी 1st समय पर 40 सेकंड के लिए चलाता है।

लेकिन पर दूसरा रन यह केवल कुछ सेकंड लेता है।

क्या ऐसा इसलिए है क्योंकि निष्पादन योजना किसी तरह से कैश की गई है या वास्तव में डेटा कैश किया गया है ताकि मैं इसे दूसरे रन पर बहुत तेज कर सकूं?

+0

http://technet.microsoft.com/en-us/library/cc293623.aspx – Habib

+0

इस तरह के पहले से ही इसी तरह के प्रश्न हैं: http://stackoverflow.com/questions/2002576/sql-server-cache -सवाल – wilsjd

उत्तर

17

SQL सर्वर क्वेरी परिणाम कैश नहीं करता है, लेकिन यह data pages कैश करता है जो इसे स्मृति में पढ़ता है। इन पृष्ठों के डेटा का उपयोग क्वेरी परिणाम उत्पन्न करने के लिए किया जाता है।

आप आसानी से देख सकते हैं कि डेटा

SET STATISTICS IO ON 

कौन सा क्वेरी

Table 'ProductCostHistory'. Scan count 1, logical reads 5, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 

तार्किक और भौतिक के बीच अंतर के निष्पादन पर निम्नलिखित जानकारी देता है की स्थापना करके स्मृति से या डिस्क से पढ़ा गया पढ़ता है स्मृति स्मृति से पढ़ा जाता है।

एसक्यूएल सर्वर अधिकतम (कॉन्फ़िगर किए गए, या भौतिक अधिकतम) तक पहुंचने तक कैशिंग के लिए मेमोरी का दावा करेगा और फिर सबसे पुराने पृष्ठ फ़्लश किए जाएंगे।

संबंधित मुद्दे