SQL Server 잠금 경합을 줄이는 방법

요약

SQL Server 잠금 읽고 데이터베이스에 쓸 때 일관성을 보장할 수 있습니다. 모든 관계형 데이터베이스 시스템 동시성 및 일관성 사이에서는 상충 관계는 항상. 항상 일관성, 또는 데이터의 정확성을 유지 하기 위해 반드시 합니다. 그러나 적절 한 단계를 수행 하지는 최고 수준의 일관성 덜 동시성, 또는 더 심각한 성능 발생할 수 있습니다.

자세한 내용

잠금 경합이 줄이고 전반적인 처리량을 늘릴 수는 다음 방법은 사용할 수 있습니다.

  • 있는 많은 프로세스 하려고 하는 업데이트 또는 삽입 같은 데이터 페이지에서 수행 되는 상황은 피하십시오. 예를 들어, 버전에서에서 6.x 이전 버전 테이블에 클러스터 된 인덱스가 없으면 이거나 nonrandom 증가 키 값을 같은 값의 구성 된 클러스터 된 인덱스는 테이블의 마지막 페이지에서 모든 삽입 전환 됩니다. 각 사용자를 확인 하는 값에 클러스터 된 인덱스를 만들어이 특정 핫스폿 상황을 방지할 수 있습니다 및/또는 다른 테이블의 페이지에 삽입 하는 과정
  • 사용자 상호 작용을 포함 하는 거래를 하지 않습니다. 잠금은 트랜잭션 동안, 때문에 한 명의 사용자 전체 시스템 성능을 저하 시킬 수 있습니다.
  • 짧게 가능한 데이터 수정 트랜잭션을 유지 하십시오. 트랜잭션의 시간이 길수록 단독 또는 업데이트 잠금은 보유 됩니다. 다른 작업을 차단 하 고 교착 상태 상황을 더 많이 발생할 수 있습니다.
  • 트랜잭션을 하나의 일괄 처리에서 유지 합니다. 예기치 않은 네트워크 문제가 트랜잭션을 완료 하 고 따라서 잠금을 해제 지연 될 수 있습니다.
  • Holdlock 가능 예: 비관적 잠금 참고를 하지 마십시오. 공유 잠금을 대기 하는 프로세스를 초래할 수 있습니다.
  • 대부분의 경우에서 SQL Server 기본 격리 수준이 사용 해야 합니다. 격리 수준은 어떤 지점에서 동시성 및 일관성 사이의 균형 사항이 결정 합니다. 강력한 있는 경우 비즈니스 요구 높은 격리 수준을 확인 모든 장단점을 평가 하 고 높은 스트레스 로드가 철저 한 테스트를 수행 해야 합니다.
  • 같은 페이지에 필요한 임의 업데이트를 가능성을 줄일 수 있도록 인덱스를 만들 때 해당 fillfactor를 줄입니다. 자주 액세스 되는 작은 테이블에 특히 유용 합니다.
  • Db-library (Db-lib)를 사용 하는 경우 dbcursoropen()의 CCUR_OPTCC 설정을 사용 하 여 낙관적 동시성 제어를 지정할 수 있습니다. 이 옵션을 사용 하면 사용자가 트랜잭션을 커밋하는 경우에 업데이트 잠금을 얻습니다.
속성

문서 ID: 75722 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백