Ces paramètres sont disponibles dans system.settings et sont générés automatiquement à partir du code source.
optimize_aggregators_of_group_by_keys
Élimine les agrégateurs min/max/any/anyLast des clés de GROUP BY dans la clause SELECT
optimize_append_index
Utilisez les contraintes pour ajouter une condition d’index. La valeur par défaut est false.
Valeurs possibles :
- true, false
optimize_arithmetic_operations_in_aggregate_functions
Extraire les opérations arithmétiques des fonctions d’agrégation
optimize_const_name_size
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.11 | 256 | Remplace les grandes constantes par un scalaire et utilise un hachage comme nom (la taille est estimée d'après la longueur du nom) |
Remplace les grandes constantes par un scalaire et utilise un hachage comme nom (la taille est estimée d'après la longueur du nom).
Valeurs possibles :
- entier positif - longueur maximale du nom,
- 0 — toujours,
- entier négatif - jamais.
optimize_count_from_files
Active ou désactive l’optimisation du comptage du nombre de lignes dans des fichiers de différents formats d’entrée. Elle s’applique aux fonctions de table/moteurs file/s3/url/hdfs/azureBlobStorage.
Valeurs possibles :
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_dictget_tuple_element
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.5 | 1 | Réécrit tupleElement(dictGet(..., tuple_of_attrs, ...), N) en un appel unique à dictGet sur un seul attribut. |
Réécrit tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) en dictGet('dict', 'b', key) afin d'éviter de récupérer des attributs de dictionnaire inutiles. Prend en charge l'accès positionnel (.1, .2, …) et nommé (.b), et s'applique également à dictGetOrDefault lorsque l'argument par défaut est un tuple constant ou un tuple(...) de constantes.
optimize_distinct_in_order
Active l’optimisation de DISTINCT si certaines colonnes de DISTINCT constituent un préfixe du tri. Par exemple, un préfixe de la clé de tri dans MergeTree ou de l’instruction ORDER BY
optimize_distributed_group_by_sharding_key
Optimise les requêtes GROUP BY sharding_key en évitant une agrégation coûteuse sur le serveur initiateur (ce qui réduit la consommation mémoire de la requête sur ce serveur).
Les types de requêtes suivants sont pris en charge (ainsi que toutes leurs combinaisons) :
SELECT DISTINCT [..., ]sharding_key[, ...] FROM distSELECT ... FROM dist GROUP BY sharding_key[, ...]SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY xSELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
Les types de requêtes suivants ne sont pas pris en charge (la prise en charge de certains d’entre eux pourra être ajoutée ultérieurement) :
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALSSELECT ... GROUP BY sharding_key[, ...] WITH ROLLUPSELECT ... GROUP BY sharding_key[, ...] WITH CUBESELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
Voir aussi :
optimize_dry_run_check_part
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.2 | 1 | Nouveau paramètre |
Lorsqu'il est activé, OPTIMIZE ... DRY RUN valide la partie fusionnée obtenue à l'aide de checkDataPart. Si cette vérification échoue, une exception est levée.
optimize_empty_string_comparisons
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.10 | 1 | Nouveau paramètre. |
Convertit des expressions telles que col = '' ou '' = col en empty(col), et col != '' ou '' != col en notEmpty(col), uniquement lorsque col est de type String ou FixedString.
optimize_extract_common_expressions
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.1 | 1 | Optimise les expressions WHERE, PREWHERE, ON, HAVING et QUALIFY en extrayant les expressions communes de disjonctions de conjonctions. |
| 24.12 | 0 | Introduit un paramètre pour optimiser les expressions WHERE, PREWHERE, ON, HAVING et QUALIFY en extrayant les expressions communes de disjonctions de conjonctions. |
Permet d'extraire des expressions communes de disjonctions dans les expressions WHERE, PREWHERE, ON, HAVING et QUALIFY. Une expression logique comme (A AND B) OR (A AND C) peut être réécrite en A AND (B OR C), ce qui peut aider à utiliser :
- les indices dans des expressions de filtrage simples
- l'optimisation des CROSS JOIN en INNER JOIN
optimize_functions_to_subcolumns
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 24.8 | 1 | Paramètre activé par défaut |
Active ou désactive l’optimisation qui consiste à transformer certaines fonctions en lecture de sous-colonnes. Cela réduit la quantité de données à lire.
Ces fonctions peuvent être transformées :
- length pour lire la sous-colonne size0.
- empty pour lire la sous-colonne size0.
- notEmpty pour lire la sous-colonne size0.
- isNull pour lire la sous-colonne null.
- isNotNull pour lire la sous-colonne null.
- count pour lire la sous-colonne null.
- mapKeys pour lire la sous-colonne keys.
- mapValues pour lire la sous-colonne values.
Valeurs possibles :
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_inverse_dictionary_lookup
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.12 | 1 | Nouveau paramètre |
Évite les recherches inverses répétées dans le dictionnaire en effectuant des recherches plus rapides dans un ensemble précalculé de valeurs possibles pour la clé.
optimize_multiif_to_if
Remplace « multiIf » comportant une seule condition par « if ».
optimize_normalize_count_variants
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 21.3 | 1 | Réécrit par défaut en count() les fonctions d’agrégation sémantiquement équivalentes à count() |
Réécrit par défaut en count() les fonctions d’agrégation sémantiquement équivalentes à count().
optimize_on_insert
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 21.1 | 1 | Active par défaut l’optimisation des données à l’INSERT pour une meilleure expérience utilisateur |
Active ou désactive la transformation des données avant l’insertion, comme si une fusion avait été effectuée sur ce bloc (selon le moteur de table).
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
Exemple
Différence entre l’état activé et désactivé :
Requête :
SET optimize_on_insert = 1;
CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;
INSERT INTO test1 SELECT number % 2 FROM numbers(5);
SELECT * FROM test1;
SET optimize_on_insert = 0;
CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;
INSERT INTO test2 SELECT number % 2 FROM numbers(5);
SELECT * FROM test2;Résultat :
┌─FirstTable─┐
│ 0 │
│ 1 │
└────────────┘
┌─SecondTable─┐
│ 0 │
│ 0 │
│ 0 │
│ 1 │
│ 1 │
└─────────────┘Notez que ce paramètre influence le comportement des vues matérialisées.
optimize_prewhere_after_pushdown
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.6 | 0 | Nouveau paramètre qui active un second passage de promotion de PREWHERE afin de fusionner dans la chaîne PREWHERE existante les filtres ajoutés au-dessus d’une étape de lecture MergeTree par des optimisations ultérieures (pushdown de prédicats à travers JOIN, réécritures de projection). |
Exécute un second passage de promotion de PREWHERE après que des optimisations ultérieures du plan de requête ont pu
ajouter des filtres supplémentaires au-dessus d’une étape de lecture MergeTree (par ex. pushdown de prédicats via
JOIN, réécritures de projection). Lorsqu’un PREWHERE existe déjà, le nouveau
filtre y est fusionné avec AND au lieu de rester une étape de filtrage distincte.
optimize_qbit_distance_function_reads
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 25.10 | 1 | Nouveau paramètre |
Remplace les fonctions de distance appliquées au type de données QBit par des fonctions équivalentes qui ne lisent dans le stockage que les colonnes nécessaires au calcul.
optimize_read_in_order
Active l’optimisation ORDER BY dans les requêtes SELECT lors de la lecture des données à partir des tables MergeTree.
Valeurs possibles :
- 0 — l’optimisation
ORDER BYest désactivée. - 1 — l’optimisation
ORDER BYest activée.
Voir aussi
optimize_respect_aliases
Si ce paramètre est défini sur true, les alias seront pris en compte dans WHERE/GROUP BY/ORDER BY, ce qui facilitera l’élagage des partitions, l’utilisation des index secondaires, ainsi que optimize_aggregation_in_order, optimize_read_in_order et optimize_trivial_count
optimize_sorting_by_input_stream_properties
Optimise le tri à l’aide des propriétés de tri du flux d’entrée
optimize_substitute_columns
Utilisez les contraintes pour remplacer des colonnes. La valeur par défaut est false.
Valeurs possibles :
- true, false
optimize_syntax_fuse_functions
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.3 | 1 | L’optimisation est prête pour la production |
Permet de fusionner des fonctions d’agrégation ayant un argument identique. Réécrit une requête contenant au moins deux fonctions d’agrégation parmi sum, count ou avg, ayant un argument identique, en sumCount.
Valeurs possibles :
- 0 — Les fonctions ayant un argument identique ne sont pas fusionnées.
- 1 — Les fonctions ayant un argument identique sont fusionnées.
Exemple
Requête :
CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSVRaw;Résultat :
SELECT
sum(__table1.a) AS `sum(a)`,
tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1optimize_throw_if_noop
Active ou désactive le déclenchement d'une exception si une requête OPTIMIZE n'a effectué aucune fusion.
Par défaut, OPTIMIZE se termine avec succès même s'il n'a rien fait. Ce paramètre vous permet de distinguer ces situations et d'obtenir la raison dans le message d'exception.
Valeurs possibles :
- 1 — Le déclenchement d'une exception est activé.
- 0 — Le déclenchement d'une exception est désactivé.
optimize_time_filter_with_preimage
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 24.2 | 1 | Optimise les prédicats Date et DateTime en transformant les fonctions en comparaisons équivalentes sans conversion (p. ex. toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31') |
Optimise les prédicats Date et DateTime en transformant les fonctions en comparaisons équivalentes sans conversion (p. ex. toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_truncate_order_by_after_group_by_keys
Historique des versions
| Version | Valeur par défaut | Commentaire |
|---|---|---|
| 26.4 | 1 | Supprime les éléments ORDER BY en fin de clause une fois que toutes les clés GROUP BY sont couvertes par le préfixe ORDER BY. |
Supprime les éléments ORDER BY en fin de clause une fois que toutes les clés GROUP BY sont couvertes par le préfixe ORDER BY.
optimize_uniq_to_count
Réécrit uniq et ses variantes (sauf uniqUpTo) en count si la sous-requête contient distinct ou une clause GROUP BY.
optimize_using_constraints
Utilisez les contraintes pour optimiser les requêtes. La valeur par défaut est false.
Valeurs possibles :
- true, false