삭제 벡터란?

삭제 벡터는 Delta Lake 테이블에서 사용하도록 설정할 수 있는 스토리지 최적화 기능입니다. 기본적으로 데이터 파일의 단일 행이 삭제되면 레코드를 포함하는 전체 Parquet 파일을 다시 작성해야 합니다. 테이블에 DELETEUPDATE대해 삭제 벡터를 사용하도록 설정한 경우 작업 MERGE 에서는 삭제 벡터를 사용하여 Parquet 파일을 다시 작성하지 않고 기존 행을 제거되거나 변경된 것으로 표시합니다. 테이블의 후속 읽기는 삭제 벡터로 기록된 삭제를 최신 테이블 버전에 적용하여 현재 테이블 상태를 확인합니다.

Databricks는 Databricks Runtime 14.3 LTS 이상을 사용하여 모든 최적화를 활용하기 위해 삭제 벡터가 있는 테이블을 작성하는 것이 좋습니다. Databricks Runtime 12.2 LTS 이상에서 삭제 벡터를 사용하도록 설정된 테이블을 읽을 수 있습니다.

Databricks Runtime 14.2 이상에서는 삭제 벡터가 있는 테이블이 행 수준 동시성을 지원합니다. 행 수준 동시성과의 쓰기 충돌을 참조 하세요.

참고 항목

Photon은 예측 I/O 업데이트, 가속 DELETEMERGEUPDATE 작업에 삭제 벡터를 활용합니다. 삭제 벡터 읽기를 지원하는 모든 클라이언트는 이러한 업데이트가 예측 I/O에 의해 생성되었는지 여부에 관계없이 삭제 벡터를 생성한 업데이트를 읽을 수 있습니다. 업데이트를 가속화하려면 예측 I/O 사용을 참조 하세요.

삭제 벡터 사용

Important

작업 영역 관리자 설정은 삭제 벡터가 새 델타 테이블에 대해 자동으로 사용되는지 여부를 제어합니다. 자동 사용 삭제 벡터를 참조 하세요.

Delta Lake 테이블 속성을 설정하여 Delta Lake 테이블에서 삭제 벡터를 지원할 수 있습니다. 다음 예제와 같이 테이블을 만드는 동안 삭제 벡터를 사용하도록 설정하거나 기존 테이블을 변경합니다.

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Warning

삭제 벡터를 사용하도록 설정하면 테이블 프로토콜이 업그레이드됩니다. 업그레이드 후에는 삭제 벡터를 지원하지 않는 Delta Lake 클라이언트에서 테이블을 읽을 수 없습니다. Azure Databricks에서 Delta Lake 기능 호환성을 관리하는 방법을 참조 하세요.

Databricks Runtime 14.1 이상에서는 삭제 벡터 테이블 기능을 삭제하여 다른 델타 클라이언트와의 호환성을 사용하도록 설정할 수 있습니다. 델타 테이블 기능 삭제를 참조하세요.

Parquet 데이터 파일에 변경 내용 적용

삭제 벡터는 행의 변경 내용을 Delta Lake 테이블의 기존 Parquet 데이터 파일을 논리적으로 수정하는 일시 삭제로 나타냅니다. 이러한 변경 내용은 다음 이벤트 중 하나에 의해 트리거되는 데이터 파일을 다시 작성할 때 물리적으로 적용됩니다.

  • OPTIMIZE 명령이 테이블에서 실행됩니다.
  • 자동 압축은 삭제 벡터를 사용하여 데이터 파일의 다시 쓰기를 트리거합니다.
  • REORG TABLE ... APPLY (PURGE) 는 테이블에 대해 실행됩니다.

파일 압축과 관련된 이벤트에는 삭제 벡터에 기록된 변경 내용을 확인하기 위한 엄격한 보장이 없으며, 대상 데이터 파일이 파일 압축 후보가 아닐 경우 삭제 벡터에 기록된 일부 변경 내용이 적용되지 않을 수 있습니다. REORG TABLE ... APPLY (PURGE) 삭제 벡터를 사용하여 레코드가 포함된 모든 데이터 파일을 수정하여 다시 작성합니다. REORG 테이블을 참조하세요.

참고 항목

수정된 데이터는 이전 파일에 여전히 있을 수 있습니다. VACUUM을 실행하여 이전 파일을 실제로 삭제할 수 있습니다. REORG TABLE ... APPLY (PURGE) 는 작업이 완료될 때 새 버전의 테이블을 만듭니다. 이는 삭제된 파일을 완전히 제거하기 위해 작업의 보존 임계값에 VACUUM 대해 고려해야 하는 타임스탬프입니다. 진공 상태에서 사용되지 않는 데이터 파일 제거를 참조하세요.

델타 클라이언트와의 호환성

Azure Databricks는 삭제 벡터를 활용하여 Photon 지원 컴퓨팅에 대한 업데이트를 위해 예측 I/O를 구동합니다. 업데이트를 가속화하려면 예측 I/O 사용을 참조 하세요.

읽기 및 쓰기에 대한 삭제 벡터 활용에 대한 지원은 클라이언트에 따라 다릅니다.

다음 표에서는 삭제 벡터가 활성화된 델타 테이블을 읽고 쓰는 데 필요한 클라이언트 버전을 표시하고 삭제 벡터를 활용하는 쓰기 작업을 지정합니다.

클라이언트 삭제 벡터 작성 삭제 벡터 읽기
Photon을 사용하는 Databricks 런타임 MERGEUPDATEDELETE Databricks Runtime 12.2 LTS 이상을 지원하고 사용합니다. Databricks Runtime 12.2 LTS 이상이 필요합니다.
Photon이 없는 Databricks 런타임 DELETE Databricks Runtime 12.2 LTS 이상을 사용할 수 있습니다. Databricks UPDATE Runtime 14.1 이상을 사용할 수 있습니다. MERGE Databricks Runtime 14.3 LTS 이상을 사용할 수 있습니다. Databricks Runtime 12.2 LTS 이상이 필요합니다.
OSS Delta Lake를 사용하는 OSS Apache Spark DELETE OSS Delta 2.4.0 이상을 사용할 수 있습니다. UPDATE OSS Delta 3.0.0 이상을 사용할 수 있습니다. OSS Delta 2.3.0 이상이 필요합니다.
델타 공유 받는 사람 쓰기는 델타 공유 테이블에서 지원되지 않습니다. Databricks: DBR 14.1 이상이 필요합니다. 오픈 소스 Apache Spark: 3.1 이상이 필요합니다 delta-sharing-spark .

참고 항목

다른 델타 클라이언트의 지원은 OSS Delta Lake 통합 설명서를 참조 하세요.

제한 사항

  • UniForm은 삭제 벡터를 지원하지 않습니다.
  • 구체화된 뷰에 대해 삭제 벡터를 사용하도록 설정할 수 있지만 구체화된 뷰에 대해 삭제 벡터를 사용하지 않도록 설정하려면 구체화된 뷰를 삭제하고 다시 만들어야 합니다.
  • 삭제 벡터가 있는 테이블에 대한 매니페스트 파일을 생성할 수 없습니다. 매니페스트를 생성하려면 동시 쓰기 작업이 실행되고 있지 않은지 실행하고 REORG TABLE ... APPLY (PURGE) 확인합니다.
  • 삭제 벡터가 활성화된 테이블에 대한 매니페스트 파일을 증분 방식으로 생성할 수 없습니다.