Passer au contenu principal

Types de layout de dictionnaire

Il existe plusieurs façons de stocker les dictionnaires en mémoire, chacune avec ses propres compromis en termes d’utilisation du CPU et de la RAM.
Layouts recommandésflat, hashed et complex_key_hashed offrent les meilleures performances de requête. Les layouts de cache ne sont pas recommandés en raison de performances potentiellement médiocres et de la difficulté à régler les paramètres — voir cache pour plus de détails.

Spécifier le layout du dictionnaire

Si vous utilisez un dictionary avec ClickHouse Cloud, utilisez l’option DDL query pour créer vos dictionaries, et créez votre dictionary en tant qu’utilisateur default. Vérifiez également la liste des dictionary sources prises en charge dans le guide de compatibilité Cloud.
Vous pouvez configurer le layout d’un dictionnaire avec la clause LAYOUT (pour le DDL) ou le paramètre layout dans les définitions du fichier de configuration.

Voir aussi CREATE DICTIONARY pour la syntaxe DDL complète. Les dictionnaires dont le layout ne contient pas complex-key* ont une clé de type UInt64 ; les dictionnaires complex-key* ont une clé composite (complexe, avec des types arbitraires). Exemple de clé numérique (la colonne key_column est de type UInt64) :

Exemple de clé composite (la clé comporte un élément de type String) :

Améliorer les performances des dictionnaires

Il existe plusieurs façons d’améliorer les performances des dictionnaires :
  • Appeler la fonction de manipulation du dictionnaire après GROUP BY.
  • Marquer comme injectifs les attributs à extraire. Un attribut est dit injectif si des clés différentes correspondent à des valeurs d’attribut différentes. Ainsi, lorsque GROUP BY utilise une fonction qui récupère une valeur d’attribut à partir de la clé, cette fonction est automatiquement retirée de GROUP BY.
ClickHouse génère une exception en cas d’erreur liée aux dictionnaires. Voici quelques exemples d’erreurs :
  • Le dictionnaire auquel l’accès est demandé n’a pas pu être chargé.
  • Erreur lors d’une requête sur un dictionnaire cached.
Vous pouvez afficher la liste des dictionnaires et leur statut dans la table system.dictionaries.
Dernière modification le 1 juillet 2026