다음을 통해 공유


격리 수준 및 쓰기 충돌

이 페이지에서는 Azure Databricks의 Delta Lake 테이블에 대한 격리 수준 및 쓰기 충돌 동작에 대해 설명합니다.

Delta Lake는 읽기와 쓰기 간에 ACID 트랜잭션을 보장합니다.

  • 기록기: 여러 클러스터의 여러 기록기가 동시에 테이블 파티션을 수정할 수 있습니다. 작성자는 테이블의 일관된 스냅샷 보기를 보고, 작성은 직렬 순서로 발생합니다.
  • 읽기 권한자: 읽기 권한자는 작업 중에 테이블이 수정된 경우에도 Azure Databricks 작업이 시작한 테이블의 일관된 스냅샷 보기를 계속 볼 수 있습니다.

Azure Databricks에서 ACID 보장이란?을 참조하세요.

메모

Azure Databricks는 기본적으로 모든 테이블에 Delta Lake를 사용합니다.

격리 주제

주제 설명
격리 수준(WriteSerializable 및 Serializable) 두 격리 수준이 동시 작업에 미치는 영향 및 이를 구성하는 방법
행 수준 동시성 행 수준 충돌 검색을 통해 동일한 데이터 파일에 대한 동시 작업에 대한 쓰기 충돌을 줄이는 방법입니다.

트랜잭션 격리, 스냅샷 동작 및 충돌 처리에 대한 자세한 내용은 트랜잭션 격리를 참조하세요.

메타데이터 변경 충돌

메타데이터 변경으로 인해 모든 동시 쓰기 작업이 실패합니다. 이러한 작업에는 테이블 프로토콜, 테이블 속성 또는 데이터 스키마에 대한 변경 내용이 포함됩니다.

스트리밍 읽기는 테이블 메타데이터를 변경하는 커밋이 발생하면 실패합니다. 스트림을 계속하려면 스트림을 다시 시작해야 합니다. 권장 방법은 구조적 스트리밍에 대한 프로덕션 고려 사항을 참조하세요.

다음은 메타데이터를 변경하는 쿼리의 예입니다.

-- Set a table property
ALTER TABLE table_name SET TBLPROPERTIES ('delta.isolationLevel' = 'Serializable')

-- Enable a feature using a table property and update the table protocol
ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

-- Drop a table feature
ALTER TABLE table_name DROP FEATURE deletionVectors;

-- Upgrade to UniForm
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));

-- Update the table schema
ALTER TABLE table_name ADD COLUMNS (col_name STRING);

다음 단계