래치 대기를 위해 sysprocesses 테이블의 차단된 열이 채워지기

이 문서에서는 테이블의 차단된 열이 래치 대기를 위해 채워지는 sysprocesses 경우를 소개합니다.

원래 제품 버전:   SQL Server
원래 KB 번호:   906344

요약

이 SQL Server 시스템 테이블의 차단된 열이 래치 대기를 위해 채워지는 것 외에도 잠금 대기를 알 sysprocesses 수 있습니다. 경우에 따라 단일 서버 프로세스 ID(SPID)가 차단 자체로 보고되는 잠시 시간을 알 수 있습니다. 이 동작은 예상한 것입니다.

추가 정보

래치는 캐시된 데이터 페이지 및 기타 메모리 내 개체에 대한 액세스를 동기화하는 데 사용됩니다. 일반적으로 래치는 잠시만 보며 래치 대기 시간은 그에 따라 작습니다. SQL Server SPID가 래치에 오랜 시간 대기하는 경우를 해결하는 데 도움이 되는 진단이 있습니다. 이러한 진단을 통해 시스템 테이블의 차단된 열이 다른 SPID의 래치 요청을 차단하는 래치의 소유자를 sysprocesses 반영합니다.

래치 소유권은 단독(EX) 또는 UP(업데이트) 래치 모드에 있는 래치에 한해 추적됩니다. 공유(SH) 래치 모드에 있는 래치에 대한 소유권은 추적되지 않습니다. 즉, 차단된 열이 일부 래치 요청에 대해 채워지지 않습니다.

대부분의 경우 다음 조건에 해당하면 차단된 열의 값을 무시할 수 있습니다.

  • 열의 값이 waittime 낮습니다.
  • waittypeSPID의 는 래치 대기형입니다.

열에서 사용할 수 있는 값에 대한 자세한 내용은 sys.dm_os_wait_stats waittype (Transact-SQL)를 참조하십시오.

SPID가 I/O 페이지 래치를 기다리는 경우 차단된 열이 SPID 자체가 차단 중임에 대해 간략하게 보고하는 것으로 확인될 수 있습니다. 이 동작은 데이터 페이지의 I/O 작업에 래치가 사용되는 방식의 부작용입니다. 스레드가 I/O 요청을 실행하면 I/O 요청을 실행하는 SPID가 페이지에서 래치를 획득합니다. 모든 SQL Server I/O 작업이 비동기적입니다. 따라서 I/O 요청을 발급한 SPID가 요청이 완료될 때까지 기다려야 하는 경우 SPID는 동일한 페이지에서 다른 래치 획득을 시도합니다. 이 두 번째 래치는 첫 번째 래치에 의해 차단됩니다. 따라서 차단된 열은 SPID가 자체적으로 차단하고 있는 것으로 보고합니다. I/O 요청이 완료되면 첫 번째 래치가 릴리스됩니다. 그런 다음 두 번째 래치 요청이 부여됩니다.

예를 들어 다음과 같은 조건이 발생할 수 있습니다.

  1. SPID 55는 버퍼 풀에 없는 데이터 페이지를 읽습니다.

  2. SPID 55는 페이지에서 EX 래치를 획득합니다. 페이지가 아직 메모리에 존재하지 않았기 때문에 요청된 래치 모드는 EX입니다. EX 래치 모드에서는 페이지에 액세스하려는 다른 SPID가 I/O 요청이 완료될 때까지 기다릴 수 있습니다. 또한 EX 래치 모드에서는 다른 SPID가 동일한 페이지에 대해 중복된 I/O 요청을 발행하지 못하게 합니다.

  3. SPID 55는 디스크에서 페이지를 읽기 위해 I/O 요청을 처리합니다.

  4. SPID 55가 페이지를 읽기를 원하기 때문에 SPID 55는 I/O 요청이 완료될 때까지 기다려야 합니다. I/O 요청이 완료될 때까지 기다리기 위해 SPID 55는 같은 페이지에 공유(SH) 래치 모드가 있는 다른 래치를 획득합니다. EX 래치가 이미 획득되어 있기 때문에 SH 래치 요청이 차단되고 SPID가 일시 중단됩니다. SH 래치 요청을 차단하는 EX 래치도 SPID 55에 의해 획득된 것이기 때문에 SPID는 일시적으로 차단 자체로 보고됩니다.

  5. I/O 요청이 완료되면 페이지의 EX 래치가 릴리스됩니다.

  6. EX 래치 릴리스는 SH 래치를 SPID 55에 제공 합니다.

  7. 이제 SPID 55에서 페이지를 읽을 수 있습니다.

4단계와 5단계 사이에 있는 표에는 SPID 55가 자체적으로 차단되어 대기 sysprocesses PAGEIOLATCH_ 표시됩니다. 이 대기형에서 XX는 SH, UP 또는 EX일 수 있습니다. 이 동작은 SPID 55가 I/O 요청을 발급하고 SPID 55가 I/O 요청이 완료될 때까지 대기 중입니다.