Sp_procedure_params_90_rowset पर अत्यधिक संकलन अवरुद्ध


14

इस प्रश्नोत्तर MSDN का पुनरुत्थान: अवरुद्ध-प्रक्रिया-रिपोर्ट: यह वेट्रेस स्रोत क्या है "OBJECT: 32767: 124607697: 0 [संकलन]"

मैंने ये कथन Profiler में पकड़ा है। वे सभी 3 सेकंड से अधिक अवधि के होते हैं। कुछ 10+ से अधिक। अवरुद्ध गतिविधि MSDN से लिंक के समान है ।

कॉल सभी 3 भाग नामकरण का उपयोग करते हैं। सभी एक अलग खरीद को उस रूप में निर्दिष्ट करते हैं जो वे निम्नलिखित की तरह देखते हैं:

exec [db1].[sys].sp_procedure_params_90_rowset N'proc1', 1, NULL, NULL
exec [db2].[sys].sp_procedure_params_90_rowset N'proc2', 1, NULL, NULL
exec [db3].[sys].sp_procedure_params_90_rowset N'proc3', 1, NULL, NULL
exec [db4].[sys].sp_procedure_params_90_rowset N'proc4', 1, NULL, NULL

अवरुद्ध करने के इस स्तर को कम करने के लिए मैं क्या कर सकता हूं?

(संपादित करें) अब मैं उसी चीज़ को देख रहा हूँ:

exec [db1].[sys].sp_primary_keys_rowset N'view1', N'dbo'
exec [db2].[sys].sp_primary_keys_rowset N'view1', N'dbo'
exec [db3].[sys].sp_primary_keys_rowset N'view1', N'dbo'
exec [db4].[sys].sp_primary_keys_rowset N'view1', N'dbo'

एक प्रणालीगत कुछ चल रहा है, लेकिन मुझे नहीं पता कि क्या करना है। कॉलर ADO के माध्यम से VB6 है। यह एडीओ इन कॉल कर रहा है।

एक उदाहरण अवरुद्ध प्रक्रिया रिपोर्ट नीचे है

 <blocked-process-report>
    <blocked-process>
        <process
            id="process5bc1288"
            taskpriority="0"
            logused="0"
            waitresource="OBJECT: 32767:124607697:0 [COMPILE]"
            waittime="28887"
            ownerId="11638114050"
            transactionname="sqlsource_transform">
            <executionStack>
                <frame
                    line="1"
                    sqlhandle="0x000000000000000000000000000000000000000000000000">
                    <sqltext>EXEC [dbo].[spAlertDetectByPoll] ':V:^RMAlert^:Z:^&amp;N&amp;#RMAlert#&amp;S&amp;#L#&amp;UID&amp;#19#&amp;AGN&amp;#1#&amp;DFC&amp;#103#^', 1</sqltext>
                </frame>
            </executionStack>
            <inputbuf>
SET NO_BROWSETABLE OFF   </inputbuf>
        </process>
    </blocked-process>
    <blocking-process>
        <process
            status="suspended"
            waitresource="OBJECT: 32767:124607697:0 [COMPILE]"
            waittime="35693"
            spid="1121"
            sbid="0"
            ecid="0"
            priority="0"
            trancount="0"
            lastbatchstarted="2013-12-16T14:45:48.960">
            <executionStack>
                <frame
                    line="1"
                    sqlhandle="0x000000000000000000000000000000000000000000000000" />
            </executionStack>
            <inputbuf>
SET NO_BROWSETABLE OFF   </inputbuf>
        </process>
    </blocking-process>
</blocked-process-report>

क्या आपके पास SQL ​​Server 2008 R2 के लिए नवीनतम सर्विस पैक और संचयी अद्यतन स्थापित हैं?
मैक्स वेरनॉन

SP2 CU4 Microsoft SQL Server 2008 R2 (SP2) - 10.50.4270.0 (X64)
dan holmes

यह कब होना शुरू हुआ? क्या आपने हाल ही में सर्विस पैक या संचयी अद्यतन लागू किया है? मैं VB6 / ADO का भी समर्थन कर रहा हूं और मुझे याद है कि ये सिस्टम प्रॉपर एक या दो बार आते हैं, लेकिन मुझे नहीं लगता कि कोई अवरोधक मुद्दा था। मुझे लगता है कि वे ऊपर आए क्योंकि उन्हें अक्सर कहा जाता है। मैं प्रार्थना करता हूं कि यह SP / CU-related नहीं है क्योंकि हम अभी भी 10.50.2500 पर हैं, और यह मृत्यु होगी यदि ये चीजें प्रत्येक 3-10 सेकंड में लेना शुरू कर दें।
जॉन सीगल

यह कई में से एक को pastbin pastebin.com/4wUgzby9 में डाल देता है । यह लगभग 2 या 3 सप्ताह से चल रहा है। हमने लंबे समय में सीयू नहीं लगाया है। यह 2012 के शुरुआत में MSDN पोस्ट द्वारा दिनांकित पहली बार हुआ था।
डेन होम्स

1
यह सिर्फ लक्षण हो सकता है। मुझे RESOURCE_SEMAPHORE_QUERY_COMPILE पर नियमित प्रतीक्षा एक्टिविटी है। यहाँ इस वाइटाइप का सबसे अच्छा इलाज है जो मैंने पाया है: blogs.msdn.com/b/support_sql_france/archive/2012/02/07/……
dan holmes

जवाबों:


2

एक उत्कृष्ट ब्लॉग पोस्ट है http://blogs.msdn.com/b/support_sql_france/archive/2012/02/07/sql-server-compilation-gateways-and-resource-semaphore-query-compile.aspx जो बताते हैं कि क्या है। हो रहा।

SQL सर्वर उनकी जटिलता के आधार पर संकलन की एक निर्धारित संख्या के लिए अनुमति देता है। यह उन्हें छोटे, मध्यम और बड़े में बांटता है। बड़े संकलन के लिए, एक समय में केवल एक ही संकलित किया जा सकता है, तो मान लीजिए कि आपके सभी प्रोक बड़े हैं, फिर प्रत्येक को क्रमबद्ध रूप से संकलित किया जाना है। यह ब्लॉकिंग के लिए जिम्मेदार हो सकता है।
मुझे लगता है कि समस्या के कई दृष्टिकोण हो सकते हैं - अधिक संसाधनों पर विचार करें (अधिक सीपीयू अधिक छोटे और मध्यम प्रश्नों को समवर्ती करने की अनुमति देगा या जो मध्यम माना जाता है उसके लिए सीमा हो सकती है)। साथ ही, अधिक मेमोरी समस्या का समाधान कर सकती है।

यदि आप हम में से अधिकांश की तरह हैं, तो यह संभव नहीं हो सकता है। एक अन्य विकल्प हो सकता है कि एडीओ कॉल की समीक्षा करें और देखें कि क्या कॉल की संख्या कम हो सकती है या फैल सकती है ताकि सभी कॉल एक ही समय में न हों। किसी भी समय संख्या कम करने से आपका प्रतीक्षा समय कम होना चाहिए।

यदि वह काम नहीं करता है, तो संग्रहीत प्रोक्स की il संकलन ’को ठीक करने पर विचार करें। हो सकता है कि उन्हें छोटे टुकड़ों में तोड़ दें जो उन्हें छोटे या मध्यम बाल्टियों में कम कर सकते हैं और अधिक समानांतर संकलन की अनुमति दे सकते हैं। या यह निर्धारित करें कि हर बार प्रॉक्सेस को फिर से तैयार करने की आवश्यकता क्यों है। देखें कि क्या उन्हें इस तरह से दोबारा लिखा जा सकता है कि उन्हें दोबारा बनाने की जरूरत नहीं है। अंत में, मैं प्लान गाइड का उपयोग करने पर विचार करूंगा। ये प्रॉक्सेस को प्री-कम्पाइल किया जाएगा और कुछ समय बचा सकता है।

उम्मीद है की वो मदद करदे

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