Types de layout de dictionnaire
| Layout | Description |
|---|---|
| flat | Stocke les données dans des tableaux simples indexés par clé. C’est le layout le plus rapide, mais les clés doivent être de type UInt64 et rester inférieures à max_array_size. |
| hashed | Stocke les données dans une table de hachage. Aucune limite sur la taille des clés, et prend en charge n’importe quel nombre d’éléments. |
| sparse_hashed | Comme hashed, mais avec un compromis en faveur d’une utilisation mémoire plus faible au prix du CPU. |
| complex_key_hashed | Comme hashed, pour les clés composites. |
| complex_key_sparse_hashed | Comme sparse_hashed, pour les clés composites. |
| hashed_array | Attributs stockés dans des tableaux, avec une table de hachage qui associe les clés aux indices des tableaux. Économe en mémoire lorsqu’il y a de nombreux attributs. |
| complex_key_hashed_array | Comme hashed_array, pour les clés composites. |
| range_hashed | Table de hachage avec plages ordonnées. Prend en charge les recherches par clé + plage de dates/heures. |
| complex_key_range_hashed | Comme range_hashed, pour les clés composites. |
| cache | Cache en mémoire de taille fixe. Seules les clés fréquemment consultées sont stockées. |
| complex_key_cache | Comme cache, pour les clés composites. |
| ssd_cache | Comme cache, mais stocke les données sur SSD avec un index en mémoire. |
| complex_key_ssd_cache | Comme ssd_cache, pour les clés composites. |
| direct | Aucun stockage en mémoire — interroge directement la source pour chaque requête. |
| complex_key_direct | Comme direct, pour les clés composites. |
| ip_trie | Structure en trie pour des recherches rapides de préfixes IP (basées sur CIDR). |
Spécifier le layout du dictionnaire
LAYOUT (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
- 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.