ค้นหาข้อความค้นหาที่กำลังรออยู่


34

เมื่อได้รับการรอสักครู่คุณจะค้นหาแบบสอบถามที่ทำให้เกิดการรออย่างปลอดภัยบนเซิร์ฟเวอร์ SQL 2008 R2 ที่ผลิตได้อย่างไร

async_network_ioเฉพาะในกรณีนี้ผมกำลังสงสัยเกี่ยวกับ

คำตอบ:


32

วิธีที่ฉันโปรดปรานในการตรวจสอบสิ่งเหล่านี้คือการใช้ 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


14

'async_wait_io' ไม่ใช่ประเภทการรอ ประเภทรอ ASYNC% ที่เป็นไปได้คือ:

  • ASYNC_IO_COMPLETION
  • ASYNC_NETWORK_IO
  • ASYNC_DISKPOOL_LOCK

ลิงค์ดี ๆ สำหรับประเภทการรอ:

ฉันไปที่แบบสอบถามเพื่อค้นหาการรอปัจจุบัน:

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 = '?'

ขออภัยฉันหมายถึง async_network_io
Kyle Brandt

บทความที่ดีมาก ๆ : สถิติการรอคอย Lose กับเบรนต์ O และบั๊กวู้ดดี้และสถิติรอ พวกเขาคุ้มค่ามาก!
Marian

@Marian: Brent กำลังแสดงบางสิ่งบางอย่างให้ฉันในวันนี้ แต่หมดเวลาก่อนที่เราจะไปที่บทความนี้บางทีบทความนั้นอาจจะเป็นเรื่องที่ดี :-)
Kyle Brandt

@ ไคล์คุณมีเบรนต์ที่จะแสดงให้คุณเห็นสิ่งต่าง ๆ และยังคงถามเรา? :) คุณควรมัดเขาไว้ที่เก้าอี้ในสำนักงานของคุณ .. ทำให้สมองของเขาแห้ง .. แล้วปล่อยให้เขาไป;) และอย่าลืมแจ้งให้เราทราบถึงผลลัพธ์!
Marian

@Marian: โชคดีมาก ๆ ที่ได้รับความช่วยเหลือ แม้ว่าฉันจะได้รับคำตอบจากที่นี่ทุกคนบนอินเทอร์เน็ตก็จะได้รับคำตอบเช่นกัน :-)
Kyle Brandt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.