跳转到主要内容
在 ClickHouse Cloud 中查询此系统表中的数据分别保存在 ClickHouse Cloud 各节点的本地。因此,如需查看所有数据的完整情况,需要使用 clusterAllReplicas 函数。更多详情请参见此处

说明

system.iceberg_metadata_log 表会记录 ClickHouse 读取 Iceberg 表时的元数据访问和解析事件。它提供有关每个已处理元数据文件或条目的详细信息,有助于调试、审计以及理解 Iceberg 表结构的演进过程。 该表会记录从 Iceberg 表读取的每个元数据文件和条目,包括根元数据文件、manifest 列表和 manifest 条目。它可帮助用户追踪 ClickHouse 如何解析 Iceberg 表元数据,并诊断与 schema 演进、文件定位或查询计划相关的问题。
该表主要用于调试。

控制日志详细级别

你可以使用 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 设置的说明。

使用须知

  • 仅当你需要对 Iceberg 表进行细致排查时,才在查询级别使用 iceberg_metadata_log_level。否则,日志表中可能会写入过多元数据,并导致性能下降。
  • 该表包含重复条目,因为它主要用于调试,且不保证每个实体的唯一性。内容和裁剪状态分别存储在不同的行中,因为它们是在程序运行的不同时间点采集的。内容会在读取元数据时采集,裁剪状态会在检查元数据是否需要裁剪时采集。切勿依赖该表本身进行去重。
  • 如果你使用的 content_typeManifestListMetadata 更详细,则会为 manifest 列表禁用 Iceberg metadata cache。
  • 同样,如果你使用的 content_typeManifestFileMetadata 更详细,则会为 manifest 文件禁用 Iceberg metadata cache。
  • 如果 SELECT 查询被取消或执行失败,日志表中仍可能包含失败前已处理元数据的条目,但不会包含尚未处理的元数据实体信息。

content_type

  • None:无内容。
  • Metadata:根元数据文件。
  • ManifestListMetadata:manifest 列表元数据。
  • ManifestListEntry:manifest 列表中的条目。
  • ManifestFileMetadata:manifest 文件元数据。
  • ManifestFileEntry:manifest 文件中的条目。

另见

最后修改于 2026年6月10日