Ces paramètres sont disponibles dans system.settings et sont générés automatiquement à partir du code source.
max_bytes_before_external_group_by
Valeur par défaut dans Cloud : la moitié de la quantité de mémoire de chaque réplique.
Active ou désactive l'exécution des clauses GROUP BY en mémoire externe.
(Voir GROUP BY en mémoire externe)
Valeurs possibles :
- Volume maximal de RAM (en octets) pouvant être utilisé par une seule opération GROUP BY.
0—GROUP BYen mémoire externe désactivé.
max_bytes_before_external_join
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.4 | 0 | Nouveau paramètre permettant de contrôler le déversement sur disque automatique des hash joins sur disque. Une valeur non nulle active le déversement sur disque et définit le seuil en octets. |
S'il est défini sur une valeur non nulle et que join_algorithm vaut hash, parallel_hash, default ou auto, le hash join sera automatiquement converti en grace hash join pour permettre le déversement sur disque sur disque lorsque les données de droite dépassent ce nombre d'octets. Lorsqu'il est défini sur 0 (valeur par défaut), ce seuil absolu en octets est désactivé, mais un déversement sur disque automatique peut toujours se produire via max_bytes_ratio_before_external_join (qui vaut par défaut 0.5) ; définissez les deux sur 0 pour désactiver complètement le déversement sur disque automatique. Cela empêche l'optimisation de lecture read in order via join.
max_bytes_before_external_sort
Valeur par défaut dans Cloud : la moitié de la mémoire par réplique.
Active ou désactive l’exécution des clauses ORDER BY en mémoire externe. Voir Détails d’implémentation de ORDER BY
Si l’utilisation de la mémoire pendant l’opération ORDER BY dépasse ce seuil en octets, le mode de « tri externe » (écriture des données sur disque) est activé.
Valeurs possibles :
- Volume maximal de RAM (en octets) pouvant être utilisé par une seule opération ORDER BY. La valeur recommandée est la moitié de la mémoire système disponible
0—ORDER BYen mémoire externe désactivé.
max_bytes_before_remerge_sort
Dans le cas d’un ORDER BY avec LIMIT, lorsque l’utilisation de la mémoire dépasse le seuil spécifié, effectuez des étapes supplémentaires de fusion de blocs avant la fusion finale afin de ne conserver que les LIMIT premières lignes.
max_bytes_for_lazy_final
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.4 | 256000000 | Nouveau paramètre définissant le nombre maximal d’octets dans l’ensemble utilisé pour l’optimisation lazy FINAL |
Nombre maximal d’octets dans l’ensemble utilisé pour l’optimisation lazy FINAL. Au-delà de cette limite, le système revient à FINAL standard.
max_bytes_in_distinct
Nombre maximal d’octets de l’état (en octets non compressés) en mémoire, utilisé par une table de hachage avec DISTINCT.
max_bytes_in_join
La taille maximale, en octets, de la structure de données située du côté droit (généralement une table de hachage) utilisée lors de la jointure de tables.
Ce paramètre s’applique aux opérations SELECT … JOIN et au moteur de table Join.
Si une requête contient plusieurs jointures, ClickHouse vérifie ce paramètre pour chaque résultat intermédiaire. Lorsque la limite est atteinte, l’action dépend de la valeur choisie pour join_algorithm — consultez ce paramètre pour connaître le comportement propre à chaque algorithme (spill, repartitionnement, basculement ou throw/break selon join_overflow_mode).
Valeurs possibles :
- Entier positif.
- 0 — Le contrôle de la mémoire est désactivé.
max_bytes_in_set
Le nombre maximal d’octets (de données non compressées) qu’un ensemble dans la clause IN créé à partir d’une sous-requête peut utiliser.
max_bytes_ratio_before_external_group_by
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.1 | 0.5 | Le déversement automatique sur disque est activé par défaut. |
| 24.12 | 0 | Nouveau paramètre. |
La proportion de mémoire disponible pouvant être utilisée par GROUP BY. Une fois ce seuil atteint,
la mémoire externe est utilisée pour l’agrégation.
Par exemple, si cette valeur est définie sur 0.6, GROUP BY pourra utiliser 60 % de la mémoire disponible
(pour server/user/merges) au début de l’exécution ; ensuite, il
commencera à utiliser l’agrégation externe.
max_bytes_ratio_before_external_join
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.5 | 0.5 | Nouveau paramètre : ratio de mémoire disponible utilisé comme seuil de déversement sur disque pour les hash joins. Activé par défaut à `0.5`, à l'image de `max_bytes_ratio_before_external_group_by` et `max_bytes_ratio_before_external_sort`. Combiné avec la valeur absolue `max_bytes_before_external_join` (la plus petite des deux s'applique). |
Ratio de mémoire disponible autorisé pour JOIN. Une fois ce seuil atteint, le hash join est converti en grace hash join afin de déverser les données du côté droit sur disque.
Par exemple, si cette valeur est définie sur 0.6, JOIN autorise l'utilisation de 60% de la mémoire disponible (pour le serveur/l'utilisateur/les fusions) pour la table de hachage du côté droit au début de l'exécution ; au-delà, le déversement sur disque commence.
Si max_bytes_before_external_join et max_bytes_ratio_before_external_join sont tous deux définis, c'est le plus petit seuil obtenu qui est utilisé. Si le ratio vaut 0, seule la valeur absolue s'applique.
N'a d'effet que lorsque join_algorithm vaut hash, parallel_hash, default ou auto et qu'un chemin de données temporaire est configuré.
max_bytes_ratio_before_external_sort
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.1 | 0.5 | Activer par défaut le déversement sur disque automatique. |
| 24.12 | 0 | Nouveau paramètre. |
Rapport de la mémoire disponible pouvant être utilisé pour ORDER BY. Une fois cette limite atteinte, le tri externe est utilisé.
Par exemple, s'il est défini sur 0.6, ORDER BY pourra utiliser 60% de la mémoire disponible (pour server/user/merges) au début de l'exécution, puis il commencera à utiliser le tri externe.
Notez que max_bytes_before_external_sort reste pris en compte : le déversement sur disque n'a lieu que si le bloc de tri est plus grand que max_bytes_before_external_sort.
max_bytes_to_read
Le nombre maximal d’octets (de données non compressées) pouvant être lus à partir d’une table lors de l’exécution d’une requête. La restriction est vérifiée pour chaque fragment de données traité, s’applique uniquement à l’expression de table la plus imbriquée et, lors d’une lecture depuis un serveur distant, elle est vérifiée uniquement sur le serveur distant.
max_bytes_to_read_leaf
Le nombre maximal d’octets (de données non compressées) pouvant être lus à partir d’une table locale sur un nœud feuille lors de l’exécution d’une requête distribuée. Bien que les requêtes distribuées puissent envoyer plusieurs sous-requêtes à chaque shard (feuille), cette limite n’est vérifiée qu’à l’étape de lecture sur les nœuds feuille et est ignorée lors de l’étape de fusion des résultats sur le nœud racine.
Par exemple, un cluster se compose de 2 shards et chaque shard contient une table avec
100 octets de données. Une requête distribuée censée lire toutes les données
des deux tables avec le paramètre max_bytes_to_read=150 échouera, car le total
sera de 200 octets. Une requête avec max_bytes_to_read_leaf=150 réussira puisque les
nœuds feuille liront au maximum 100 octets.
La restriction est vérifiée pour chaque fragment de données traité.
max_bytes_to_sort
Le nombre maximal d’octets avant le tri. Si l’opération ORDER BY doit traiter
plus d’octets non compressés que la quantité spécifiée, le comportement sera
déterminé par sort_overflow_mode, qui est défini par défaut sur throw.
max_bytes_to_transfer
Le nombre maximal d’octets (données non compressées) pouvant être transmis à un serveur distant ou enregistrés dans une table temporaire lors de l’exécution de la section GLOBAL IN/JOIN.