จากห่วงโซ่ความคิดเห็นดูเหมือนว่าคุณกำลังASYNC_NETWORK_IO
รอการแปลความหมายว่าปัญหาเกี่ยวข้องกับเครือข่าย มัน (โดยทั่วไป) ไม่ใช่
ตามที่ @MartinSmith บอกกล่าวที่ (สองครั้ง) คำอธิบายที่เป็นไปได้มากที่สุดคือ SSMS หรือแอปพลิเคชันที่คุณใช้ไม่ได้ใช้ผลลัพธ์อย่างเร็วเท่ากับ SQL Server ที่ให้บริการ ทำตามวิธีใดวิธีหนึ่งที่แนะนำเพื่อลบปริมาณการใช้แถวออกจากการวัดของคุณและคุณจะได้ภาพที่แท้จริงของทรูพุต IO สูงสุด:
ในกรณีที่คุณยังไม่ได้ทำคุณจะต้องDBCC DROPCLEANBUFFERS
แน่ใจว่าข้อมูลนั้นอ่านจากดิสก์มากกว่าแคชบัฟเฟอร์ ข้อสังเกตปกติของ "ในการทดสอบเท่านั้นอย่าทำสิ่งนี้ในสภาพแวดล้อมที่มีการใช้งานจริง" ฯลฯ
เพิ่มความคิดเห็นอื่น ๆ ของคุณ:
ในขณะที่ดำเนินการค้นหาที่ส่งคืนการใช้งาน CPU 9 ล้านแถวจะอยู่ที่ประมาณ 13% และ 9% ที่เป็นของ sqlserver ... มันจะไม่ส่งคืนผลลัพธ์เร็วกว่า 3 นาทีถ้าข้อมูลทั้งหมดอยู่ใน RAM หรือไม่
เราทำการทดสอบอะไรที่นี่อย่างไรและทำไม หากการค้นหา 9 ล้านแถวของคุณเป็นอย่างอื่นนอกเหนือSELECT * FROM dbo.SomeTable
จากนั้นจะมีปัจจัย 1001 ที่เข้ามาเล่นนอกเหนือจากอัตราความเร็ว IO ดิบ
Intel I7-3820ของคุณเป็นโปรเซสเซอร์แบบ 4 คอร์ หากแบบสอบถามทดสอบของคุณไม่ได้สร้างแผนแบบขนานฉันจะแปลกใจถ้าคุณสามารถใช้ประโยชน์จาก CPU มากกว่า 20% จากระบบ
3 นาทีในการส่งคืน 9 ล้านแถวนั้นน่าสงสัยมากและแนะนำว่าเราไม่ได้รับภาพรวมของการทดสอบของคุณ ฉันเดาว่านี่เป็นกรณีของแผนแบบสอบถามย่อย (ไม่ขนาน) ที่อัดแน่นไปด้วยตัวดำเนินการซ้อนกันเต็มวงดึงแถวนับล้าน ๆ แถวไม่ใช่เพียงตารางเดียวSELECT
เพื่อตรวจสอบปริมาณการใช้ IO
ฉันแนะนำ:
SELECT *
เพื่อทดสอบเพียง IO ผ่าน SQL Server
- คำถามใหม่พร้อมแผนการดำเนินการของแบบสอบถามของคุณหากคุณต้องการขุดลงไปว่าทำไมจึงไม่ทำให้ IO อิ่มตัว