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/