निदान: जब कोई क्वेरी SQL Server 2008 और SQL Server 2008 R2 में एक सत्र में बनाया अस्थायी तालिकाओं को संदर्भित करती अनुप्रयोग निष्पादन समस्या

लागू: SQL Server 2008 R2SQL Server 2008

Microsoft डाउनलोड करने योग्य फ़ाइल के रूप में Microsoft SQL Server 2008 R2 फिक्सेस वितरित करता है। फ़िक्सेस संचयी होते हैं, क्योंकि सभी हॉटफिक्सेस हर नई जारी है और जो पिछले SQL Server 2008 R2 के साथ शामिल थे सभी सुरक्षा फ़िक्सेस रिलीज़ ठीक करें।

लक्षण


इस परिदृश्य पर विचार करें:
  • कोई अनुप्रयोग जो Microsoft SQL Server 2008 और Microsoft SQL Server 2008 R2 में कुछ अस्थायी तालिकाओं को संदर्भित क्वेरी चलाता है। के बजाय एक सत्र में एक संग्रहीत प्रक्रिया में अस्थायी तालिकाएँ बनाए जाते हैं।
  • क्वेरी योजना कैश्ड है।
  • कई उपयोगकर्ताओं को एक उच्च समसामयिक परिवेश में एक ही क्वेरी चलाएँ। उदाहरण के लिए, निम्न क्वेरी चलाता है एक अनुप्रयोग उपयोगकर्ताओं को कई का उपयोग करें:
    create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go
इस परिदृश्य में, अनुप्रयोग प्रदर्शन समस्याएँ सामने आई।नोट इस समस्या की पहचान कैसे करें के बारे में अधिक जानकारी के लिए, "अधिक जानकारी" अनुभाग देखें।

कारण


यह समस्या इसलिए होती है क्योंकि समान क्वेरी पाठ है, जब एक ही क्वेरी योजनाओं कैश में प्रत्येक उपयोगकर्ता के लिए एक ही हैश बकेट में सम्मिलित किए गए हैं। योजनाओं की एक बड़ी संख्या एक ही बकेट (के रूप में भी जाना जाता एक हैश श्रृंखला) hashed रहे हैं, जब उल्लेखनीयतया कैश में कोई योजना को ढूँढने के लिए समय बढ़ाता है, और प्रदर्शन समस्याएँ हो सकती हैं। इसके अतिरिक्त, वर्कर थ्रेड गंभीर spinlock contention आ सकती है, और इन वर्कर थ्रेड सही शेड्यूलर प्राप्तियाँ न करें, जब अन्य थ्रेड्स प्रभावित होते हैं।

समाधान


नोट SQL Server 2008 R2 के लिए केवल अद्यतन अभी उपलब्ध नहीं है। SQL Server 2008 के लिए, इस समस्या को हल करने के लिए "वैकल्पिक हल" खंड को देखें।

संचयी अद्यतन जानकारी

SQL Server 2008 R2 सर्विस पैक 1

इस समस्या के लिए फिक्स पहले संचयी अद्यतन 1 में SQL Server 2008 R2 सर्विस पैक 1 के लिए रिलीज़ किया गया था। इस संचयी अद्यतन पैकेज़ को प्राप्त करने के तरीके के बारे में अधिक जानकारी के लिए Microsoft नॉलेज़ बेस में आलेख देखने के लिए निम्न आलेख संख्या पर क्लिक करें:
2544793 संचयी अद्यतन पैकेज़ 1 SQL Server 2008 R2 सर्विस पैक 1 के लिए
नोट बनाता है संचयी होते हैं, क्योंकि सभी हॉटफिक्सेस हर नई सुधार जारी है और जो पिछले SQL Server 2008 R2 के साथ शामिल थे सभी सुरक्षा फ़िक्सेस रिलीज़ ठीक करें। हम अनुशंसा करते हैं कि करने पर आप विचार करें जिसमें ये हॉटफिक्स शामिल नवीनतम फिक्स रिलीज़ लागू कर रहा है। अधिक जानकारी के लिए Microsoft नॉलेज़ बेस में आलेख देखने के लिए निम्न आलेख संख्या पर क्लिक करें:
2567616 SQL Server 2008 R2 जो SQL सर्वर 2008 R2 सर्विस पैक 1 रिलीज़ किया गया था के बाद रिलीज़ किया गया था बनाता है

SQL Server 2008 R2

इस समस्या के लिए फिक्स पहले संचयी अद्यतन 7 में रिलीज़ किया गया था। इस संचयी अद्यतन पैकेज़ SQL Server 2008 R2 के लिए प्राप्त करने के तरीके के बारे में अधिक जानकारी के लिए Microsoft नॉलेज़ बेस में आलेख देखने के लिए निम्न आलेख संख्या पर क्लिक करें:
2507770 संचयी अद्यतन पैकेज 7 SQL Server 2008 R2 के लिए
नोट बनाता है संचयी होते हैं, क्योंकि सभी हॉटफिक्सेस हर नई सुधार जारी है और जो पिछले SQL Server 2008 R2 के साथ शामिल थे सभी सुरक्षा फ़िक्सेस रिलीज़ ठीक करें। हम अनुशंसा करते हैं कि करने पर आप विचार करें जिसमें ये हॉटफिक्स शामिल नवीनतम फिक्स रिलीज़ लागू कर रहा है। अधिक जानकारी के लिए Microsoft नॉलेज़ बेस में आलेख देखने के लिए निम्न आलेख संख्या पर क्लिक करें:
981356 SQL Server 2008 R2 जो SQL सर्वर 2008 R2 रिलीज़ किया गया था के बाद रिलीज़ किया गया था बनाता है

स्थिति


Microsoft ने पुष्टि की है कि यह "इन पर लागू" खण्ड में सूचीबद्ध Microsoft उत्पादों में एक समस्या है.

वैकल्पिक हल


अस्थायी के किसी भी संदर्भ SQL Server 2008 R2 में, ले जाएँ और SQL Server 2008 में इस समस्या के आसपास काम करने के लिए कार्यविधियाँ करने के लिए तालिकाओं में संग्रहीत है।

अधिक जानकारी


बनाना और तालिका आधारभूत तथ्य को संशोधित करने के तरीके के बारे में अधिक जानकारी के लिए, निम्न MSDN वेब साइट पर जाएँ:जो एक उच्च contention दर है SOS_CACHESTORE spinlock पर sys.dm_os_spinlock_stats डायनेमिक प्रबंधन दृश्य (DMV) Spinlock contention पहचाना जा सकता है। इस समस्या की पहचान करने के लिए, जो निम्न के जैसा एक क्वेरी चलाएँ:
select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount desc
यदि निम्न स्थितियाँ सत्य है जब आप इस क्वेरी चलाते हैं, तो आपको प्रदर्शन समस्याएँ आ सकती है:
  • इस क्वेरी को समान क्वेरी पाठ जनरेट करता है।
  • गणना के लिए समान bucketid बड़ा है।नोट बड़ी संख्या bucketid समान के लिए आमतौर पर 1000 है।
  • क्वेरी तालिकाएँ अस्थायी संदर्भ