Iceberg 테이블 관련 설정
Iceberg 테이블 관련 설정
Iceberg 테이블의 읽기와 관리 동작을 제어하는 설정들이에요. DROP 시 데이터 삭제 여부, 매니페스트 디코딩 동시성, 스냅샷 조회, 오펀 파일 제거, 매니페스트 스키마 충돌 처리 등을 다룬답니다. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.
출처: 문서
본문
이 설정들은 system.settings에서 확인할 수 있고, 소스 코드에서 자동 생성된 값들이에요.
iceberg_delete_data_on_drop
DROP 시 모든 iceberg 파일을 삭제할지 여부를 나타내요.
iceberg_file_entries_queue_size
Iceberg 데이터 매니페스트 디코드 태스크와 쿼리 사이의 대기열 용량(데이터 파일 항목 단위)이에요. 대기열이 가득 차고 쿼리가 소비하지 않으면 디코드 태스크가 멈추므로, 이는 read-ahead도 제한해요. 0보다 커야 해요.
iceberg_manifest_decode_concurrency
별칭: iceberg_delete_manifest_decode_concurrency
테이블을 읽는 동안 동시에 디코딩되는 Iceberg 매니페스트 파일의 최대 수예요. 삭제 매니페스트는 데이터 파일이 읽히기 전에 모두 디코딩돼요. 데이터 매니페스트는 쿼리의 데이터 파일 목록이 생성되는 동안 디코딩되고, 쿼리가 이미 디코딩된 항목을 소비할 때만 새 항목이 디코딩돼요. 여러 매니페스트를 한 번에 디코딩하면 오브젝트 스토리지 왕복과 항목별 가지치기 작업이 겹쳐요.
Iceberg 메타데이터 파일 캐시가 비활성화되거나 가득 차면 더 높은 값은 최대 메모리를 높여요. 각 진행 중인 매니페스트가 자신의 디코딩된 내용을 보유하기 때문이에요. 0보다 커야 하며, 1은 매니페스트를 하나씩 디코딩해요.
iceberg_manifest_min_count_to_compact
OPTIMIZE TABLE … MANIFEST를 통한 매니페스트 전용 컴팩션을 트리거하는 데 필요한 최소 매니페스트 파일 수예요. 현재 매니페스트 파일 수가 이 임계값보다 작거나 같으면 컴팩션이 건너뛰어져요. allow_experimental_iceberg_compaction이 활성화되어 있어야 해요.
기본값은 Iceberg 테이블 속성 commit.manifest.min-count-to-merge의 문서화된 기본값(100)을 반영해요. https://iceberg.apache.org/docs/1.5.2/configuration/ 참조.
iceberg_max_number_datafiles_to_compact
iceberg의 컴팩션 데이터 파일 임계값이에요.
iceberg_orphan_files_older_than_seconds
Iceberg 테이블에서 오펀 파일 제거를 위한 기본 나이 임계값(초)이에요. 이보다 새로운 파일은 오펀으로 간주되지 않아요. remove_orphan_files() 프로시저 호출에서 older_than 인자가 생략될 때 사용돼요. 기본값은 259200(3일)이에요.
iceberg_snapshot_id
특정 스냅샷 id를 사용해 Iceberg 테이블을 조회해요.
iceberg_timestamp_ms
특정 타임스탬프 시점에 현재였던 스냅샷을 사용해 Iceberg 테이블을 조회해요.
iceberg_tolerate_conflicting_manifest_schemas
활성화되고 Iceberg 매니페스트 파일 헤더의 schema 키가 metadata.json에서 같은 schema-id에 이미 등록된 스키마와 다른 스키마를 가진다면, metadata.json 스키마가 사용되고 매니페스트 헤더 사본은 경고와 함께 무시돼요. 비활성화하면 그런 충돌은 ICEBERG_SPECIFICATION_VIOLATION 오류로 쿼리를 실패시켜요.
매니페스트 헤더 스키마는 매니페스트가 작성된 시점의 테이블 스키마 사본일 뿐이며, 일부 라이터(예: AWS S3 Tables 유지보수 작업)가 여기에 열화된 사본을 저장하는 것이 관찰됐어요. 다른 쿼리 엔진은 metadata.json에서 스키마를 해석하고 발산하는 헤더 사본을 무시하므로 기본값도 그것을 따르는 것이에요. 두 metadata.json 스키마 정의 사이의 충돌은 여전히 항상 쿼리를 실패시켜요.