एक निष्पादन योजना कहाँ से आती है?


10

क्या कोई तरीका है जो मैं यह निर्धारित कर सकता हूं कि क्या कोई योजना केवल किसी विशेष क्वेरी के लिए उत्पन्न हुई थी, या योजना कैश में पाई गई थी?

जवाबों:


9

SQL सर्वर 2012 में योजना में एक संकेतक है RetrievedFromCache, जो "सही" या "गलत" हो सकता है।

यह वह संपत्ति है जिसके बारे में आप पूछ रहे हैं।

यह एक नमूना है (अंतिम पंक्ति संपत्ति दिखाती है):

<StmtSimple StatementCompId="1" StatementEstRows="1" StatementId="1" 
StatementOptmLevel="FULL" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" 
StatementSubTreeCost="0.0508992" StatementText="SELECT COUNT(*) 
&#xD;&#xA;FROM sys.tables" StatementType="SELECT" 
QueryHash="0x9A4B63A948B30EA0" QueryPlanHash="0xF357CAE882D5B15D" 
RetrievedFromCache="true">

दुर्भाग्य से, मुझे SQL Server 2008 R2 द्वारा बनाई गई योजना के समान कुछ भी दिखाई नहीं देता है।

SQL Server 2008 R2 में, आप समान मूल्य वाले योजनाओं के लिए कॉलम sys.dm_exec_query_statsका निरीक्षण करने के लिए सिस्टम DMV का उपयोग कर सकते हैं । क्वेरी हैश को XML के शीर्षलेख से प्राप्त किया जा सकता है (ऊपर उदाहरण देखें)। यह क्वेरी उपर्युक्त योजना के संबंध में पंक्तियाँ लौटाएगी:creation_timequery_hash

SELECT *
FROM sys.dm_exec_query_stats qs
WHERE qs.query_hash = 0x9A4B63A948B30EA0;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.