एक निश्चित प्रकार के इंतजार को देखते हुए, आप कैसे खोजते हैं कि कौन से प्रश्न उन उत्पादन SQL 2008 R2 सर्वर पर सुरक्षित रूप से प्रतीक्षा कर रहे हैं?
इस विशेष मामले में मैं सोच रहा हूँ async_network_io
।
एक निश्चित प्रकार के इंतजार को देखते हुए, आप कैसे खोजते हैं कि कौन से प्रश्न उन उत्पादन SQL 2008 R2 सर्वर पर सुरक्षित रूप से प्रतीक्षा कर रहे हैं?
इस विशेष मामले में मैं सोच रहा हूँ async_network_io
।
जवाबों:
इनकी जाँच करने का मेरा पसंदीदा तरीका एडम मैकहानिक के उत्कृष्ट sp_WhoIsActive संग्रहित खरीद का उपयोग करना है। यहां इसका उपयोग करने का एक वीडियो और कोड डाउनलोड करने के लिए एक लिंक दिया गया है:
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
पकड़ यह है कि आपको परिणामों की जांच के लिए समय-समय पर इसे चलाना होगा। यदि आप चाहते हैं कि यह डेटा आपके लिए समय-समय पर इकट्ठा किया जाए, तो एक टेबल पर sp_WhoIsActive परिणामों को कैप्चर करने पर केंद्र लिटिल के ट्यूटोरियल की जांच करें:
http://www.littlekendra.com/2011/02/01/whoisactive/
अंत में, यदि आप चाहते हैं कि जब भी कोई क्वेरी async_network_io का इंतजार करे, तो आप एक नया टूल का उपयोग कर सकते हैं जिसे एक्सटेंडेड इवेंट्स कहते हैं। यह SQL सर्वर इंजन के अंदर डिबग पॉइंट की तरह है जहां आप जादू कर सकते हैं। सच कहूँ तो, यह अभी 2008 में उपयोग करने के लिए थोड़ा दर्दनाक है।
'async_wait_io' एक प्रतीक्षा प्रकार नहीं है। संभावित ASYNC% प्रतीक्षा प्रकार हैं:
प्रतीक्षा प्रकारों के लिए कुछ अच्छे लिंक:
वर्तमान वेटिंग को खोजने के लिए मेरी क्वेरी पर जाएं:
SELECT req.session_id
,blocking_session_id
,ses.host_name
,DB_NAME(req.database_id) AS DB_NAME
,ses.login_name
,req.status
,req.command
,req.start_time
,req.cpu_time
,req.total_elapsed_time / 1000.0 AS total_elapsed_time
,req.command
,req.wait_type
,sqltext.text
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
JOIN sys.dm_exec_sessions ses
ON ses.session_id = req.session_id
WHERE req.wait_type IS NOT NULL
--WHERE req.wait_type = '?'