동적 잠금
행 잠금과 같이 낮은 수준의 잠금을 사용하면 두 트랜잭션이 동일한 데이터에 대해 동시에 잠금을 요청할 확률이 줄어들어 동시성이 증가합니다. 또한 잠금 수 및 잠금 관리에 필요한 리소스 수도 늘어납니다. 테이블 또는 페이지 잠금과 같이 높은 수준의 잠금을 사용하면 오버헤드는 줄어들지만 동시성이 감소합니다.
Microsoft SQL Server 데이터베이스 엔진에서는 동적 잠금 전략을 사용하여 가장 비용 효율적인 잠금을 결정합니다. 데이터베이스 엔진에서는 스키마 및 쿼리의 특징을 기준으로 쿼리를 실행할 때 가장 적합한 잠금을 자동으로 결정합니다. 예를 들어 잠금 오버헤드를 줄이기 위해서 인덱스 검색을 수행할 때 최적화 프로그램이 인덱스에서 페이지 수준 잠금을 선택할 수 있습니다.
동적 잠금을 사용하면 다음과 같은 장점이 있습니다.
데이터베이스 관리가 간단해집니다. 데이터베이스 관리자가 잠금 에스컬레이션 임계값을 조정할 필요가 없습니다.
성능이 향상됩니다. 데이터베이스 엔진에서 태스크에 적합한 잠금을 사용하므로 시스템 오버헤드가 줄어듭니다.
응용 프로그램 개발자가 개발에만 전념할 수 있습니다. 데이터베이스 엔진에서 잠금을 자동으로 조정합니다.
SQL Server 2008에서 잠금 에스컬레이션의 동작은 LOCK_ESCALATION 옵션의 도입으로 변경되었습니다. 자세한 내용은 ALTER TABLE의 LOCK_ESCALATION 옵션을 참조하십시오.