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.Les layouts basés sur un cache ne permettent pas un enrichissement fiable au moment de l’insertion : leurs entrées mises en cache sont propres à chaque serveur et sont perdues lorsqu’un serveur redémarre ou est remplacé. L’autoscaling et le remplacement géré des nœuds dans ClickHouse Cloud rendent ce cas de figure plus probable. Privilégiez plutôt un layout entièrement chargé ; voir Dictionnaires de cache dans les chemins d’ingestion.
Spécifier le layout du dictionnaire
Vous pouvez configurer le layout d’un dictionnaire avec la clauseLAYOUT (pour le DDL) ou le paramètre layout dans les définitions du fichier de configuration.
- DDL
- 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) :
- DDL
- Fichier de configuration
Exemple de clé composite (la clé comporte un élément de type String) :
- DDL
- Fichier de configuration
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 BYutilise une fonction qui récupère une valeur d’attribut à partir de la clé, cette fonction est automatiquement retirée deGROUP BY.
- Le dictionnaire auquel l’accès est demandé n’a pas pu être chargé.
- Erreur lors d’une requête sur un dictionnaire
cached.