Pular para o conteúdo principal

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 recomendadosflat, hashed e complex_key_hashed oferecem o melhor desempenho de consultas. Layouts com cache não são recomendados devido ao desempenho potencialmente ruim e à dificuldade de ajustar os parâmetros — veja cache para mais detalhes.

Especifique o layout de dicionário

Se você estiver usando um dicionário com o ClickHouse Cloud, use a opção de consulta DDL para criar seus dicionários e crie o dicionário como o usuário default. Além disso, verifique a lista de fontes de dicionário compatíveis no guia de compatibilidade com a Cloud.
Você pode configurar um layout de dicionário com a cláusula LAYOUT (para DDL) ou com a configuração layout em definições de 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):

Exemplo de chave composta (a chave tem um elemento do tipo String):

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 BY usa uma função que busca um valor de atributo pela chave, essa função é automaticamente removida do GROUP BY.
O ClickHouse retorna uma exceção em caso de erros relacionados a dicionários. Exemplos de erros podem ser:
  • Não foi possível carregar o dicionário acessado.
  • Erro ao consultar um dicionário cached.
Você pode consultar a lista de dicionários e seus status na tabela system.dictionaries.
Última modificação em 10 de junho de 2026