ในขณะที่เชื่อมต่อกับเซิร์ฟเวอร์ที่ใช้งานจริงของเรา (SQL Server 2008, เครื่องจักรที่ทรงพลังมาก), คำสั่ง SELECT นี้ใช้เวลา2 วินาที , กระจายกลับทุกช่อง (รวมข้อมูล 4 MB)
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
จากการใด ๆอื่น ๆกล่องบนเครือข่ายเดียวกัน (การเชื่อมต่อใช้การตรวจสอบ SQL หรือ Windows Authentication) แบบสอบถามเดียวกันจะใช้เวลา1 นาที 8 วินาที
ฉันกำลังทดสอบด้วยคำสั่งง่ายๆนี้เพื่อแสดงให้เห็นว่าไม่ใช่ปัญหาการจัดทำดัชนีหรือปัญหาเกี่ยวกับแบบสอบถาม (เรามีปัญหาด้านประสิทธิภาพด้วยข้อความค้นหาทั้งหมดในขณะนี้ ... )
แถวมาเป็นกลุ่มและไม่ใช่ทั้งหมดในคราวเดียว ฉันได้แถวแรกทันทีจากนั้นรอประมาณ 1 นาทีเพื่อให้แถวเข้ามา
นี่คือสถิติลูกค้าของแบบสอบถามเมื่อมีการเรียกใช้จากกล่องระยะไกล:
Query Profile Statistics
Number of INSERT, DELETE and UPDATE statements 0
Rows affected by INSERT, DELETE, or UPDATE statements 0
Number of SELECT statements 2
Rows returned by SELECT statements 30001
Number of transactions 0
Network Statistics
Number of server roundtrips 3
TDS packets sent from client 3
TDS packets received from server 1216
Bytes sent from client 266
Bytes received from server 4019800
Time Statistics
Client processing time 72441 ms (72 seconds)
Total execution time 72441 ms
Wait time on server replies 0
เราจะเห็นได้ว่า "เวลาดำเนินการลูกค้า" เท่ากับเวลาดำเนินการทั้งหมด
ไม่มีใครรู้ขั้นตอนที่ฉันสามารถดำเนินการเพื่อวินิจฉัยว่าทำไมการถ่ายโอนข้อมูลจริงใช้เวลานานหรือไม่
มีพารามิเตอร์การกำหนดค่า SQL ที่ จำกัด หรือ จำกัด ความเร็วการถ่ายโอนข้อมูลระหว่างเครื่องหรือไม่?