iceberg_metadata_log 시스템 테이블

iceberg_metadata_log 시스템 테이블

iceberg_metadata_log 시스템 테이블은 ClickHouse가 읽은 Iceberg 테이블에 대한 메타데이터 접근 및 파싱 이벤트를 기록해요. 처리된 각 메타데이터 파일이나 항목에 대한 상세 정보를 제공하며, 디버깅, 감사, Iceberg 테이블 구조 진화 이해에 유용해요. 이 테이블은 주로 디버깅 목적입니다.

출처: 문서

본문

Querying in ClickHouse Cloud 이 시스템 테이블의 데이터는 ClickHouse Cloud의 각 노드에 로컬로 보관돼요. 따라서 모든 데이터에 대한 완전한 뷰를 얻으려면 clusterAllReplicas 함수가 필요해요. 자세한 내용은 여기를 참고해요.

Description (설명)

system.iceberg_metadata_log 테이블은 ClickHouse가 읽은 Iceberg 테이블에 대한 메타데이터 접근 및 파싱 이벤트를 기록해요. 처리된 각 메타데이터 파일이나 항목에 대한 상세 정보를 제공하며, 디버깅, 감사, Iceberg 테이블 구조 진화 이해에 유용해요. 이 테이블은 Iceberg 테이블에서 읽은 모든 메타데이터 파일과 항목(루트 메타데이터 파일, 매니페스트 리스트, 매니페스트 항목 포함)을 기록해요. ClickHouse가 Iceberg 테이블 메타데이터를 어떻게 해석하는지 추적하고 스키마 진화, 파일 해석, 쿼리 계획과 관련된 문제를 진단하는 데 도움을 줘요. 이 테이블은 주로 디버깅을 위한 것입니다.

Controlling log verbosity (로그 상세도 제어)

기록되는 메타데이터 이벤트는 iceberg_metadata_log_level 설정으로 제어할 수 있어요. 현재 쿼리에서 사용되는 모든 메타데이터를 기록하려면:

SELECT * FROM my_iceberg_table SETTINGS iceberg_metadata_log_level = 'manifest_file_entry';

SYSTEM FLUSH LOGS iceberg_metadata_log;

SELECT content_type, file_path, row_in_file
FROM system.iceberg_metadata_log
WHERE query_id = '{previous_query_id}';

현재 쿼리에서 사용되는 루트 메타데이터 JSON 파일만 기록하려면:

SELECT * FROM my_iceberg_table SETTINGS iceberg_metadata_log_level = 'metadata';

SYSTEM FLUSH LOGS iceberg_metadata_log;

SELECT content_type, file_path, row_in_file
FROM system.iceberg_metadata_log
WHERE query_id = '{previous_query_id}';

자세한 내용은 iceberg_metadata_log_level 설정 설명을 참고해요.

Good To Know (알아두면 좋은 점)

  • iceberg_metadata_log_level은 Iceberg 테이블을 자세히 조사해야 할 때만 쿼리 수준으로 사용해요. 그렇지 않으면 로그 테이블을 과도한 메타데이터로 채워 성능 저하를 겪을 수 있어요.
  • 테이블에는 중복 항목이 있어요. 주로 디버깅을 위한 것이며 엔터티별 고유성을 보장하지 않기 때문이에요. 내용과 프루닝 상태는 프로그램의 서로 다른 시점에 수집되므로 별도의 행에 저장돼요. 내용은 메타데이터를 읽을 때, 프루닝 상태는 메타데이터를 프루닝 검사할 때 수집돼요. 중복 제거를 위해 이 테이블 자체에 의존하지 마세요.
  • ManifestListMetadata보다 더 상세한 content_type을 사용하면 manifest list에 대한 Iceberg 메타데이터 캐시가 비활성화돼요.
  • 마찬가지로 ManifestFileMetadata보다 더 상세한 content_type을 사용하면 manifest file에 대한 Iceberg 메타데이터 캐시가 비활성화돼요.
  • SELECT 쿼리가 취소되거나 실패했다면 로그 테이블은 실패 전에 처리된 메타데이터에 대한 항목을 여전히 포함할 수 있지만, 처리되지 않은 메타데이터 엔터티에 대한 정보는 포함하지 않아요.

언제든지 이 테이블을 잘라내거나 드롭해도 안전해요.

Columns (열)

content_type values (content_type 값)

  • None: 콘텐츠 없음.
  • Metadata: 루트 메타데이터 파일.
  • ManifestListMetadata: manifest list 메타데이터.
  • ManifestListEntry: manifest list의 항목.
  • ManifestFileMetadata: manifest file 메타데이터.
  • ManifestFileEntry: manifest file의 항목.

See also (참고)

더 알아보기 (Learn more)