Saltar al contenido principal

Tipos de layout del diccionario

Hay varias formas de almacenar diccionarios en memoria, cada una con sus propias compensaciones entre el uso de CPU y RAM.
LayoutDescripción
flatAlmacena los datos en arrays planos indexados por clave. Es el layout más rápido, pero las claves deben ser UInt64 y estar limitadas por max_array_size.
hashedAlmacena los datos en una tabla hash. No hay límite en el tamaño de las claves y admite cualquier número de elementos.
sparse_hashedComo hashed, pero reduce el uso de memoria a cambio de más CPU.
complex_key_hashedComo hashed, para claves compuestas.
complex_key_sparse_hashedComo sparse_hashed, para claves compuestas.
hashed_arrayAtributos almacenados en arrays con una tabla hash que asigna las claves a índices del array. Eficiente en memoria cuando hay muchos atributos.
complex_key_hashed_arrayComo hashed_array, para claves compuestas.
range_hashedTabla hash con rangos ordenados. Admite búsquedas por clave + rango de fecha/hora.
complex_key_range_hashedComo range_hashed, para claves compuestas.
cacheCaché en memoria de tamaño fijo. Solo se almacenan las claves a las que se accede con frecuencia.
complex_key_cacheComo cache, para claves compuestas.
ssd_cacheComo cache, pero almacena los datos en SSD con un índice en memoria.
complex_key_ssd_cacheComo ssd_cache, para claves compuestas.
directSin almacenamiento en memoria: consulta el origen directamente para cada solicitud.
complex_key_directComo direct, para claves compuestas.
ip_trieEstructura trie para búsquedas rápidas de prefijos IP (basadas en CIDR).
Layouts recomendadosflat, hashed y complex_key_hashed ofrecen el mejor rendimiento de las consultas. Los layouts de caché no se recomiendan debido a su rendimiento potencialmente deficiente y a la dificultad de ajustar sus parámetros; consulta cache para más detalles.

Especificar el layout del diccionario

Si usa un diccionario con ClickHouse Cloud, utilice la opción de consulta DDL para crear sus diccionarios y cree el diccionario como el usuario default. Además, consulte la lista de orígenes de diccionario compatibles en la guía de compatibilidad de Cloud.
Puede configurar el layout de un diccionario con la cláusula LAYOUT (para DDL) o con el ajuste layout en las definiciones del archivo de configuración.
CREATE DICTIONARY (...)
...
LAYOUT(LAYOUT_TYPE(param value)) -- configuración del layout
...

Véase también CREATE DICTIONARY para consultar la sintaxis DDL completa. Los diccionarios cuyo layout no contiene la palabra complex-key* tienen una clave de tipo UInt64; los diccionarios complex-key* tienen una clave compuesta (compleja, con tipos arbitrarios). Ejemplo de clave numérica (la columna key_column es de tipo UInt64):
CREATE DICTIONARY dict_name (
    key_column UInt64,
    ...
)
PRIMARY KEY key_column

Ejemplo de clave compuesta (la clave tiene un elemento de tipo String):
CREATE DICTIONARY dict_name (
    country_code String,
    ...
)
PRIMARY KEY country_code

Mejorar el rendimiento de los diccionarios

Hay varias formas de mejorar el rendimiento de los diccionarios:
  • Llame a la función para trabajar con el diccionario después de GROUP BY.
  • Marque como inyectivos los atributos que se van a extraer. Un atributo se considera inyectivo si a claves distintas les corresponden valores de atributo distintos. Por lo tanto, cuando GROUP BY usa una función que obtiene un valor de atributo a partir de la clave, esta función se saca automáticamente de GROUP BY.
ClickHouse genera una excepción cuando se producen errores en los diccionarios. Algunos ejemplos de errores son:
  • No se pudo cargar el diccionario al que se intenta acceder.
  • Error al consultar un diccionario cached.
Puede ver la lista de diccionarios y sus estados en la tabla system.dictionaries.
Última modificación el 10 de junio de 2026