Tipos de layout de dicionário
Há várias formas de armazenar dicionários em memória, cada uma com diferentes compensações entre uso de CPU e de RAM.Layouts baseados em cache não são adequados para um enriquecimento confiável no momento da inserção, pois suas entradas já aquecidas ficam restritas a cada servidor e se perdem quando um servidor é reiniciado ou substituído. O autoscaling do ClickHouse Cloud e a substituição gerenciada de nós tornam essa situação mais provável. Em vez disso, use um layout totalmente carregado; veja Dicionários com cache em caminhos de ingestão.
Especifique o layout de dicionário
Você pode configurar um layout de dicionário com a cláusulaLAYOUT (para DDL) ou com a configuração layout em definições de arquivo de configuração.
- DDL
- Arquivo de configuração
Consulte também CREATE DICTIONARY para ver a sintaxe DDL completa. Dicionários cujo layout não contém a palavra
complex-key* têm uma chave do tipo UInt64; dicionários complex-key* têm uma chave composta (complexa, com tipos arbitrários).
Exemplo de chave numérica (a coluna key_column é do tipo UInt64):
- DDL
- Arquivo de configuração
Exemplo de chave composta (a chave tem um elemento do tipo String):
- DDL
- Arquivo de configuração
Melhore o desempenho do dicionário
Há várias formas de melhorar o desempenho do dicionário:- Chame a função usada para trabalhar com o dicionário após o
GROUP BY. - Marque como injetivos os atributos a serem extraídos.
Um atributo é considerado injetivo se chaves diferentes corresponderem a valores de atributo diferentes.
Portanto, quando o
GROUP BYusa uma função que busca um valor de atributo pela chave, essa função é automaticamente removida doGROUP BY.
- Não foi possível carregar o dicionário acessado.
- Erro ao consultar um dicionário
cached.