group_by_overflow_mode
Define o que acontece quando o número de chaves únicas para agregação excede o limite:throw: gera uma exceçãobreak: interrompe a execução da consulta e retorna o resultado parcialany: continua a agregação para as chaves que entraram no conjunto, mas não adiciona novas chaves ao conjunto.
any permite executar uma aproximação de GROUP BY. A qualidade dessa
aproximação depende da natureza estatística dos dados.
group_by_top_k_optimization_observation_rows
Paraenable_group_by_top_k_optimization: o número de linhas que cada fluxo de agregação observa antes de congelar um heap top-K cheio que ignorou menos de 10% das linhas de entrada e removeu menos chaves do que sua capacidade. Um heap congelado significa que a agregação continua como se a otimização estivesse desabilitada.
A janela efetiva é de pelo menos o dobro do tamanho reservado do heap, para que ele sempre tenha a chance de ser preenchido antes de ser avaliado. 0 desabilita esse congelamento (o heap ainda é congelado quando um conjunto de empates na fronteira cresce além da sua capacidade).
Isso não tem efeito em consultas GROUP BY keys LIMIT K sem ORDER BY, nas quais o congelamento está sempre desabilitado: o plano desse formato contém uma ordenação gerada automaticamente que só compensa enquanto o heap limita a tabela hash; portanto, congelar o heap deixaria o plano mais lento do que o plano sem otimização.
group_by_top_k_optimization_shared_boundary
Paraenable_group_by_top_k_optimization: compartilha a fronteira de descarte mais restritiva entre as threads de agregação. Cada thread publica a fronteira do seu próprio conjunto top-K uma vez por bloco processado, sempre que ela se torna mais restritiva, e todas as threads descartam linhas com base na melhor fronteira publicada, e não apenas na sua própria. Um conjunto de K chaves estritamente melhores que uma linha comprova que essa linha não pode chegar ao resultado final, independentemente de qual thread detenha essas chaves; portanto, o compartilhamento não altera o resultado. Ele apenas permite que threads cujas chaves locais estejam mal classificadas (por exemplo, quando os valores de chave estão agrupados ao longo da tabela) descartem linhas que, caso contrário, agregariam à toa.
Valores possíveis:
- 0 — Desabilitado.
- 1 — Habilitado.
group_by_two_level_threshold
Número de chaves a partir do qual uma agregação em dois níveis é iniciada. 0 - o limiar não está definido.group_by_two_level_threshold_bytes
A partir de qual tamanho, em bytes, do estado de agregação, passa-se a usar a agregação em dois níveis. 0 - o limiar não está definido. A agregação em dois níveis é usada quando pelo menos um dos limiares é atingido.group_by_use_nulls
Altera a forma como a cláusula GROUP BY trata os tipos das chaves de agregação. Quando os especificadoresROLLUP, CUBE ou GROUPING SETS são usados, algumas chaves de agregação podem não ser usadas na produção de determinadas linhas de resultado.
As colunas dessas chaves são preenchidas com o valor padrão ou com NULL nas linhas correspondentes, dependendo dessa configuração.
Valores possíveis:
- 0 — O valor padrão do tipo da chave de agregação é usado para preencher valores ausentes.
- 1 — O ClickHouse executa
GROUP BYda mesma forma que o padrão SQL define. Os tipos das chaves de agregação são convertidos para Nullable. As colunas das chaves de agregação correspondentes são preenchidas com NULL nas linhas em que elas não foram usadas.