Запросы в ClickHouse CloudДанные в этой системной таблице хранятся локально на каждом узле ClickHouse Cloud. Поэтому, чтобы получить полное представление обо всех данных, требуется функция
clusterAllReplicas. Дополнительные сведения см. здесь.Описание
MergeTree. Таблица заполняется только тогда, когда predicate_statistics_sample_rate больше 0.
Используйте эту таблицу, чтобы оценить, насколько селективны пользовательские предикаты в реальных рабочих нагрузках и сколько гранул остается после фильтрации по первичному ключу или индексу пропуска данных. Эти данные предназначены для выработки рекомендаций по индексам и проекциям на основе рабочих нагрузок.
Виды строк
system.predicate_statistics_log:
- Строки фильтров, создаваемые на каждом шаге prewhere/filter в
MergeTreeSelectProcessor. В них заполняютсяpredicate_expression,input_rows,passed_rows,filter_selectivity, а также столбцы, относящиеся ко всему предикату:total_input_rows,total_passed_rows,total_selectivity. Столбцы, связанные с индексами, остаются пустыми. - Строки индексов, создаваемые на каждом шаге чтения в
ReadFromMergeTree. В них заполняются массивыindex_names,index_types,total_granules,granules_afterиindex_selectivities— по одной записи на каждый этап индексации (primary key, партиция, индекс пропуска данных). Столбцы, связанные с предикатами, остаются пустыми.
query_id и table, поэтому при необходимости их можно объединить с помощью JOIN.
Сэмплирование и накладные расходы
predicate_statistics_sample_rate:
0отключает сбор.1включает сэмплирование каждого запроса.N > 1включает сэмплирование примерно1 / Nзапросов по хешуquery_id.
SYSTEM FLUSH LOGS, если нужно, чтобы строки появились сразу.
Столбцы
hostname(LowCardinality(String)) — Имя хоста сервера, выполняющего запрос.event_date(Date) — Дата события.event_time(DateTime) — Временная метка, когда была сделана эта запись в журнале.database(LowCardinality(String)) — Имя базы данных целевой таблицы.table(LowCardinality(String)) — Имя целевой таблицы.query_id(String) — Идентификатор запроса для связи с query_log.predicate_expression(String) — Полное выражение фильтра, обрабатываемое на этом шаге prewhere/filter (дамп ActionsDAG).input_rows(UInt64) — Строки, поступающие на этот шаг prewhere/filter.passed_rows(UInt64) — Строки, прошедшие этот шаг prewhere/filter.filter_selectivity(Float64) — Селективность этого шага: passed_rows / input_rows.total_input_rows(UInt64) — Строки, поступающие на первый шаг prewhere (общее число строк, прочитанных из гранул).total_passed_rows(UInt64) — Строки, прошедшие все шаги prewhere (строки, переданные запросу).total_selectivity(Float64) — Селективность всего предиката: total_passed_rows / total_input_rows.index_names(Array(LowCardinality(String))) — Имена применённых индексов, например [‘PrimaryKey’, ‘idx_bf_status’] (только для строк индексов).index_types(Array(LowCardinality(String))) — Типы применённых индексов: PrimaryKey, Skip, MinMax, Partition (только для строк индексов).total_granules(Array(UInt64)) — Гранулы на входе каждого этапа применения индекса (только для строк индексов).granules_after(Array(UInt64)) — Гранулы, оставшиеся после каждого этапа применения индекса (только для строк индексов).index_selectivities(Array(Float64)) — Селективность каждого индекса: granules_after / total_granules (только для строк индексов).