system.iceberg_metadata_log
Таблица system.iceberg_metadata_log фиксирует события доступа к метаданным и их разбора для таблиц Iceberg, прочитанных ClickHouse. Она предоставляет подробную информацию о каждом обработанном файле или записи метаданных, что полезно для отладки, аудита и анализа эволюции структуры таблиц Iceberg.
Назначение
Эта таблица фиксирует каждый файл и каждую запись метаданных, прочитанные из таблиц Iceberg, включая корневые файлы метаданных, списки манифестов и записи манифестов. Она помогает пользователям отследить, как ClickHouse интерпретирует метаданные таблиц Iceberg, и диагностировать проблемы, связанные с эволюцией схемы, поиском и разрешением файлов или планированием выполнения запросов.
Эта таблица в первую очередь предназначена для отладки.
Столбцы
| Имя | Тип | Описание |
|---|---|---|
event_date | Date | Дата записи лога. |
event_time | DateTime | Временная метка события. |
query_id | String | Идентификатор запроса, который инициировал чтение метаданных. |
content_type | Enum8 | Тип содержимого метаданных (см. ниже). |
table_path | String | Путь к таблице Iceberg. |
file_path | String | Путь к корневому файлу метаданных в формате JSON, списку манифестов Avro или файлу манифеста. |
content | String | Содержимое в формате JSON (исходные метаданные из файла .json, метаданные Avro или запись Avro). |
row_in_file | Nullable(UInt64) | Номер строки в файле, если применимо. Заполняется для типов содержимого ManifestListEntry и ManifestFileEntry. |
pruning_status | Nullable(Enum8) | Статус отсечения для записи. NotPruned, PartitionPruned, MinMaxIndexPruned. Учтите, что отсечение по партиции выполняется до отсечения по minmax, поэтому PartitionPruned означает, что запись была отброшена фильтром по партиции и отсечение по minmax даже не выполнялось. Заполняется для типа содержимого ManifestFileEntry. |
Значения content_type
None: Нет содержимого.Metadata: Корневой файл метаданных.ManifestListMetadata: Метаданные списка манифестов.ManifestListEntry: Запись в списке манифестов.ManifestFileMetadata: Метаданные файла манифеста.ManifestFileEntry: Запись в файле манифеста.
Данные в этой системной таблице хранятся локально на каждом узле в ClickHouse Cloud. Поэтому для получения полного обзора всех данных требуется функция clusterAllReplicas. Подробности см. здесь.
Управление подробностью журналирования
Вы можете управлять тем, какие события, связанные с метаданными, записываются в журнал, с помощью настройки iceberg_metadata_log_level.
Чтобы записывать в журнал все метаданные, используемые в текущем запросе:
Чтобы логировать только корневой JSON‑файл метаданных, используемый в текущем запросе:
См. дополнительную информацию в описании настройки iceberg_metadata_log_level.
Полезная информация
- Используйте
iceberg_metadata_log_levelна уровне запроса только тогда, когда вам нужно детально исследовать таблицу Iceberg. В противном случае вы можете заполнить таблицу логов избыточными метаданными и столкнуться с ухудшением производительности. - Таблица содержит дублирующиеся записи, так как она предназначена в первую очередь для отладки и не гарантирует уникальность записей для каждой сущности. Отдельные строки хранят содержимое и статус отсечения, потому что они собираются в разные моменты выполнения программы: содержимое — при чтении метаданных, статус отсечения — при проверке метаданных на возможность отсечения. Никогда не полагайтесь на саму таблицу для дедупликации.
- Если вы используете
content_type, более подробный, чемManifestListMetadata, кэш метаданных Iceberg для списков манифестов отключается. - Аналогично, если вы используете
content_type, более подробный, чемManifestFileMetadata, кэш метаданных Iceberg для файлов манифестов отключается. - Если запрос SELECT был отменён или завершился ошибкой, таблица логов всё равно может содержать записи о метаданных, обработанных до сбоя, но не будет содержать информацию о сущностях метаданных, которые не были обработаны.