บนเซิร์ฟเวอร์ SQL ที่ใช้งานจริงฉันเห็นหนทางอันมหาศาลในการรับส่งข้อมูล มากถึง 200Mbit / s ซึ่งเป็นสาเหตุให้ NETWORK IO รอซึ่งจะทำให้หมดเวลาของแบบสอบถาม ฉันจะทราบได้อย่างไรว่าข้อความค้นหาใดที่ส่งคืนชุดผลลัพธ์ขนาดใหญ่
บนเซิร์ฟเวอร์ SQL ที่ใช้งานจริงฉันเห็นหนทางอันมหาศาลในการรับส่งข้อมูล มากถึง 200Mbit / s ซึ่งเป็นสาเหตุให้ NETWORK IO รอซึ่งจะทำให้หมดเวลาของแบบสอบถาม ฉันจะทราบได้อย่างไรว่าข้อความค้นหาใดที่ส่งคืนชุดผลลัพธ์ขนาดใหญ่
คำตอบ:
คุณสามารถค้นหาได้จากDMV s:
SELECT session_id, num_writes, st.text AS statement_text
FROM sys.dm_exec_connections AS ec
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS st
ORDER BY num_writes DESC
ซึ่งแตกต่างจากการติดตามสิ่งนี้ควรจะปลอดภัยอย่างสมบูรณ์ในการทำงานบนเซิร์ฟเวอร์การผลิต
ฉันจะติดตามข้อมูลการผลิตโดยใช้ SQL Profiler และฉันจะรวบรวมรหัส / แบทช์ที่มีการอ่านและเขียนที่ใหญ่ที่สุด กรองการติดตามเพื่อรับเฉพาะโพรซีเดอร์และแบตช์ที่มีค่าสูงในการอ่าน / เขียน เลือกตัวอย่างที่เหมาะกับสายตาของคุณ: สมมติว่ามีผู้อ่านหรือเขียนมากกว่า 1 ล้านคน
ฉันจะนำตัวอย่างของการโทรเหล่านั้นไปยังเครื่อง dev / การทดสอบและเรียกใช้พวกเขาใน Management Studio พร้อมตัวเลือก 'รวมสถิติลูกค้า' (ในแบบสอบถามเมนู - รวมสถิติลูกค้า) จากนั้นคุณจะมีหน้าต่างแยกต่างหากพร้อมข้อมูลสถิติไคลเอ็นต์: จำนวนไบต์ที่ส่งจากลูกค้า, จำนวนไบต์ที่ได้รับจากเซิร์ฟเวอร์
อย่าเปิดใช้งานการติดตามบนฐานข้อมูลการผลิตโดยไม่ต้องกรองข้อมูล !!! กรองที่เป็นไปได้มากที่สุด (โดย db, ชื่อโฮสต์, สิ่งที่คุณเคยเชื่อ) และจากนั้นเริ่มติดตาม อย่าลืมปิด Profiler หลังจาก :-)
PS: ฉันจำอีกตัวเลือกที่ดี: ตามรอยเป็นระยะเวลาคุณควรบันทึกข้อมูลโดยใช้ Perfmon (เลือกเฉพาะ IO params) Profiler มีคุณสมบัติที่ดีในการนำเข้าไฟล์ติดตามและไฟล์ข้อมูล perfmon ร่วมกัน และคุณสามารถเห็นได้เมื่อคุณมีสไปค์ไอโอที่ยิ่งใหญ่ที่สุด
PS2: ฉันยอมรับว่าตัวเลือกของออกุสตุสนั้นสง่างามกว่า แต่ฉันทิ้งคำตอบที่ใหญ่โตไว้สำหรับลูกหลาน! :-)
หากคุณยังไม่ได้ดูคุณอาจต้องการตรวจสอบ sp_WhoIsActive ของ Adam Machanic เมื่อไม่นานมานี้เขาได้ทำการโพสต์บล็อกหลายชุดเพื่ออธิบายคุณสมบัติต่าง ๆ ที่สร้างขึ้นใน sp_WhoIsActive ซึ่งหนึ่งในนั้นคือ @delta_interval
ไม่เพียง แต่จะแสดงให้คุณเห็นว่าสิ่งใดที่ทำให้ CPU หรือ I / O โดยรวมส่วนใหญ่แสดงผลได้
ลองอ่านซีรี่ส์บล็อกต่อไปนี้สำหรับคำอธิบายแบบเต็มของคุณสมบัตินี้:
http://whoisactive.com/docs/01_background/
โพสต์บล็อกต่อไปนี้อธิบายวิธีเรียงลำดับผลลัพธ์ของ sp_WhoIsActive และเลือกคอลัมน์ที่จะแสดง:
http://whoisactive.com/docs/24_output/
นี่เป็นหนึ่งในโพสต์มากมายที่มีอยู่ในลิงค์อัปเดตต่อไปนี้ที่เขาตั้งค่าไว้
รุ่น 11.0 มีให้บริการตามเวลาของคำตอบนี้ดังนั้นหากคุณกำลังใช้รุ่นที่เก่ากว่าอาจถึงเวลาอัพเกรด: D