Monday, November 5, 2007

ASYNC_NETWORK_IO SQL 2005 Waits and Queues

ปัญหาที่ Sql server 2005 ช้า ถ้าดูที่ Activity Monitor ของ SQL2005 จะเห็นว่าเกิด Wait Type เป็นASYNC_NETWORK_IO
ปัญหาเกิดจาก
- คุณได้ enable trace flag 1118
- มันจะสร้าง temp table ทำให้เกิดการทำงานที่สูง(workload)
- ไฟล์หลายๆ ตัว ยังอยู่ใน tempdb database
- หรืออาจจะเกิดจากการ Query ที่ต้องดึงข้อมูลที่มากเกินไป เช่น ดึง Database ที่มีภาพอยู่เป็นจำนวนมาก ซึ่งอาจทำให้ Network วิ่งไม่พอ

วิธีแก้คือ
วิธีที่ 1 ลง Service Pack 2 ของ Sql Server 2005
วิธีที่ 2 disable trace flag 1118 โดยใช้คำสั่ง
DBCC TRACEOFF (1118, -1)
วิธีที่ 3 แก้ไขการ Query ให้ดึงข้อมูลน้อยลง

ที่มา http://support.microsoft.com/kb/936185
ที่มา http://www.sqldev.net/articles/locklatch.htm
ที่มา http://msdn2.microsoft.com/en-us/library/ms179984.aspx