잠금 에스컬레이션이란 무엇입니까?


47

나는 인터뷰에서이 질문을 받았으며 아무런 대답이 없었다. 여기 누구든지 설명 할 수 있습니까?

답변:


45

DB 잠금은 행, 페이지 또는 전체 테이블 또는 인덱스에 존재할 수 있습니다. 트랜잭션이 진행 중일 때 트랜잭션이 보유한 잠금은 자원을 사용합니다. 잠금 에스컬레이션은 시스템이 여러 잠금을 상위 레벨 잠금으로 통합하는 경우 (예 : 여러 행 잠금을 페이지에 통합하거나 여러 페이지를 전체 테이블에 통합) 일반적으로 많은 수의 세분화 된 잠금이 차지하는 자원을 복구합니다.

특정 테이블의 잠금 에스컬레이션 정책을 제어하기 위해 테이블에 플래그를 설정 (온라인 서적의 ALTER TABLE 참조) 할 수 있지만 자동으로 수행됩니다. 특히, 이전 버전의 Sybase 및 SQL Server에서는 동일한 페이지에 동시에 별도의 행을 쓰는 두 개의 프로세스가있을 때 조기 또는 지나치게 열성적인 잠금 에스컬레이션이 문제가되었습니다. 충분히 멀리 돌아 가면 (IIRC SQL Server 6.5) SQL Server에는 실제로 행 잠금이 없었지만 테이블이나 페이지 만 잠글 수있었습니다. 이런 상황이 발생하면 같은 페이지에있는 레코드 삽입간에 경합이 발생할 수 있습니다. 종종 새 인덱스가 다른 페이지로 이동되도록 클러스터 된 인덱스를 테이블에 배치합니다.


3
또한 서버가 에스컬레이션되는 시점을 제어 할 수 없습니다.

우리는 지금한다. T1211이라고합니다.
Joshua

@Joshua, 추적 플래그 1211은 잠금 에스컬레이션을 비활성화하는 데 사용됩니다. 특정 시간에 SQL Server가 에스컬레이션하도록 지시 할 방법이 없습니다.
단지 학습자

10
행 잠금은 페이지 잠금으로 에스컬레이션되지 않고 직접 테이블 잠금으로 에스컬레이션됩니다.
Manoj Pandey

Manoj가 말한 것은 사실입니다. 경험이 부족한 SQL Server 사용자를 잘못
인도

20

많은 세밀한 잠금 장치를 더 적은 거친 그레인 잠금 장치로 변환하여 시스템 오버 헤드를 줄이는 방법입니다. 자세한 정보는 여기여기 에서 찾을 수 있습니다 .

예를 들어, 테이블의 특정 행에 많은 (보통 수백 이상) 잠금이있는 경우 최대 허용 잠금 수를 초과하면 전체 테이블에서 잠금으로 교체 될 수 있습니다.


11

SQL Server는 미세한 하위 수준 잠금을 여러 수준의 고급 수준 잠금으로 변환하여 메모리 오버 헤드줄이기 위해 잠금 에스컬레이션 을 수행합니다 .

  • 행 잠금은 항상 테이블 잠금으로 에스컬레이션되며
  • 페이지 잠금도 테이블 잠금으로 에스컬레이션됩니다.

@ConcernedOfTunbridgeWells에 의해 위에서 언급 한 것과 같이 행 잠금이 페이지 잠금으로 에스컬레이션된다는 것은 신화입니다 .

행 업데이트가 거의없는 테이블 인 경우 SQL 엔진은 해당 행에서 행 잠금을 가져 오거나 해당 페이지에서 페이지 잠금을 시도합니다. Row-Lock을 사용했다고 가정 해 봅시다. 그러나 행 업데이트가 임계 값을 늘리면 (~ 5k 잠금) 여러 행 잠금을 사용하는 대신 단일 테이블 잠금이 필요합니다. 따라서 여러 행 잠금을 해제하고 단일 테이블 잠금을 사용하여 메모리 오버 헤드를 줄이지 만 동시성은 증가합니다. 페이지 잠금에서도 마찬가지입니다.

잠금 에스컬레이션 임계 값 잠금 에스컬레이션에 대한 자세한 설명은 MSDN 제가 그걸 어떻게 여기에 언급 된 AT-적어도 5000 잠금, 그리고 여러 가지 요인에 따라 달라집니다 https://technet.microsoft.com/en-us/library/ms184286(v = sql.105) .aspx


5

잠금 에스컬레이션은 잠금을보다 제한적인 모드로 변환하는 것을 의미합니다. 이것은 데이터베이스에서 가장 자주 나타납니다. 쿼리에 "공유"에 대한 리소스가 잠겨 있고 "배타적"으로 에스컬레이션하여 업데이트를 수행 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.