SQL Server 복제의 격리 수준

이 페이지에서는 Cloud Data Fusion 복제 작업의 Microsoft SQL Server 데이터베이스 스냅샷에서 트랜잭션 격리를 사용 설정하는 방법을 설명합니다.

격리 수준 정보

복제 작업은 SQL Server 데이터베이스의 소스 테이블 변경사항을 캡처하기 위해 Debezium 커넥터를 사용합니다. 스냅샷 단계에서 Debezium은 구성된 snapshot.isolation.mode에 따라 잠금을 획득합니다.

다음 표에서는 복제 작업에 지원되는 격리 모드를 비교합니다.

격리 모드 획득 잠금 데이터 일관성
read_uncommitted 없음 아니요.
read_committed 한 번에 행 배치에 대한 공유 잠금 부분. 추가된 레코드는 초기 스냅샷에 한 번, 스트리밍 단계에서 한 번, 총 두 번 나타날 수 있습니다.
repeatabe_read
(기본값)
모든 행의 공유 잠금 부분. 추가된 레코드는 초기 스냅샷에 한 번, 스트리밍 단계에서 한 번, 총 두 번 나타날 수 있습니다.
snapshot 없음 전체 규모
exclusive 모든 테이블에 배타적 잠금 전체 규모

격리 모드에 대한 자세한 내용은 트랜잭션 격리 수준 설정을 참조하세요.

기본적으로 스냅샷 격리 모드는 repeatable_read입니다. 이 모드는 스냅샷 프로세스 중에 읽은 모든 데이터에 대해 공유 잠금을 설정합니다. 이렇게 하면 다른 트랜잭션이 기존 행을 수정하는 것을 방지하고 새 레코드 삽입이 허용될 수 있습니다(잠금 에스컬레이션 참조).

소스 데이터베이스에서 이미 사용 설정된 경우 테이블을 잠그지 않고 전체 데이터 일관성을 제공하므로 스냅샷 격리 복제를 사용하는 것이 좋습니다. 사용 설정하지 않은 경우 사용 설정하기 전에 SQL Server 데이터베이스 엔진에서 행 버전 기반 수준의 영향에 대해 자세히 알아보세요.

복제 작업에서 스냅샷 격리 사용 설정

  1. SQL Server 데이터베이스에서 스냅샷 격리를 사용 설정합니다.

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    DATABASE_NAME을 SQL Server 데이터베이스의 이름으로 바꿉니다.

  2. 런타임 인수 snapshot.isolation.modesnapshot으로 설정합니다. 자세한 내용은 복제 작업에 런타임 인수 전달을 참조하세요.

다음 단계

  • 복제 자세히 알아보기