Consultas no ClickHouse CloudOs dados nesta tabela de sistema são mantidos localmente em cada nó do ClickHouse Cloud. Portanto, para obter uma visão completa de todos os dados, é necessário usar a função
clusterAllReplicas. Consulte aqui para mais detalhes.Descrição
MergeTree. A tabela é preenchida somente quando predicate_statistics_sample_rate é maior que 0.
Use esta tabela para inspecionar quão seletivos são os predicados definidos pelo usuário em cargas de trabalho reais e quantos grânulos permanecem após a filtragem por chave primária ou índice de salto. Esses dados servem como entrada para recomendações de índices e projeções orientadas pela carga de trabalho.
Estruturas de linha
system.predicate_statistics_log:
- Linhas de filtro, emitidas por etapa de prewhere/filter em
MergeTreeSelectProcessor. Elas preenchempredicate_expression,input_rows,passed_rows,filter_selectivitye as colunas do predicado completototal_input_rows,total_passed_rowsetotal_selectivity. As colunas relacionadas a índices ficam vazias. - Linhas de índice, emitidas por etapa de leitura em
ReadFromMergeTree. Elas preenchem os arraysindex_names,index_types,total_granules,granules_aftereindex_selectivities, com uma entrada por estágio de índice (chave primária, partição, índice de salto). As colunas relacionadas a predicados ficam vazias.
query_id e a mesma table, portanto podem ser combinadas quando ambas forem necessárias.
Amostragem e sobrecarga
predicate_statistics_sample_rate:
0desativa a coleta.1amostra todas as consultas.N > 1amostra aproximadamente1 / Ndas consultas, com base no hash dequery_id.
SYSTEM FLUSH LOGS se precisar que as linhas apareçam imediatamente.
Colunas
hostname(LowCardinality(String)) — Hostname do servidor que executa a consulta.event_date(Date) — Data do evento.event_time(DateTime) — Timestamp de quando esta entrada de log foi registrada.database(LowCardinality(String)) — Nome do banco de dados da tabela de destino.table(LowCardinality(String)) — Nome da tabela de destino.query_id(String) — ID da consulta para vinculação ao query_log.predicate_expression(String) — Expressão de filtro completa processada por esta etapa de prewhere/filtro (dump do ActionsDAG).input_rows(UInt64) — Linhas que entram nesta etapa de prewhere/filtro.passed_rows(UInt64) — Linhas que passam por esta etapa de prewhere/filtro.filter_selectivity(Float64) — Seletividade desta etapa: passed_rows / input_rows.total_input_rows(UInt64) — Linhas que entram na primeira etapa de prewhere (total de linhas lidas dos grânulos).total_passed_rows(UInt64) — Linhas que passam por todas as etapas de prewhere (linhas entregues à consulta).total_selectivity(Float64) — Seletividade de todo o predicado: total_passed_rows / total_input_rows.index_names(Array(LowCardinality(String))) — Nomes dos índices aplicados, por exemplo [‘PrimaryKey’, ‘idx_bf_status’] (somente linhas de índice).index_types(Array(LowCardinality(String))) — Tipos de índices aplicados: PrimaryKey, Skip, MinMax, Partition (somente linhas de índice).total_granules(Array(UInt64)) — Grânulos que entram em cada estágio de índice (somente linhas de índice).granules_after(Array(UInt64)) — Grânulos restantes após cada estágio de índice (somente linhas de índice).index_selectivities(Array(Float64)) — Seletividade de cada índice: granules_after / total_granules (somente linhas de índice).