SQL Server/Administration

Async_network_io

MayStyle 2009. 2. 10. 19:59

일반적으로 네트워크 성능으로 인해 발생하는 Lock 이슈 입니다.
해당 Lock 은 네트워크에서 모든 데이터를 처리하고 나면 자연스럽게 풀리게 됩니다.

물론 대량의 행을 리턴 하는 Select 문을 실행하다가 중지 할 때 역시 해당 Lock 발생합니다.
이 경우에는 해당 Select문의 종료 까지 시간이 상당히 많이 걸립니다.

이때 sp_who2나 sys.sysprocesses 을 쿼리 하면 아래와 같은 실행 화면을 볼 수 있습니다.

spid kpid blocked waittype waittime lastwaittype
<SPID> 1988 0 0x0063 203 ASYNC_NETWORK_IO
<SPID> 4224 0 0x00BA 546 CXPACKET
<SPID> 148 0 0x00BA 546 CXPACKET
<SPID> 5764 0 0x00BA 1234 CXPACKET
<SPID> 6008 0 0x00BA 718 CXPACKET
<SPID> 3164 0 0x00BA 5093 CXPACKET
<SPID> 268 0 0x00BA 5125 CXPACKET
<SPID> 1760 0 0x00BA 5125 CXPACKET
<SPID> 5704 0 0x00BA 5078 CXPACKET

이 경우에는 다른 SPID의 Lock이 CXPACKET임을 볼 수 있는데, CXPACKET은 병렬 쿼리 실행 시 다른 CPU의 작업 완료를 기다릴 경우 발생합니다. 이는 바로 ASYNC_NETWORK_IO을 기다리고 있음을 의미합니다.

해당 문제에 대한 hotfix는 이미 나와 있습니다. 다만 이 경우에는 최소 SQL 2005 SP2가 설치되어 있어야 합니다.
아래에 설명하는 hotfix 리스트를 받아 설치합니다.

SQL Server 2005 SP2 통합 Hotfix : http://support.microsoft.com/kb/956854/LN/
SQL Server 2005 SP3 통합 Hotfix : http://support.microsoft.com/kb/959195/LN/

출처 : http://support.microsoft.com/kb/960110