Skip to main content
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

Contém estatísticas amostrais de seletividade coletadas durante a leitura de tabelas 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

Uma única consulta pode produzir dois tipos de linhas em system.predicate_statistics_log:
  • Linhas de filtro, emitidas por etapa de prewhere/filter em MergeTreeSelectProcessor. Elas preenchem predicate_expression, input_rows, passed_rows, filter_selectivity e as colunas do predicado completo total_input_rows, total_passed_rows e total_selectivity. As colunas relacionadas a índices ficam vazias.
  • Linhas de índice, emitidas por etapa de leitura em ReadFromMergeTree. Elas preenchem os arrays index_names, index_types, total_granules, granules_after e index_selectivities, com uma entrada por estágio de índice (chave primária, partição, índice de salto). As colunas relacionadas a predicados ficam vazias.
As linhas de filtro e as linhas de índice da mesma consulta compartilham o mesmo query_id e a mesma table, portanto podem ser combinadas quando ambas forem necessárias.

Amostragem e sobrecarga

A amostragem é controlada por predicate_statistics_sample_rate:
  • 0 desativa a coleta.
  • 1 amostra todas as consultas.
  • N > 1 amostra aproximadamente 1 / N das consultas, com base no hash de query_id.
Valores menores geram mais dados, mas aumentam o trabalho de CPU no caminho de leitura e o número de gravações nos logs do sistema. Após habilitar a configuração, use 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).

Exemplo

Veja também

Última modificação em 3 de julho de 2026