삭제 벡터란?
삭제 벡터는 Delta Lake 테이블에서 사용하도록 설정할 수 있는 스토리지 최적화 기능입니다. 기본적으로 데이터 파일의 단일 행이 삭제되면 레코드를 포함하는 전체 Parquet 파일을 다시 작성해야 합니다. 테이블에 DELETE
UPDATE
대해 삭제 벡터를 사용하도록 설정한 경우 작업 MERGE
에서는 삭제 벡터를 사용하여 Parquet 파일을 다시 작성하지 않고 기존 행을 제거되거나 변경된 것으로 표시합니다. 테이블의 후속 읽기는 삭제 벡터로 표시된 삭제를 최신 테이블 버전에 적용하여 현재 테이블 상태를 확인합니다.
Databricks는 Databricks Runtime 14.3 LTS 이상을 사용하여 모든 최적화를 사용하기 위해 삭제 벡터가 있는 테이블을 작성하는 것이 좋습니다. Databricks Runtime 12.2 LTS 이상에서 삭제 벡터를 사용하도록 설정된 테이블을 읽을 수 있습니다.
Databricks Runtime 14.2 이상에서는 삭제 벡터가 있는 테이블이 행 수준 동시성을 지원합니다. 행 수준 동시성과의 쓰기 충돌을 참조하세요.
참고 항목
Photon은 예측 I/O 업데이트, 가속 DELETE
MERGE
및 UPDATE
작업에 삭제 벡터를 활용합니다. 삭제 벡터 읽기를 지원하는 모든 클라이언트는 예측 I/O에서 이러한 업데이트를 생성했는지 여부에 관계없이 삭제 벡터를 생성하는 업데이트를 읽을 수 있습니다. 업데이트를 가속화하려면 예측 I/O 사용을 참조 하세요.
삭제 벡터 사용
Important
작업 영역 관리자 설정은 삭제 벡터가 새 델타 테이블에 대해 자동으로 사용되는지 여부를 제어합니다. 삭제 벡터 자동 사용을 참조하세요.
삭제 벡터 자동 사용 제어를 위한 작업 영역 설정이 사용되는 경우 테이블 형식에 대해 선택한 옵션에 따라 SQL 웨어하우스 또는 Databricks Runtime 14.1 이상을 사용하여 새 테이블을 만들 때 기본적으로 삭제 벡터가 사용하도록 설정됩니다. 삭제 벡터는 구체화된 뷰 또는 스트리밍 테이블을 만들 때 기본적으로 사용하도록 설정되지 않으며 구체화된 뷰 또는 스트리밍 테이블을 만들 때 수동으로 사용하도록 설정해야 합니다.
테이블 또는 뷰에서 삭제 벡터를 수동으로 지원하려면 테이블 속성을 사용합니다 delta.enableDeletionVectors
. 테이블을 만들거나 변경할 때 델타 테이블에서 삭제 벡터를 수동으로 사용하도록 설정할 수 있습니다. 구체화된 뷰 또는 스트리밍 테이블을 만들 때만 구체화된 뷰 또는 스트리밍 테이블에서 삭제 벡터를 수동으로 사용하도록 설정할 수 있습니다. 구체화된 ALTER
뷰 또는 스트리밍 테이블에서 삭제 벡터를 사용하도록 설정하는 데 문을 사용할 수 없습니다.
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 런타임 | MERGE UPDATE DELETE 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은 삭제 벡터를 지원하지 않습니다.
- GENERATE 문을 사용하여 삭제 벡터를 사용하는 파일이 있는 테이블에 대한 매니페스트 파일을 생성할 수 없습니다. 매니페스트를 생성하려면 먼저 REORG TABLE을 실행합니다. APPLY(PURGE) 문을 실행한 다음, 문을 실행합니다
GENERATE
. 문을 제출할REORG
때 동시 쓰기 작업이 실행되고 있지 않은지 확인해야 합니다. - 삭제 벡터가 활성화된 테이블에 대한 매니페스트 파일을 증분 방식으로 생성할 수 없습니다(예: 테이블 속성
delta.compatibility.symlinkFormatManifest.enabled=true
설정). - 구체화된 뷰 또는 스트리밍 테이블에서 삭제 벡터를 사용하도록 설정하고 이후에 삭제 벡터를 사용하지 않도록 설정하는 경우 뷰 또는 테이블에 대한 이후 쓰기는 삭제 벡터를 사용할 수 없지만 기존 삭제 벡터는 제거되지 않습니다.
- 구체화된 뷰 또는 스트리밍 테이블에서 삭제 벡터를 사용하도록 설정한 후에는 테이블 프로토콜을 다운그레이드할 수 없습니다. 사용하도록 설정한 후에는 뷰 또는 테이블에서 삭제 벡터를 사용하지 않도록 설정하더라도 삭제 벡터에 대한 테이블 기능을 제거할 수 없습니다.
- 구체화된 뷰 또는 스트리밍 테이블에서 실행
REORG
하여 삭제 벡터에 기록된 변경 내용을 이러한 개체를 지원하는 Parquet 데이터 파일에 커밋할 수 없습니다. 이러한 제한으로 인해 레코드의 전체 삭제(예: GDPR 또는 CCPA 규정 준수)를 보장해야 하는 경우 구체화된 뷰 또는 스트리밍 테이블에서 삭제 벡터를 사용하도록 설정하지 마세요.