다음을 통해 공유


동적 잠금

행 잠금과 같이 낮은 수준의 잠금을 사용하면 두 트랜잭션이 동일한 데이터에 대해 동시에 잠금을 요청할 확률이 줄어들어 동시성이 증가합니다. 또한 잠금 수 및 잠금 관리에 필요한 리소스 수도 늘어납니다. 테이블 또는 페이지 잠금과 같이 높은 수준의 잠금을 사용하면 오버헤드는 줄어들지만 동시성이 감소합니다.

원가 대 세분성을 보여 주는 다이어그램

Microsoft SQL Server 데이터베이스 엔진에서는 동적 잠금 전략을 사용하여 가장 비용 효율적인 잠금을 결정합니다. 데이터베이스 엔진에서는 스키마 및 쿼리의 특징을 기준으로 쿼리를 실행할 때 가장 적합한 잠금을 자동으로 결정합니다. 예를 들어 잠금 오버헤드를 줄이기 위해서 인덱스 검색을 수행할 때 최적화 프로그램이 인덱스에서 페이지 수준 잠금을 선택할 수 있습니다.

동적 잠금을 사용하면 다음과 같은 장점이 있습니다.

  • 데이터베이스 관리가 간단해집니다. 데이터베이스 관리자가 잠금 에스컬레이션 임계값을 조정할 필요가 없습니다.

  • 성능이 향상됩니다. 데이터베이스 엔진에서 태스크에 적합한 잠금을 사용하므로 시스템 오버헤드가 줄어듭니다.

  • 응용 프로그램 개발자가 개발에만 전념할 수 있습니다. 데이터베이스 엔진에서 잠금을 자동으로 조정합니다.

SQL Server 2008에서 잠금 에스컬레이션의 동작은 LOCK_ESCALATION 옵션의 도입으로 변경되었습니다. 자세한 내용은 ALTER TABLE의 LOCK_ESCALATION 옵션을 참조하십시오.