เมื่อได้รับการรอสักครู่คุณจะค้นหาแบบสอบถามที่ทำให้เกิดการรออย่างปลอดภัยบนเซิร์ฟเวอร์ SQL 2008 R2 ที่ผลิตได้อย่างไร
async_network_io
เฉพาะในกรณีนี้ผมกำลังสงสัยเกี่ยวกับ
เมื่อได้รับการรอสักครู่คุณจะค้นหาแบบสอบถามที่ทำให้เกิดการรออย่างปลอดภัยบนเซิร์ฟเวอร์ SQL 2008 R2 ที่ผลิตได้อย่างไร
async_network_io
เฉพาะในกรณีนี้ผมกำลังสงสัยเกี่ยวกับ
คำตอบ:
วิธีที่ฉันโปรดปรานในการตรวจสอบสิ่งเหล่านี้คือการใช้ pro_ ที่เก็บไว้ที่ยอดเยี่ยมของ Adam Machanic นี่คือวิดีโอเกี่ยวกับวิธีใช้และลิงก์เพื่อดาวน์โหลดรหัส:
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
การจับคือคุณต้องเปิดมันเป็นระยะเพื่อตรวจสอบผลลัพธ์ หากคุณต้องการรวบรวมข้อมูลนี้เป็นระยะให้ดูที่บทช่วยสอนของ Kendra Little เกี่ยวกับการจับผลลัพธ์ sp_WhoIsActive ในตาราง:
http://www.littlekendra.com/2011/02/01/whoisactive/
ท้ายที่สุดถ้าคุณต้องการให้บางสิ่งบางอย่างเริ่มทำงานเมื่อใดก็ตามที่แบบสอบถามรอให้ async_network_io คุณสามารถใช้เครื่องมือใหม่ที่เรียกว่า Extended Events มันเหมือนกับจุดดีบั๊กในเอ็นจิน SQL Server ซึ่งคุณสามารถสร้างเวทมนตร์ได้ ตรงไปตรงมามันเจ็บปวดเล็กน้อยที่จะใช้ตอนนี้ในปี 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 = '?'