add_http_cors_header
additional_result_filter
SELECT.
Ce paramètre ne s’applique à aucune sous-requête.
Exemple
additional_table_filters
aggregate_function_input_format
state— Chaîne binaire contenant l’état sérialisé (par défaut). Il s’agit du comportement par défaut, dans lequel les valeurs AggregateFunction sont attendues sous forme de données binaires.value— Le format attend une seule valeur de l’argument de la fonction d’agrégation ou, dans le cas de plusieurs arguments, un tuple de ces valeurs. Elles seront désérialisées à l’aide du IDataType ou du DataTypeTuple correspondant, puis agrégées pour former l’état.array— Le format attend un Array de valeurs, comme décrit dans l’optionvalueci-dessus. Tous les éléments du tableau seront agrégés pour former l’état.
aggregate_function_input_format = 'value' :
aggregate_function_input_format = 'array' :
value et array sont plus lents que le format state par défaut, car ils nécessitent la création et l’agrégation de valeurs lors de l’insertion.
aggregate_functions_null_for_empty
- 0 — Désactivé.
- 1 — Activé.
aggregate_functions_null_for_empty = 0, on obtiendrait :
aggregate_functions_null_for_empty = 1, le résultat serait :
aggregation_in_order_max_block_bytes
aggregation_memory_efficient_merge_threads
ai_function_credentials
provider, endpoint, model, api_key facultative, etc.). Lorsqu’elle est vide, une exception est levée.
ai_function_embedding_max_batch_size
aiEmbed. Les textes sont regroupés en lots de cette taille afin de réduire la surcharge liée aux appels à l’API. Par exemple, 500 textes uniques avec une taille de lot de 100 donnent lieu à 5 requêtes HTTP.
ai_function_max_api_calls_per_query
ai_function_max_input_tokens_per_query
usage dans leur réponse (OpenAI, Anthropic, vLLM). Les fournisseurs qui n’indiquent pas l’usage des tokens (notamment HuggingFace TEI) font que le compteur reste à 0 — utilisez plutôt ai_function_max_api_calls_per_query pour plafonner ce type d’appels.
ai_function_max_output_tokens_per_query
usage dans leur réponse (OpenAI, Anthropic, vLLM). Elle ne s’applique pas aux fonctions d’embedding (notamment aiEmbed), qui ne produisent jamais de tokens de sortie.
ai_function_max_retries
ai_function_retry_initial_delay_ms.
ai_function_request_timeout_sec
ai_function_max_retries.
ai_function_retry_initial_delay_ms
ai_function_throw_on_error
ai_function_throw_on_quota_exceeded
ai_function_max_input_tokens_per_query, ai_function_max_output_tokens_per_query ou ai_function_max_api_calls_per_query) interrompt la requête en renvoyant une exception. Si false, les lignes restantes reçoivent la valeur par défaut du type de colonne (chaîne vide pour String).
allow_aggregate_partitions_independently
allow_archive_path_syntax
<archive> :: <file> si l’archive a l’extension appropriée.
allow_asynchronous_read_from_io_pool_for_merge_tree
allow_calculating_subcolumns_sizes_for_merge_tree_reading
allow_changing_replica_until_first_data_packet
receive_data_timeout) ; sinon, nous désactivons le changement de réplique après la première fois où nous avons enregistré un Progress.
allow_create_index_without_type
allow_custom_error_code_in_throwif
allow_ddl
allow_deprecated_database_ordinary
allow_deprecated_error_prone_window_functions
allow_deprecated_snowflake_conversion_functions
snowflakeToDateTime, snowflakeToDateTime64, dateTimeToSnowflake et dateTime64ToSnowflake sont obsolètes et désactivées par défaut.
Veuillez utiliser les fonctions snowflakeIDToDateTime, snowflakeIDToDateTime64, dateTimeToSnowflakeID et dateTime64ToSnowflakeID à la place.
Pour réactiver les fonctions obsolètes (par exemple pendant une période de transition), définissez ce paramètre sur true.
allow_deprecated_syntax_for_merge_tree
allow_distributed_ddl
allow_drop_detached
allow_dynamic_type_in_join_keys
allow_execute_multiif_columnar
allow_experimental_ai_functions
aiGenerateContent). Ces fonctions effectuent des appels HTTP externes vers des fournisseurs d’IA.
allow_experimental_analyzer
enable_analyzer
Autorise le nouvel analyseur de requêtes.
allow_experimental_cleanup_old_data_files_compaction
allow_experimental_codecs
allow_experimental_database_glue_catalog
allow_database_glue_catalog
Autoriser le moteur de base de données expérimental DataLakeCatalog avec catalog_type = ‘glue’
Valeur par défaut dans Cloud : 1.
allow_experimental_database_hms_catalog
allow_experimental_database_iceberg
allow_database_iceberg
Autorise l’utilisation du moteur de base de données expérimental DataLakeCatalog avec catalog_type = ‘iceberg’
Valeur par défaut dans Cloud : 1.
allow_experimental_database_materialized_postgresql
allow_experimental_database_paimon_rest_catalog
allow_experimental_database_unity_catalog
allow_database_unity_catalog
Autoriser le moteur de base de données expérimental DataLakeCatalog avec catalog_type = ‘unity’
Valeur par défaut dans Cloud : 1.
allow_experimental_delta_kernel_rs
allow_experimental_delta_lake_writes
allow_experimental_expire_snapshots
ALTER TABLE ... EXECUTE expire_snapshots.
allow_experimental_funnel_functions
allow_experimental_geo_types_in_iceberg
geometry et geography d’Iceberg en tant que type Geometry (Variant) de ClickHouse.
allow_experimental_hash_functions
allow_experimental_iceberg_compaction
allow_experimental_join_right_table_sorting
join_to_sort_minimum_perkey_rows et join_to_sort_maximum_table_rows sont remplies, la table de droite est réorganisée par clé afin d’améliorer les performances d’une jointure par hachage left ou inner.
allow_experimental_json_lazy_type_hints
allow_experimental_kafka_offsets_storage_in_keeper
allow_experimental_kusto_dialect
allow_experimental_materialized_postgresql_table
allow_experimental_nlp_functions
allow_experimental_nullable_tuple_type
enable_nullable_tuple_type
Autorise la création de colonnes Nullable Tuple dans les tables.
Ce paramètre ne détermine pas si les sous-colonnes de tuple extraites peuvent être Nullable (par exemple à partir de colonnes Dynamic, Variant, JSON ou Tuple).
Utilisez allow_nullable_tuple_in_extracted_subcolumns pour définir si les sous-colonnes de tuple extraites peuvent être Nullable.
allow_experimental_object_storage_queue_hive_partitioning
allow_experimental_paimon_storage_engine
allow_experimental_parallel_reading_from_replicas
enable_parallel_replicas
Utilise jusqu’à max_parallel_replicas répliques de chaque shard pour exécuter les requêtes SELECT. La lecture est parallélisée et coordonnée dynamiquement. 0 - désactivé, 1 - activé, avec désactivation silencieuse en cas d’échec, 2 - activé, avec levée d’une exception en cas d’échec
allow_experimental_polyglot_dialect
allow_experimental_prql_dialect
allow_experimental_text_index_lazy_apply
allow_experimental_time_series_aggregate_functions
allow_experimental_ts_to_grid_aggregate_function
Fonctions d’agrégation expérimentales timeSeries* pour le rééchantillonnage de séries temporelles de type Prometheus, ainsi que pour le calcul du taux et du delta.
allow_experimental_time_series_table
- 0 — le moteur de table TimeSeries est désactivé.
- 1 — le moteur de table TimeSeries est activé.
allow_experimental_unique_key
UNIQUE KEY sur les moteurs de la famille MergeTree.
allow_experimental_window_view
allow_experimental_ytsaurus_dictionary_source
allow_experimental_ytsaurus_table_engine
allow_experimental_ytsaurus_table_function
allow_fuzz_query_functions
fuzzQuery, qui applique des mutations aléatoires de l’AST à une chaîne de requête.
allow_general_join_planning
allow_get_client_http_header
getClientHTTPHeader, qui permet d’obtenir la valeur d’un en-tête de la requête HTTP en cours. Elle n’est pas activée par défaut pour des raisons de sécurité, car certains en-têtes, comme Cookie, peuvent contenir des informations sensibles. Notez que les en-têtes X-ClickHouse-* et Authentication sont toujours restreints et ne peuvent pas être obtenus avec cette fonction.
allow_hyperscan
allow_iceberg_remove_orphan_files
allow_insert_into_iceberg
allow_experimental_insert_into_iceberg
Autorise l’exécution de requêtes insert dans Iceberg.
allow_introspection_functions
- 1 — Fonctions d’introspection activées.
- 0 — Fonctions d’introspection désactivées.
- Sampling Query Profiler
- Table système trace_log
allow_key_condition_coalesce_rewrite
WHERE/PREWHERE qui utilisent coalesce ou ifNull. Sans ce paramètre, ces prédicats sont opaques pour l’analyse des index et ne permettent pas d’élagage, de sorte que des granules qui ne peuvent pas correspondre sont tout de même lus. Cela n’affecte que les granules lus ; les résultats de la requête restent inchangés, car les lignes sont toujours filtrées par le prédicat d’origine.
Deux formes de prédicats sont réécrites avant l’analyse des index :
- Une comparaison avec
coalesce/ifNull, telle quecoalesce(a, b) = 5, devient une disjonction afin qu’un index sur chaque argument puisse élaguer :a = 5 OR (a IS NULL AND b = 5), avec extension au cas de plusieurs arguments. - Un
coalesce/ifNullavec une constante par défaut falsy (zéro), utilisé directement comme condition, tel queifNull(a = 5, 0)oucoalesce(a = 5, 0), est ramené à son prédicat internea = 5. De tels wrappers ramènent le résultat à trois valeurs du prédicat interne à un booléen explicite (en faisant correspondreNULLàfalse).
allow_limit_by_partitions_independently
LIMIT BY pour chaque partition dans des threads distincts lorsque l’expression de partition est une fonction déterministe des colonnes de LIMIT BY.
allow_materialized_view_with_bad_select
allow_named_collection_override_by_default
allow_non_metadata_alters
allow_nonconst_timezone_arguments
allow_nondeterministic_mutations
dictGet.
Comme, par exemple, les dictionnaires peuvent ne pas être synchronisés entre les nœuds, les mutations qui en extraient des valeurs sont interdites par défaut sur les tables répliquées. L’activation de ce paramètre autorise ce comportement ; il incombe alors à l’utilisateur de veiller à ce que les données utilisées soient synchronisées sur l’ensemble des nœuds.
Exemple
allow_nondeterministic_optimize_skip_unused_shards
rand ou dictGet, ce dernier présentant certaines limitations lors des mises à jour) dans la clé de sharding.
Valeurs possibles :
- 0 — Interdit.
- 1 — Autorisé.
allow_nullable_tuple_in_extracted_subcolumns
Tuple(...) peuvent être typées comme Nullable(Tuple(...)).
false: renvoieTuple(...)et utilise les valeurs de tuple par défaut pour les lignes où la sous-colonne est absente.true: renvoieNullable(Tuple(...))et utiliseNULLpour les lignes où la sous-colonne est absente.
Nullable(Tuple(...)) peuvent être créées dans des tables ; cela est contrôlé par enable_nullable_tuple_type.
ClickHouse utilise la valeur de ce paramètre chargée au démarrage du serveur.
Les modifications effectuées avec SET ou SETTINGS au niveau de la requête ne modifient pas le comportement des sous-colonnes extraites.
Pour modifier le comportement des sous-colonnes extraites, mettez à jour allow_nullable_tuple_in_extracted_subcolumns dans la configuration du profil de démarrage (par exemple, users.xml) et redémarrez le serveur.
allow_prefetched_read_pool_for_local_filesystem
allow_prefetched_read_pool_for_remote_filesystem
allow_push_predicate_ast_for_distributed_subqueries
allow_push_predicate_when_subquery_contains_with
allow_rank_dense_rank_arguments
RANK et DENSE_RANK afin d’assurer la rétrocompatibilité.
Selon la norme SQL, RANK et DENSE_RANK ne prennent aucun argument : elles classent les lignes uniquement en fonction de la fenêtre OVER (ORDER BY ...). Dans les versions de ClickHouse antérieures à la 26.5, des requêtes comme RANK(x) OVER (...) acceptaient silencieusement l’argument et l’ignoraient, ce qui prêtait à confusion (la présence visible de l’argument laissait penser qu’il influençait le classement, alors que ce n’était pas le cas).
Lorsque ce paramètre est défini sur false (valeur par défaut), RANK et DENSE_RANK rejettent tout argument et lèvent NUMBER_OF_ARGUMENTS_DOESNT_MATCH. Lorsqu’il est défini sur true, le comportement permissif legacy est rétabli : les arguments sont silencieusement ignorés, comme avant la version 26.5.
allow_reorder_prewhere_conditions
allow_settings_after_format_in_insert
SETTINGS après FORMAT dans les requêtes INSERT est autorisé ou non. Il n’est pas recommandé d’utiliser ce paramètre, car une partie de SETTINGS peut être interprétée comme des valeurs.
Exemple :
allow_settings_after_format_in_insert est activé :
- 0 — Interdire.
- 1 — Autoriser.
Utilisez ce paramètre uniquement pour assurer la rétrocompatibilité si vos cas d’usage dépendent de l’ancienne syntaxe.
allow_simdjson
allow_special_serialization_kinds_in_output_formats
allow_statistics
allow_experimental_statistics
Permet de définir des colonnes avec des statistiques et de gérer les statistiques.
allow_statistics_optimize
allow_statistic_optimize
Permet d’utiliser des statistiques pour optimiser les requêtes
allow_suspicious_codecs
allow_suspicious_fixed_string_types
allow_suspicious_indices
allow_suspicious_low_cardinality_types
FixedString(8_bytes_or_less).
Pour des valeurs fixes de petite taille, l’utilisation de LowCardinality est généralement inefficace, car ClickHouse stocke un index numérique pour chaque ligne. Par conséquent :
- L’utilisation de l’espace disque peut augmenter.
- La consommation de RAM peut être plus élevée, selon la taille du dictionnaire.
- Certaines fonctions peuvent être plus lentes en raison d’opérations supplémentaires d’encodage.
- 1 — L’utilisation de
LowCardinalityn’est pas restreinte. - 0 — L’utilisation de
LowCardinalityest restreinte.
allow_suspicious_primary_key
PRIMARY KEY/ORDER BY jugés suspects pour MergeTree (c.-à-d. SimpleAggregateFunction).
allow_suspicious_ttl_expressions
allow_suspicious_types_in_group_by
allow_suspicious_types_in_order_by
allow_suspicious_variant_types
allow_unrestricted_reads_from_keeper
alter_move_to_space_execute_async
alter_partition_verbose_result
- 0 — désactiver le mode verbeux.
- 1 — activer le mode verbeux.
alter_sync
replication_alter_partitions_sync
Permet de définir le comportement d’attente pour les actions à exécuter sur les répliques par les requêtes ALTER, OPTIMIZE ou TRUNCATE.
Valeurs possibles :
0— Ne pas attendre.1— Attendre l’exécution locale.2— Attendre toutes les répliques.3- Attendre uniquement les répliques actives.
0.
alter_sync s’applique uniquement aux tables Replicated et SharedMergeTree ; ce paramètre est sans effet sur les tables non Replicated ou Shared.alter_update_mode
ALTER contenant des commandes UPDATE.
Valeurs possibles :
heavy- exécute une mutation classique.lightweight- exécute une mise à jour légère si possible, sinon exécute une mutation classique.lightweight_force- exécute une mise à jour légère si possible, sinon lève une exception.
analyze_index_with_space_filling_curves
ORDER BY mortonEncode(x, y) ou ORDER BY hilbertEncode(x, y), et si la requête comporte des conditions sur ses arguments, par exemple x >= 10 AND x <= 20 AND y >= 20 AND y <= 30, la courbe de remplissage de l’espace est utilisée pour l’analyse de l’index.
analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested
Nested des identifiants composés. Il s’agit d’un paramètre de compatibilité, car il modifie le résultat de la requête. Lorsqu’il est désactivé, SELECT a.b.c FROM table ARRAY JOIN a ne fonctionne pas, et SELECT a FROM table n’inclut pas la colonne a.b.c dans le résultat Nested a.
analyzer_compatibility_join_using_top_level_identifier
SELECT a + 1 AS b FROM t1 JOIN t2 USING (b), la jointure sera effectuée sur t1.a + 1 = t2.b, plutôt que sur t1.b = t2.b).
analyzer_compatibility_prefer_alias_over_subcolumn
b.id peut faire référence soit à la colonne id d’une table avec l’alias b, soit à une sous-colonne Tuple b.id d’une autre colonne, privilégiez l’interprétation avec préfixe d’alias (colonne id de b). Par défaut, le nouvel analyseur privilégie la sous-colonne. Activez ce paramètre pour retrouver la résolution de l’ancien analyseur.
analyzer_inline_views
any_join_distinct_right_table_keys
ANY INNER|LEFT JOIN.
Utilisez ce paramètre uniquement pour la rétrocompatibilité si vos cas d’usage dépendent du comportement legacy de
JOIN.- Les résultats des opérations
t1 ANY LEFT JOIN t2ett2 ANY RIGHT JOIN t1ne sont pas identiques, car ClickHouse utilise une logique de correspondance des clés de table de gauche à droite, de plusieurs vers une. - Les résultats des opérations
ANY INNER JOINcontiennent toutes les lignes de la table de gauche, comme dans les opérationsSEMI LEFT JOIN.
- Les résultats des opérations
t1 ANY LEFT JOIN t2ett2 ANY RIGHT JOIN t1sont identiques, car ClickHouse utilise une logique qui assure une correspondance des clés de un vers plusieurs dans les opérationsANY RIGHT JOIN. - Les résultats des opérations
ANY INNER JOINcontiennent une ligne par clé provenant des tables de gauche et de droite.
- 0 — Le comportement legacy est désactivé.
- 1 — Le comportement legacy est activé.
apply_deleted_mask
apply_mutations_on_fly
apply_patch_parts
apply_patch_parts_join_cache_buckets
apply_prewhere_after_final
apply_row_policy_after_final
- 0 — La politique de ligne et PREWHERE sont appliqués avant FINAL (par défaut).
- 1 — La politique de ligne et PREWHERE sont appliqués après FINAL.
apply_settings_from_server
users.xml ou via des requêtes comme ALTER USER), et non via le client (arguments de ligne de commande du client, requête SET ou section SETTINGS d’une requête SELECT). Via le client, il peut être défini sur false, mais pas sur true (car le serveur n’enverra pas les paramètres si le profil utilisateur contient apply_settings_from_server = false).
Notez qu’au départ (24.12), il existait un paramètre serveur (send_settings_to_client), mais il a ensuite été remplacé par ce paramètre client, pour une meilleure ergonomie.
archive_adaptive_buffer_max_size_bytes
arrow_flight_request_descriptor_type
- ‘path’ — Utilise FlightDescriptor::Path (par défaut, fonctionne avec la plupart des serveurs Arrow Flight)
- ‘command’ — Utilise FlightDescriptor::Command avec une requête SELECT (obligatoire pour Dremio)
ast_fuzzer_any_query
ast_fuzzer_runs) ne soumet au fuzzing que les requêtes en lecture seule (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). Lorsque la valeur est true, tous les types de requêtes, y compris DDL et INSERT, sont soumis au fuzzing.
ast_fuzzer_runs
- 0 : désactivé (par défaut).
- Une valeur comprise entre 0 et 1 (exclusive) : probabilité d’exécuter une seule requête fuzzée.
- Une valeur >= 1 : nombre de requêtes fuzzées à exécuter par requête normale.
asterisk_include_alias_columns
SELECT *).
Valeurs possibles :
- 0 - désactivé
- 1 - activé
asterisk_include_materialized_columns
SELECT *).
Valeurs possibles :
- 0 - désactivé
- 1 - activé
asterisk_include_virtual_columns
SELECT *).
Valeurs possibles :
- 0 - désactivé
- 1 - activé
async_insert
async_insert_busy_timeout_decrease_rate
async_insert_busy_timeout_increase_rate
async_insert_busy_timeout_max_ms
async_insert_busy_timeout_ms
Temps d’attente maximal avant de vider les données collectées pour chaque requête à partir de l’arrivée des premières données.
Valeur par défaut dans Cloud : 1000 (1s).
async_insert_busy_timeout_min_ms
async_insert_deduplicate
async_insert_max_data_size
104857600 (100 MiB).
async_insert_max_query_number
async_insert_deduplicate vaut 1.
async_insert_poll_timeout_ms
async_insert_use_adaptive_busy_timeout
async_query_sending_for_remote
async_socket_for_remote
automatic_parallel_replicas_min_bytes_per_replica
automatic_parallel_replicas_mode=1). 0 signifie qu’il n’y a pas de seuil.
Le nombre total d’octets à lire est estimé à partir des statistiques collectées.
automatic_parallel_replicas_mode
enable_analyzer = 1, enable_parallel_replicas != 0, parallel_replicas_local_plan = 1, ainsi que la définition de cluster_for_parallel_replicas.
0 - désactivé, 1 - activé, 2 - seule la collecte de statistiques est activée (le basculement vers une exécution avec des répliques parallèles est désactivé).
azure_allow_parallel_part_upload
azure_check_objects_after_upload
azure_connect_timeout_ms
azure_create_new_file_on_insert
azure_ignore_file_doesnt_exist
- 1 —
SELECTrenvoie un résultat vide. - 0 —
SELECTlève une exception.
azure_list_object_keys_size
azure_max_blocks_in_multipart_upload
azure_max_get_burst
azure_max_get_rps
azure_max_get_rps
azure_max_inflight_parts_for_one_file
azure_max_put_burst
azure_max_put_rps
azure_max_put_rps
azure_max_redirects
azure_max_single_part_copy_size
azure_max_single_part_upload_size
azure_max_single_read_retries
azure_max_unexpected_write_error_retries
azure_max_upload_part_size
azure_min_upload_part_size
azure_request_timeout_ms
azure_sdk_max_retries
azure_sdk_retry_initial_backoff_ms
azure_sdk_retry_max_backoff_ms
azure_skip_empty_files
- 0 —
SELECTlève une exception si le fichier vide n’est pas compatible avec le format demandé. - 1 —
SELECTrenvoie un résultat vide pour un fichier vide.
azure_strict_upload_part_size
azure_throw_on_zero_files_match
- 1 —
SELECTlève une exception. - 0 —
SELECTrenvoie un résultat vide.
azure_truncate_on_insert
azure_upload_part_size_multiply_factor
azure_upload_part_size_multiply_parts_count_threshold
azure_use_adaptive_timeouts
true, les deux premières tentatives de toutes les requêtes Azure utilisent des délais d’expiration d’envoi et de réception courts.
Lorsque cette option est définie sur false, toutes les tentatives utilisent des délais d’expiration identiques.
backup_restore_batch_size_for_keeper_multi
backup_restore_batch_size_for_keeper_multiread
backup_restore_failure_after_host_disconnected_for_seconds
backup_restore_finish_timeout_after_error_sec
backup_restore_keeper_fault_injection_probability
backup_restore_keeper_fault_injection_seed
backup_restore_keeper_max_retries
backup_restore_keeper_max_retries_while_handling_error
backup_restore_keeper_max_retries_while_initializing
backup_restore_keeper_retry_initial_backoff_ms
backup_restore_keeper_retry_max_backoff_ms
60000.
backup_restore_keeper_value_max_size
backup_restore_s3_retry_attempts
backup_restore_s3_retry_initial_backoff_ms
backup_restore_s3_retry_max_backoff_ms
backup_restore_s3_retry_jitter_factor
backup_restore_s3_retry_max_backoff_ms. Doit être compris dans l’intervalle [0.0, 1.0]
backup_restore_s3_retry_max_backoff_ms
backup_slow_all_threads_after_retryable_s3_error
true, tous les threads exécutant des requêtes S3 vers le même endpoint de sauvegarde sont ralentis
dès qu’une seule requête S3 rencontre une erreur S3 réessayable, telle que ‘Slow Down’.
Lorsqu’il est défini sur false, chaque thread gère le backoff des requêtes S3 indépendamment des autres.
cache_warmer_threads
calculate_text_stack_trace
cancel_http_readonly_queries_on_client_close
1.
cast_ipv4_ipv6_default_on_conversion_error
cast_keep_nullable
Nullable dans les opérations CAST.
Lorsque ce paramètre est activé et que l’argument de la fonction CAST est Nullable, le résultat est lui aussi converti en type Nullable. Lorsque ce paramètre est désactivé, le résultat a toujours exactement le type de destination.
Valeurs possibles :
- 0 — Le résultat de
CASTa exactement le type de destination spécifié. - 1 — Si le type de l’argument est
Nullable, le résultat deCASTest converti enNullable(DestinationDataType).
Nullable au type de données de destination :
- CAST fonctio
cast_string_to_date_time_mode
-
'best_effort'— Active l’analyse étendue. ClickHouse peut analyser le format de baseYYYY-MM-DD HH:MM:SSainsi que tous les formats de date et d’heure ISO 8601. Par exemple,'2018-06-08T01:02:03.000Z'. -
'best_effort_us'— Similaire àbest_effort(voir la différence dans parseDateTimeBestEffortUS -
'basic'— Utilise le parseur de base. ClickHouse peut analyser uniquement le format de baseYYYY-MM-DD HH:MM:SSouYYYY-MM-DD. Par exemple,2019-08-20 10:18:56ou2019-08-20.
cast_string_to_dynamic_use_inference
cast_string_to_variant_use_inference
check_named_collection_dependencies
check_query_single_value_result
MergeTree .
Valeurs possibles :
- 0 — la requête affiche un statut de vérification pour chaque partie de données d’une table.
- 1 — la requête affiche le statut général de vérification de la table.
check_referential_table_dependencies
check_table_dependencies
checksum_on_read
cloud_mode
1.
cloud_mode_database_engine
2.
cloud_mode_engine
- 0 - tout autoriser
- 1 - réécrire les DDLs pour utiliser *ReplicatedMergeTree
- 2 - réécrire les DDLs pour utiliser SharedMergeTree
- 3 - réécrire les DDLs pour utiliser SharedMergeTree, sauf lorsqu’un disk distant est explicitement spécifié
- 4 - identique à 3, mais utilise en plus Alias au lieu de Distributed (la table Alias pointera vers la table de destination de la table Distributed et utilisera donc la table locale correspondante)
2.
cluster_for_parallel_replicas
default.
cluster_function_process_archive_on_multiple_nodes
true, les performances du traitement des archives dans les fonctions de cluster sont améliorées. Elle doit être définie sur false pour garantir la compatibilité et éviter les erreurs lors de la mise à niveau vers la version 25.7 ou ultérieure si vous utilisez des fonctions de cluster avec des archives sur des versions antérieures.
cluster_table_function_buckets_batch_size
bucket. Le système accumule les données jusqu’à ce qu’au moins ce volume soit atteint. La taille réelle peut être légèrement supérieure afin de respecter les limites des données.
cluster_table_function_split_granularity
file— chaque tâche traite un fichier entier.bucket— des tâches sont créées pour chaque bloc de données interne au sein d’un fichier (par exemple, les groupes de lignes Parquet).
bucket) peut améliorer le parallélisme lorsque vous travaillez avec un petit nombre de gros fichiers.
Par exemple, si un fichier Parquet contient plusieurs groupes de lignes, l’activation de la granularité bucket permet de traiter chaque groupe indépendamment par différents workers.
collect_hash_table_stats_during_aggregation
collect_hash_table_stats_during_joins
compatibility
compatibility indique à ClickHouse d’utiliser les paramètres par défaut d’une version antérieure de ClickHouse, cette version étant fournie comme valeur du paramètre.
Si certains paramètres ont des valeurs autres que les valeurs par défaut, ces valeurs sont conservées (seuls les paramètres qui n’ont pas été modifiés sont affectés par le paramètre compatibility).
Ce paramètre prend comme valeur un numéro de version de ClickHouse sous forme de chaîne, par exemple 22.3 ou 22.8. Une valeur vide signifie que ce paramètre est désactivé.
Désactivé par défaut.
Dans ClickHouse Cloud, le paramètre de compatibilité par défaut au niveau du service doit être défini par le support ClickHouse Cloud. Veuillez ouvrir un ticket pour le faire configurer.
Toutefois, le paramètre
compatibility peut être redéfini au niveau de l’utilisateur, du rôle, du profil, de la query ou de la session à l’aide des mécanismes standard de configuration de ClickHouse, par exemple SET compatibility = '22.3' dans une session ou SETTINGS compatibility = '22.3' dans une query.compatibility_ignore_auto_increment_in_create_table
compatibility_ignore_collation_in_create_table
compatibility_s3_presigned_url_query_in_path
compile_aggregate_expressions
- 0 — L’agrégation s’effectue sans compilation JIT.
- 1 — L’agrégation s’effectue avec compilation JIT.
compile_expressions
compile_sort_description
connect_timeout
connect_timeout_with_failover_ms
connect_timeout_with_failover_secure_ms
connection_pool_max_wait_ms
- Entier positif.
- 0 — délai d’expiration infini.
connections_with_failover_max_tries
convert_query_to_cnf
true, une requête SELECT est convertie en forme normale conjonctive (CNF). Dans certains cas, la réécriture d’une requête en CNF peut s’exécuter plus rapidement (consultez cette issue GitHub pour plus d’explications).
Par exemple, notez que la requête SELECT suivante n’est pas modifiée (comportement par défaut) :
convert_query_to_cnf à true et voyons ce qui change :
WHERE est réécrite en FNC, mais le jeu de résultats reste identique - la logique booléenne est inchangée :
right, ce qui signifie que le plan décorrélé contiendra des RIGHT JOIN avec la sous-requête en entrée du côté droit.
Valeurs possibles :
left- Le processus de décorrélation produira des LEFT JOIN et la table d’entrée apparaîtra du côté gauche.right- Le processus de décorrélation produira des RIGHT JOIN et la table d’entrée apparaîtra du côté droit.
count_distinct_implementation
uniq* doit être utilisée pour effectuer l’opération COUNT(DISTINCT …).
Valeurs possibles :
count_distinct_optimization
count_matches_stop_at_empty_match
countMatches.
create_if_not_exists
IF NOT EXISTS pour l’instruction CREATE. Si ce paramètre ou IF NOT EXISTS est spécifié et qu’une table portant ce nom existe déjà, aucune exception n’est levée.
create_index_ignore_unique
create_replicated_merge_tree_fault_injection_probability
create_table_empty_primary_key_by_default
cross_join_min_bytes_to_compress
cross_join_min_rows_to_compress
cross_to_inner_join_rewrite
data_type_default_nullable
- 1 — Les types de données dans les définitions de colonnes sont
Nullablepar défaut. - 0 — Les types de données dans les définitions de colonnes ne sont pas
Nullablepar défaut.
database_atomic_wait_for_drop_and_detach_synchronously
SYNC à toutes les requêtes DROP et DETACH.
Valeurs possibles :
- 0 — Les requêtes seront exécutées avec un délai.
- 1 — Les requêtes seront exécutées sans délai.
database_datalake_require_metadata_access
database_replicated_allow_explicit_uuid
database_replicated_allow_heavy_create
database_replicated_allow_only_replicated_engine
1.
database_replicated_allow_replicated_engine_arguments
database_replicated_always_detach_permanently
database_replicated_enforce_synchronous_settings
database_replicated_initial_query_timeout_sec
- Entier positif.
- 0 — Illimité.
UNDROP TABLE.
decimal_check_overflow
deduplicate_blocks_in_dependent_materialized_views
deduplicate_insert
INSERT INTO (pour les tables Replicated*).
Ce paramètre remplace les paramètres insert_deduplicate et async_insert_deduplicate.
Ce paramètre a trois valeurs possibles :
- disable — La déduplication est désactivée pour la requête
INSERT INTO. - enable — La déduplication est activée pour la requête
INSERT INTO. - backward_compatible_choice — La déduplication est activée si
insert_deduplicateouasync_insert_deduplicatesont activés pour le type d’insert concerné.
deduplicate_insert_select
INSERT SELECT (sur les tables Replicated*).
Ce paramètre remplace insert_deduplicate et deduplicate_insert pour les requêtes INSERT SELECT.
Ce paramètre a quatre valeurs possibles :
- disable — La déduplication est désactivée pour la requête
INSERT SELECT. - force_enable — La déduplication est activée pour la requête
INSERT SELECT. Si le résultat duSELECTn’est pas stable, une exception est levée. - enable_when_possible — La déduplication est activée si
insert_deduplicateest activé et si le résultat duSELECTest stable, sinon elle est désactivée. - enable_even_for_bad_queries - La déduplication est activée si
insert_deduplicateest activé. Si le résultat duSELECTn’est pas stable, un avertissement est journalisé, mais la requête est exécutée avec déduplication. Cette option est conservée pour la rétrocompatibilité. Envisagez plutôt d’utiliser d’autres options, car elle peut entraîner des résultats inattendus.
default_materialized_view_sql_security
DEFINER.
default_max_bytes_in_join
max_bytes_in_join n’est pas défini.
default_normal_view_sql_security
SQL SECURITY par défaut lors de la création d’une vue normale. En savoir plus sur la sécurité SQL.
La valeur par défaut est INVOKER.
default_table_engine
ENGINE n’est pas défini dans une instruction CREATE.
Valeurs possibles :
- une chaîne représentant n’importe quel nom de moteur de table valide
SharedMergeTree.
Exemple
Requête :
Engine utilisera le moteur de table Log :
Requête :
default_temporary_table_engine
Engine utilisera le moteur de table Log :
Requête :
default_view_definer
DEFINER par défaut lors de la création d’une vue. En savoir plus sur la sécurité SQL.
La valeur par défaut est CURRENT_USER.
defer_partition_pruning_after_final
FINAL sur les tables dont les
colonnes de clé de partition ne font pas partie de la clé de tri. Il s’agit du comportement sans risque pour la correction
introduit dans la version 26.3 : FINAL peut avoir besoin de dédupliquer des lignes qui partagent une clé primaire mais se trouvent
dans des partitions différentes, et l’élagage des partitions exclurait alors silencieusement ces lignes du
jeu de données soumis à la déduplication.
Lorsqu’il est désactivé, l’élagage des partitions est appliqué même avec FINAL, ce qui rétablit le
comportement antérieur à 26.3. Cela peut être nettement plus rapide pour les requêtes avec des
prédicats WHERE sur la colonne de partition, mais cela n’est correct que lorsque des lignes ayant la même clé primaire ne peuvent pas exister
dans des partitions différentes — par exemple, les tables de journaux d’événements dont la colonne de partition est définie au moment de l’insertion
et ne change jamais.
Ce paramètre n’affecte que les tables partitionnées dont les colonnes de clé de partition ne sont pas incluses
dans la clé de tri ; pour les autres tables, l’élagage des partitions est toujours appliqué.
Valeurs possibles :
- 0 — Appliquer l’élagage des partitions avant
FINAL(comportement antérieur à 26.3, plus rapide mais non sûr dans le cas général). - 1 — Reporter l’élagage des partitions après
FINAL(par défaut, sans risque pour la correction).
delta_lake_enable_engine_predicate
delta_lake_enable_expression_visitor_logging
delta_lake_insert_max_bytes_in_data_file
delta_lake_insert_max_rows_in_data_file
delta_lake_log_metadata
delta_lake_reload_schema_for_consistency
delta_lake_snapshot_end_version
delta_lake_snapshot_start_version
delta_lake_snapshot_version
delta_lake_throw_on_engine_predicate_error
describe_compact_output
describe_include_subcolumns
- 0 — Les sous-colonnes ne sont pas incluses dans les requêtes
DESCRIBE. - 1 — Les sous-colonnes sont incluses dans les requêtes
DESCRIBE.
describe_include_virtual_columns
dialecte
dictionary_use_async_executor
dictionary_validate_primary_key_type
distinct_overflow_mode
throw: lever une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer un résultat partiel, comme si les données source étaient épuisées.
distributed_aggregation_memory_efficient
distributed_background_insert_batch
distributed_directory_monitor_batch_inserts
Active ou désactive l’envoi par lots des données insérées.
Lorsque l’envoi par lots est activé, le moteur de table Distributed tente d’envoyer plusieurs fichiers de données insérées en une seule opération au lieu de les envoyer séparément. L’envoi par lots améliore les performances du cluster en exploitant plus efficacement les ressources du serveur et du réseau.
Valeurs possibles :
- 1 — Activé.
- 0 — Désactivé.
distributed_background_insert_max_sleep_time_ms
distributed_directory_monitor_max_sleep_time_ms
Intervalle maximal permettant au moteur de table Distributed d’envoyer des données. Limite la croissance exponentielle de l’intervalle défini dans le réglage distributed_background_insert_sleep_time_ms.
Valeurs possibles :
- Un nombre entier positif de millisecondes.
distributed_background_insert_sleep_time_ms
distributed_directory_monitor_sleep_time_ms
Intervalle de base du moteur de table Distributed pour l’envoi des données. L’intervalle réel augmente de façon exponentielle en cas d’erreur.
Valeurs possibles :
- Un nombre entier positif de millisecondes.
distributed_background_insert_split_batch_on_failure
distributed_directory_monitor_split_batch_on_failure
Active ou désactive le fractionnement des batches en cas d’échec.
Il peut arriver que l’envoi d’un batch donné vers le shard distant échoue à cause d’un pipeline en aval complexe (par ex. MATERIALIZED VIEW avec GROUP BY), en raison de Memory limit exceeded ou d’erreurs similaires. Dans ce cas, réessayer ne servira à rien (et bloquera les envois distribués pour la table), tandis que l’envoi des fichiers de ce batch un par un peut permettre à INSERT de réussir.
Ainsi, définir ce paramètre sur 1 désactive le batching pour ces batches (c.-à-d. désactive temporairement distributed_background_insert_batch pour les batches en échec).
Valeurs possibles :
- 1 — Activé.
- 0 — Désactivé.
Ce paramètre affecte également les batches corrompus (qui peuvent apparaître à la suite d’un arrêt anormal du serveur (machine) et de l’absence de
fsync_after_insert/fsync_directories pour le moteur de table Distributed).Vous ne devez pas vous reposer sur le fractionnement automatique des batches, car cela peut nuire aux performances.
distributed_background_insert_timeout
insert_distributed_timeout
Délai d’expiration de la requête d’insert dans Distributed. Ce paramètre est utilisé uniquement lorsque insert_distributed_sync est activé. Une valeur de 0 signifie qu’il n’y a pas de délai d’expiration.
distributed_cache_alignment
distributed_cache_bypass_connection_pool
distributed_cache_connect_backoff_max_ms
distributed_cache_connect_backoff_min_ms
distributed_cache_connect_max_tries
distributed_cache_connect_timeout_ms
distributed_cache_credentials_refresh_period_seconds
distributed_cache_data_packet_ack_window
distributed_cache_discard_connection_if_unread_data
distributed_cache_fetch_metrics_only_from_current_az
distributed_cache_file_cache_name
distributed_cache_log_mode
distributed_cache_max_unacked_inflight_packets
distributed_cache_min_bytes_for_seek
distributed_cache_pool_behaviour_on_limit
distributed_cache_prefer_bigger_buffer_size
distributed_cache_read_only_from_current_az
distributed_cache_read_request_max_tries
distributed_cache_receive_response_wait_milliseconds
distributed_cache_receive_timeout_milliseconds
20000.
distributed_cache_receive_timeout_ms
distributed_cache_send_timeout_ms
distributed_cache_tcp_keep_alive_timeout_ms
distributed_cache_throw_on_error
distributed_cache_use_clients_cache_for_read
distributed_cache_use_clients_cache_for_write
distributed_cache_wait_connection_from_pool_milliseconds
distributed_cache_write_request_max_tries
distributed_connections_pool_size
distributed_ddl_entry_format_version
6.
distributed_ddl_output_mode
throw— Renvoie un jeu de résultats avec le statut d’exécution de la requête pour tous les hôtes où la requête est terminée. Si la requête a échoué sur certains hôtes, la première exception est relancée. Si la requête n’est pas encore terminée sur certains hôtes et que distributed_ddl_task_timeout est dépassé, l’exceptionTIMEOUT_EXCEEDEDest levée.none— Similaire àthrow, mais la requête DDL distribuée ne renvoie aucun jeu de résultats.null_status_on_timeout— RenvoieNULLcomme statut d’exécution dans certaines lignes du jeu de résultats au lieu de leverTIMEOUT_EXCEEDEDsi la requête n’est pas terminée sur les hôtes correspondants.never_throw— Ne lève pasTIMEOUT_EXCEEDEDet ne relance pas les exceptions si la requête a échoué sur certains hôtes.none_only_active- similaire ànone, mais n’attend pas les répliques inactives de la base de donnéesReplicated. Remarque : avec ce mode, il est impossible de savoir que la requête n’a pas été exécutée sur une réplique et qu’elle sera exécutée en arrière-plan.null_status_on_timeout_only_active— similaire ànull_status_on_timeout, mais n’attend pas les répliques inactives de la base de donnéesReplicatedthrow_only_active— similaire àthrow, mais n’attend pas les répliques inactives de la base de donnéesReplicated
none_only_active.
distributed_ddl_task_timeout
- Entier positif.
- 0 — Mode asynchrone.
- Entier négatif — délai d’attente illimité.
distributed_foreground_insert
insert_distributed_sync
Active ou désactive l’insertion synchrone de données dans une table Distributed.
Par défaut, lors de l’insertion de données dans une table Distributed, le serveur ClickHouse envoie les données aux nœuds du cluster en arrière-plan. Lorsque distributed_foreground_insert=1, les données sont traitées de manière synchrone, et l’opération INSERT n’aboutit qu’après l’enregistrement de toutes les données sur tous les shards (au moins une réplique pour chaque shard si internal_replication vaut true).
Valeurs possibles :
0— Les données sont insérées en arrière-plan.1— Les données sont insérées en mode synchrone.
1.
Voir aussi
distributed_group_by_no_merge
0— Désactivé (le traitement final de la requête est effectué sur le nœud initiateur).1- Ne fusionne pas les états d’agrégation de différents serveurs lors du traitement distribué des requêtes (la requête est entièrement traitée sur le shard, l’initiateur se contente de relayer les données) ; peut être utilisé lorsqu’il est certain que les clés sont différentes sur les différents shards.2- Identique à1, mais appliqueORDER BYetLIMITsur l’initiateur (ce qui n’est pas possible lorsque la requête est entièrement traitée sur le nœud distant, comme avecdistributed_group_by_no_merge=1) ; peut être utilisé pour les requêtes avecORDER BYet/ouLIMIT.
distributed_index_analysis
- distributed_index_analysis_for_non_shared_merge_tree
- distributed_index_analysis_min_parts_to_activate
- distributed_index_analysis_min_indexes_bytes_to_activate
distributed_index_analysis_only_on_coordinator
IN (SELECT ...)),
car sinon chaque réplique suiveuse déclencherait indépendamment sa propre analyse d’index distribuée,
mais l’analyse d’index distribuée devient alors moins efficace si les sous-requêtes utilisent de grandes tables.
distributed_insert_skip_read_only_replicas
- 0 — INSERT se comporte comme d’habitude ; si l’opération cible une réplique en lecture seule, elle échoue
- 1 — L’initiateur ignorera les répliques en lecture seule avant d’envoyer les données aux shards.
distributed_plan_default_reader_bucket_count
distributed_plan_default_shuffle_join_bucket_count
distributed_plan_execute_locally
distributed_plan_force_exchange_kind
- ” - ne force aucun type d’opérateurs Exchange, laisse l’optimiseur choisir,
- ‘Persisted’ - utilise des fichiers temporaires dans le stockage d’objets,
- ‘Streaming’ - transmet les données d’échange sur le réseau.
distributed_plan_force_shuffle_aggregation
distributed_plan_max_rows_to_broadcast
distributed_plan_optimize_exchanges
distributed_plan_prefer_replicas_over_workers
distributed_product_mode
- S’applique uniquement aux sous-requêtes IN et JOIN.
- Uniquement si la section FROM utilise une table distribuée contenant plus d’un shard.
- Uniquement si la sous-requête porte sur une table distribuée contenant plus d’un shard.
- N’est pas utilisé pour une fonction de table remote.
deny— Valeur par défaut. Interdit l’utilisation de ces types de sous-requêtes (renvoie l’exception “Double-distributed in/JOIN subqueries is denied”).local— Remplace la base de données et la table dans la sous-requête par leurs équivalents locaux pour le serveur de destination (shard), en conservant leIN/JOINnormal.global— Remplace la requêteIN/JOINparGLOBAL IN/GLOBAL JOIN.allow— Autorise l’utilisation de ces types de sous-requêtes.
distributed_push_down_limit
- l’envoi de lignes supplémentaires sur le réseau ;
- le traitement, sur l’initiateur, des lignes au-delà de la limite.
distributed_push_down_limit ne modifie l’exécution de la requête que si au moins une des conditions suivantes est remplie :
- distributed_group_by_no_merge > 0.
- La requête n’a pas de
GROUP BY/DISTINCT/LIMIT BY, mais comporteORDER BY/LIMIT. - La requête comporte
GROUP BY/DISTINCT/LIMIT BYavecORDER BY/LIMITet :- optimize_skip_unused_shards est activé.
- optimize_distributed_group_by_sharding_key est activé.
- 0 — Désactivé.
- 1 — Activé.
- distributed_group_by_no_merge
- optimize_skip_unused_shards
- optimize_distributed_group_by_sharding_key
distributed_replica_error_cap
- Type : entier non signé
- Valeur par défaut : 1000
- load_balancing
- Moteur de table Distributed
- distributed_replica_error_half_life
- distributed_replica_max_ignored_errors
distributed_replica_error_half_life
- Type : secondes
- Valeur par défaut : 60 secondes
- load_balancing
- Moteur de table Distributed
- distributed_replica_error_cap
- distributed_replica_max_ignored_errors
distributed_replica_max_ignored_errors
- Type : entier non signé
- Valeur par défaut : 0
load_balancing).
Voir aussi :
- load_balancing
- Moteur de table Distributed
- distributed_replica_error_cap
- distributed_replica_error_half_life
do_not_merge_across_partitions_select_final
dynamic_disk_allow_from_env
from_env dans la configuration dynamique des disques (c’est-à-dire dans les arguments de la fonction disk()).
Désactivé par défaut afin d’empêcher les utilisateurs de lire des variables d’environnement arbitraires lors de la définition du stockage d’une table.
dynamic_disk_allow_from_zk
from_zk dans la configuration dynamique des disques (c’est-à-dire dans les arguments de la fonction disk()).
Désactivé par défaut.
dynamic_disk_allow_include
include dans la configuration dynamique des disques (c’est-à-dire dans les arguments de la fonction disk()).
Désactivé par défaut.
dynamic_throw_on_type_mismatch
true(par défaut) — lever une exception.false— renvoyerNULLpour ces lignes à la place.
empty_result_for_aggregation_by_constant_keys_on_empty_set
empty_result_for_aggregation_by_empty_set
enable_adaptive_memory_spill_scheduler
enable_add_distinct_to_in_subqueries
DISTINCT dans les sous-requêtes IN. Ce paramètre implique un compromis : son activation peut réduire considérablement la taille des tables temporaires transférées pour les sous-requêtes distribuées avec IN et accélérer significativement le transfert de données entre les shards, en garantissant que seules des valeurs uniques sont envoyées.
Cependant, l’activation de ce paramètre ajoute un surcoût de fusion sur chaque nœud, car la déduplication (DISTINCT) doit être effectuée. Utilisez ce paramètre lorsque le transfert réseau constitue un goulot d’étranglement et que ce surcoût de fusion est acceptable.
enable_automatic_decision_for_merging_across_partitions_for_final
enable_blob_storage_log
enable_blob_storage_log_for_read_operations
enable_blob_storage_log soit activé.
enable_early_constant_folding
enable_extended_results_for_datetime_functions
Date32 avec une plage étendue (par rapport au type Date)
ou de type DateTime64 avec une plage étendue (par rapport au type DateTime).
Valeurs possibles :
0— Les fonctions renvoientDateouDateTimepour tous les types d’arguments.1— Les fonctions renvoientDate32ouDateTime64pour les arguments de typeDate32ouDateTime64, etDateouDateTimedans les autres cas.
enable_filesystem_cache
enable_filesystem_cache_log
enable_filesystem_cache_on_write_operations
write-through. Si cette option est définie sur false, le cache write-through est désactivé pour les opérations d’écriture. Si elle est définie sur true, le cache write-through est activé tant que cache_on_write_operations est activé dans la section de configuration du disque de cache de la configuration du serveur.
Consultez « Utilisation du cache local » pour plus de détails.
Valeur par défaut dans Cloud : 1.
enable_filesystem_read_prefetches_log
enable_full_text_index
allow_experimental_full_text_index
Si ce paramètre est défini sur true, l’utilisation de l’index textuel est autorisée.
enable_global_with_statement
enable_hdfs_pread
pread pour les fichiers HDFS. Par défaut, hdfsPread est utilisé. Si cette option est désactivée, hdfsRead et hdfsSeek sont utilisés pour lire les fichiers HDFS.
enable_http_compression
- 0 — Désactivé.
- 1 — Activé.
enable_identifier_resolve_cache
enable_job_stack_trace
enable_join_fixed_hash_table_conversion
enable_join_runtime_filters
enable_join_transitive_predicates
A.x = B.x et B.x = C.x, un prédicat synthétique A.x = C.x
est ajouté afin que l’optimiseur de l’ordre des jointures puisse prendre en compte des plans directs (A JOIN C).
enable_lazy_columns_replication
enable_lightweight_delete
allow_experimental_lightweight_delete
Active les mutations DELETE légères pour les tables MergeTree.
enable_lightweight_update
allow_experimental_lightweight_update
Permet d’utiliser les mises à jour légères.
enable_materialized_cte
enable_memory_bound_merging_of_aggregation_results
enable_multiple_prewhere_read_steps
enable_named_columns_in_function_tuple
enable_optimize_predicate_expression
SELECT.
Le pushdown des prédicats peut réduire considérablement le trafic réseau des requêtes distribuées.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
SELECT count() FROM test_table WHERE date = '2018-10-10'SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'
enable_optimize_predicate_expression = 1, le temps d’exécution de ces requêtes est identique, car ClickHouse applique WHERE à la sous-requête pendant son traitement.
Si enable_optimize_predicate_expression = 0, le temps d’exécution de la deuxième requête est beaucoup plus long, car la clause WHERE n’est appliquée à l’ensemble des données qu’une fois la sous-requête terminée.
enable_optimize_predicate_expression_to_final_subquery
enable_order_by_all
ORDER BY ALL. Voir ORDER BY.
Valeurs possibles :
- 0 — Désactive ORDER BY ALL.
- 1 — Active ORDER BY ALL.
enable_parallel_blocks_marshalling
enable_parsing_to_custom_serialization
enable_positional_arguments
- 0 — Les arguments positionnels ne sont pas pris en charge.
- 1 — Les arguments positionnels sont pris en charge : les numéros de colonnes peuvent être utilisés à la place des noms de colonnes.
enable_positional_arguments_for_projections
Il s’agit d’un paramètre de niveau expert, et vous ne devriez pas le modifier si vous débutez avec ClickHouse.
- 0 — Les arguments positionnels ne sont pas pris en charge.
- 1 — Les arguments positionnels sont pris en charge : les numéros de colonnes peuvent être utilisés à la place des noms de colonnes.
enable_producing_buckets_out_of_order_in_aggregation
distributed_aggregation_memory_efficient) à produire des buckets dans le désordre.
Cela peut améliorer les performances lorsque la taille des buckets d’agrégation est déséquilibrée, en permettant à une réplique d’envoyer à l’initiateur des buckets avec des ID plus élevés pendant qu’elle traite encore certains buckets volumineux avec des ID plus faibles.
L’inconvénient est une utilisation de la mémoire potentiellement plus élevée.
enable_reads_from_query_cache
SELECT sont extraits du cache de requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
enable_s3_requests_logging
enable_scalar_subquery_optimization
enable_scopes_for_with_statement
enable_sharding_aggregator
GROUP BY par partitionnement, qui répartit les lignes entre les threads en hachant la clé de regroupement, de sorte que chaque thread agrège un sous-ensemble distinct de clés sans phase de fusion.
Cette approche est efficace pour les clés à forte cardinalité avec des données uniformément réparties, mais peut être moins performante si la distribution des clés est très déséquilibrée ou si les requêtes comportent très peu de clés distinctes.
Valeurs possibles :
- 0 — L’optimisation d’agrégation par partitionnement est désactivée.
- 1 — L’optimisation d’agrégation par partitionnement est activée.
L’activation de ce paramètre désactive l’optimisation qui supprime des snapshots les parties de données inutiles une fois l’étape de planification terminée.
Par conséquent, les requêtes de longue durée peuvent conserver des parties obsolètes pendant toute leur exécution, ce qui retarde le nettoyage des parties et accroît la pression sur le stockage.Ce paramètre s’applique actuellement uniquement aux tables de la famille MergeTree.
- 0 - Désactivé
- 1 - Activé
enable_sharing_sets_for_mutations
enable_software_prefetch_in_aggregation
enable_software_prefetch_in_join
enable_streaming_queries
SELECT ... FROM t STREAM [CURSOR '{...}'].
Lorsqu’il est désactivé, toute expression de table utilisant le modificateur STREAM est rejetée
lors de la construction du plan. Ce paramètre constitue le contrôle principal de la
fonctionnalité de requêtes en streaming ; des capacités supplémentaires peuvent être régies par leurs propres paramètres.
enable_time_time64_type
allow_experimental_time_time64_type
Permet de créer les types de données Time et Time64.
enable_unaligned_array_join
enable_url_encoding
enable_vertical_final
enable_writes_to_query_cache
SELECT sont stockés dans le cache de requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
enforce_strict_identifier_format
engine_file_allow_create_multiple_files
JSON, ORC, Parquet, etc.). Si ce paramètre est activé, un nouveau fichier est créé à chaque insertion selon le modèle de nommage suivant :
data.Parquet -> data.1.Parquet -> data.2.Parquet, etc.
Valeurs possibles :
- 0 — la requête
INSERTajoute les nouvelles données à la fin du fichier. - 1 — la requête
INSERTcrée un nouveau fichier.
engine_file_empty_if_not_exists
- 0 —
SELECTlève une exception. - 1 —
SELECTrenvoie un résultat vide.
engine_file_skip_empty_files
- 0 —
SELECTlève une exception si le fichier vide n’est pas compatible avec le format demandé. - 1 —
SELECTrenvoie un résultat vide pour un fichier vide.
engine_file_truncate_on_insert
- 0 — la requête
INSERTajoute de nouvelles données à la fin du fichier. - 1 — la requête
INSERTremplace le contenu existant du fichier par les nouvelles données.
engine_url_skip_empty_files
- 0 —
SELECTlève une exception si le fichier vide n’est pas compatible avec le format demandé. - 1 —
SELECTrenvoie un résultat vide pour un fichier vide.
exact_rows_before_limit
except_default_mode
exclude_materialize_skip_indexes_on_insert
execute_exists_as_scalar_subquery
EXISTS non corrélées comme des sous-requêtes scalaires. Comme pour les sous-requêtes scalaires, le cache est utilisé et le pliage de constantes s’applique au résultat.
Valeur par défaut dans Cloud : 0.
external_storage_connect_timeout_sec
external_storage_max_read_bytes
external_storage_max_read_rows
external_storage_rw_timeout_sec
external_table_functions_use_nulls
- 0 — La fonction de table utilise explicitement des colonnes Nullable.
- 1 — La fonction de table utilise implicitement des colonnes Nullable.
0, la fonction de table ne rend pas les colonnes Nullable et insère à la place des valeurs par défaut au lieu de NULL. Cela s’applique également aux valeurs NULL dans les tableaux.
external_table_strict_query
extract_key_value_pairs_max_pairs_per_row
extract_kvp_max_pairs_per_row
Nombre maximal de paires que la fonction extractKeyValuePairs peut produire. Sert de garde-fou pour éviter une consommation excessive de mémoire.
extremes
fallback_to_stale_replicas_for_distributed_queries
SELECT sur une table distribuée pointant vers des tables répliquées.
Par défaut, 1 (activé).
file_like_engine_default_partition_strategy
filesystem_cache_allow_background_download
filesystem_cache_boundary_alignment
filesystem_cache_enable_background_download_during_fetch
filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage
filesystem_cache_max_download_size
filesystem_cache_name
filesystem_cache_prefer_bigger_buffer_size
filesystem_cache_reserve_space_wait_lock_timeout_milliseconds
filesystem_cache_segments_batch_size
filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit
skip_download_if_exceeds_query_cache
Ne pas télécharger depuis le système de fichiers distant si la taille dépasse celle du cache de requêtes
filesystem_prefetch_max_memory_usage
filesystem_prefetch_step_bytes
auto : le pas de prélecture optimal sera déduit automatiquement de façon approximative, mais il ne sera pas forcément optimal à 100 %. La valeur réelle peut être différente en raison du paramètre filesystem_prefetch_min_bytes_for_single_read_task
filesystem_prefetch_step_marks
auto : l’étape de prélecture approximativement la plus adaptée sera déduite automatiquement, mais elle ne sera pas forcément optimale à 100 %. La valeur réelle peut être différente en raison du paramètre filesystem_prefetch_min_bytes_for_single_read_task
filesystem_prefetches_limit
filesystem_prefetches_max_memory_usage si vous souhaitez limiter le nombre de prélectures
final
- 0 - désactivé
- 1 - activé
finalize_projection_parts_synchronously
flatten_nested
- 1 — La colonne Nested est convertie en tableaux distincts.
- 0 — La colonne Nested reste un tableau unique de tuples.
0, il est possible d’utiliser un niveau d’imbrication arbitraire.
Exemples
Requête :
force_aggregate_partitions_independently
force_aggregation_in_order
force_data_skipping_indices
force_grouping_standard_compatibility
force_index_by_date
force_index_by_date=1, ClickHouse vérifie si la requête contient une condition sur la clé de date qui peut être utilisée pour restreindre les plages de données. S’il n’existe pas de condition appropriée, une exception est levée. Cependant, le système ne vérifie pas si cette condition réduit la quantité de données à lire. Par exemple, la condition Date != ' 2000-01-01 ' est acceptable même lorsqu’elle correspond à toutes les données de la table (c’est-à-dire que l’exécution de la requête nécessite un parcours complet). Pour plus d’informations sur les plages de données dans les tables MergeTree, consultez MergeTree.
force_optimize_projection
SELECT lorsque l’optimisation des projections est activée (voir le paramètre optimize_use_projections).
Valeurs possibles :
- 0 — L’optimisation des projections n’est pas obligatoire.
- 1 — L’optimisation des projections est obligatoire.
force_optimize_projection_name
- chaîne : nom de la projection utilisée dans une requête
force_optimize_skip_unused_shards
- 0 — Désactivé. ClickHouse ne lève pas d’exception.
- 1 — Activé. L’exécution des requêtes est désactivée uniquement si la table possède une clé de sharding.
- 2 — Activé. L’exécution des requêtes est désactivée, qu’une clé de sharding soit définie ou non pour la table.
force_optimize_skip_unused_shards_nesting
force_optimize_skip_unused_shards en fonction du niveau d’imbrication de la requête distribuée (lorsqu’une table Distributed interroge une autre table Distributed). Ce paramètre requiert donc toujours force_optimize_skip_unused_shards.
Valeurs possibles :
- 0 - Désactivé,
force_optimize_skip_unused_shardss’applique toujours. - 1 — Active
force_optimize_skip_unused_shardsuniquement pour le premier niveau. - 2 — Active
force_optimize_skip_unused_shardsjusqu’au deuxième niveau.
force_primary_key
force_primary_key=1, ClickHouse vérifie si la requête comporte une condition sur la clé primaire pouvant être utilisée pour restreindre les plages de données. S’il n’existe pas de condition appropriée, il lève une exception. Cependant, il ne vérifie pas si cette condition réduit la quantité de données à lire. Pour plus d’informations sur les plages de données dans les tables MergeTree, consultez MergeTree.
force_remove_data_recursively_on_drop
formatdatetime_e_with_space_padding
formatdatetime_f_prints_scale_number_of_digits
formatdatetime_f_prints_single_zero
formatdatetime_format_without_leading_zeros
formatdatetime_parsedatetime_m_is_month_name
fsync_metadata
.sql. Activé par défaut.
Il peut être pertinent de le désactiver si le serveur possède des millions de petites tables qui sont constamment créées et supprimées.
function_base58_max_input_size
base58Encode, base58Decode et tryBase58Decode. La conversion générique base58 est quadratique par rapport à la longueur de l’entrée ; une seule valeur volumineuse peut donc mettre très longtemps à s’exécuter. base58 est conçu pour des données courtes (clés, hachages, adresses) ; la valeur par défaut de 10 Ko constitue donc un seuil de sécurité généreux. base58Encode et base58Decode lèvent TOO_LARGE_STRING_SIZE pour les entrées plus volumineuses, tandis que tryBase58Decode renvoie une chaîne vide. Une valeur de 0 désactive la limite (c’était le comportement avant l’introduction de ce paramètre). Les fonctions linéaires base32 et base64 ne sont pas affectées.
function_date_trunc_return_type_behavior
dateTrunc.
Valeurs possibles :
- 0 - Lorsque le deuxième argument est
DateTime64/Date32, le type de retour seraDateTime64/Date32quelle que soit l’unité de temps du premier argument. - 1 - Pour
Date32, le résultat est toujoursDate. PourDateTime64, le résultat estDateTimepour les unités de tempssecondet supérieures.
function_implementation
function_json_value_return_type_allow_complex
- true — Autorise.
- false — Interdit.
function_json_value_return_type_allow_nullable
NULL lorsque la valeur n’existe pas pour la fonction JSON_VALUE.
- true — Autorisé.
- false — Interdit.
function_locate_has_mysql_compatible_argument_order
- 0 — La fonction
locateaccepte les arguments(haystack, needle[, start_pos]). - 1 — La fonction
locateaccepte les arguments(needle, haystack, [, start_pos])(comportement compatible avec MySQL)
function_range_max_elements_in_block
- Entier positif.
function_sleep_max_microseconds_per_block
sleep est autorisée à se mettre en veille pour chaque bloc. Si un utilisateur l’appelle avec une valeur plus élevée, elle lève une exception. Il s’agit d’un seuil de sécurité.
function_visible_width_behavior
visibleWidth. 0 - compte uniquement le nombre de points de code ; 1 - compte correctement les caractères de largeur nulle et les caractères combinés, compte les caractères à pleine largeur comme deux, estime la largeur des tabulations et compte les caractères de suppression.
functions_h3_default_if_invalid
geo_distance_returns_float64_on_float64_arguments
geoDistance, greatCircleDistance et greatCircleAngle sont de type Float64, elles retournent un Float64 et utilisent la double précision pour les calculs internes. Dans les versions précédentes de ClickHouse, ces fonctions retournaient toujours un Float32.
geotoh3_argument_order
glob_expansion_max_elements
grace_hash_join_initial_buckets
grace_hash_join_max_buckets
group_by_overflow_mode
throw: lever une exceptionbreak: arrêter l’exécution de la requête et renvoyer un résultat partielany: poursuivre l’agrégation pour les clés déjà présentes dans le set, sans ajouter de nouvelles clés au set.
group_by_two_level_threshold
group_by_two_level_threshold_bytes
group_by_use_nulls
ROLLUP, CUBE ou GROUPING SETS sont utilisés, certaines clés d’agrégation peuvent ne pas être utilisées pour produire certaines lignes de résultat.
Les colonnes correspondant à ces clés sont remplies soit avec la valeur par défaut, soit avec NULL dans les lignes correspondantes, selon ce paramètre.
Valeurs possibles :
- 0 — La valeur par défaut du type de clé d’agrégation est utilisée pour produire les valeurs manquantes.
- 1 — ClickHouse exécute
GROUP BYde la même manière que le prescrit la norme SQL. Les types des clés d’agrégation sont convertis en Nullable. Les colonnes correspondant aux clés d’agrégation sont remplies avec NULL pour les lignes où elles n’ont pas été utilisées.
h3togeo_lon_lat_result_order
handshake_timeout_ms
hdfs_create_new_file_on_insert
data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz, etc.
Valeurs possibles :
- 0 — la requête
INSERTajoute de nouvelles données à la fin du fichier. - 1 — la requête
INSERTcrée un nouveau fichier.
hdfs_ignore_file_doesnt_exist
- 1 —
SELECTrenvoie un résultat vide. - 0 —
SELECTlève une exception.
hdfs_replication
hdfs_skip_empty_files
- 0 —
SELECTlève une exception si un fichier vide n’est pas compatible avec le format demandé. - 1 —
SELECTrenvoie un résultat vide pour un fichier vide.
hdfs_throw_on_zero_files_match
- 1 —
SELECTlève une exception. - 0 —
SELECTrenvoie un résultat vide.
hdfs_truncate_on_insert
- 0 — la requête
INSERTajoute de nouvelles données à la fin du fichier. - 1 — la requête
INSERTremplace le contenu existant du fichier par les nouvelles données.
hedged_connection_timeout_ms
highlight_max_matches_per_row
- Entier positif.
hnsw_candidate_list_size_for_search
hsts_max_age
http_connection_timeout
- Tout nombre entier positif.
- 0 - Désactivé (délai d’expiration infini).
http_headers_progress_interval_ms
http_headers_read_timeout
http_make_head_request
http_make_head_request permet d’effectuer une requête HEAD lors de la lecture de données via HTTP afin d’obtenir des informations sur le fichier à lire, comme sa taille. Étant activé par défaut, il peut être utile de désactiver ce paramètre lorsque le serveur ne prend pas en charge les requêtes HEAD.
http_max_field_name_size
http_max_field_value_size
http_max_fields
http_max_multipart_form_data_size
http_max_request_header_size
http_max_request_param_data_size
http_max_tries
http_max_uri_size
- Entier positif.
http_native_compression_disable_checksumming_on_decompress
gzip ou deflate).
Pour plus d’informations, consultez la description de l’interface HTTP.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
http_receive_timeout
- N’importe quel entier positif.
- 0 - Désactivé (délai d’attente infini).
http_response_buffer_size
http_response_headers
SET http_response_headers = '{"Content-Type": "image/png"}'
http_retry_initial_backoff_ms
http_retry_max_backoff_ms
http_send_timeout
- Tout nombre entier positif.
- 0 - Désactivé (délai d’expiration infini).
Cela s’applique uniquement au profil par défaut. Un redémarrage du serveur est nécessaire pour que les modifications prennent effet.
http_skip_not_found_url_for_globs
http_wait_end_of_query
http_write_exception_in_output_format
http_zlib_compression_level
iceberg_compaction_data_cleanup
iceberg_compaction_delay_bias
iceberg_data_file_size_lower_threshold_compaction
iceberg_data_file_size_upper_threshold_compaction
iceberg_delete_data_on_drop
iceberg_expire_default_max_ref_age_ms
history.expire.max-ref-age-ms, utilisée par expire_snapshots lorsque cette propriété n’est pas définie.
iceberg_expire_default_max_snapshot_age_ms
history.expire.max-snapshot-age-ms utilisée par expire_snapshots en l’absence de cette propriété.
iceberg_expire_default_min_snapshots_to_keep
history.expire.min-snapshots-to-keep qu’expire_snapshots utilise lorsque cette propriété est absente.
iceberg_insert_max_bytes_in_data_file
iceberg_insert_max_partitions
iceberg_insert_max_rows_in_data_file
iceberg_max_number_datafiles_to_compact
iceberg_metadata_compression_method
.metadata.json.
iceberg_metadata_log_level
- none - Aucun journal de métadonnées.
- metadata - Fichier racine metadata.json.
- manifest_list_metadata - Tout ce qui précède + métadonnées de la liste de manifestes avro correspondant à un snapshot.
- manifest_list_entry - Tout ce qui précède + entrées de la liste de manifestes avro.
- manifest_file_metadata - Tout ce qui précède + métadonnées des fichiers manifestes avro parcourus.
- manifest_file_entry - Tout ce qui précède + entrées des fichiers manifestes avro parcourus.
iceberg_metadata_staleness_ms
iceberg_orphan_files_older_than_seconds
iceberg_snapshot_id
iceberg_timestamp_ms
idle_connection_timeout
- Entier positif (0 : fermeture immédiate, après 0 seconde).
ignore_cold_parts_seconds
ignore_data_skipping_indices
xy_idx :
ignore_drop_queries_probability
ignore_format_null_for_explain
FORMAT Null est ignoré pour les requêtes EXPLAIN, et le format de sortie par défaut est utilisé à la place.
Si elle est désactivée, les requêtes EXPLAIN avec FORMAT Null ne produisent aucune sortie (comportement rétrocompatible).
ignore_materialized_views_with_dropped_target_table
ignore_on_cluster_for_replicated_access_entities_queries
ignore_on_cluster_for_replicated_database
ignore_on_cluster_for_replicated_named_collections_queries
ignore_on_cluster_for_replicated_udf_queries
implicit_select
1 + 2 devient une requête valide.
Dans clickhouse-local, il est activé par défaut et peut être désactivé explicitement.
implicit_table_at_top_level
implicit_transaction
inject_random_order_for_select_without_order_by
insert_allow_materialized_columns
insert_deduplicate
INSERT (pour les tables Replicated*).
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
INSERT sont dédupliqués (voir Réplication des données).
Pour les tables répliquées, seuls les 100 blocs les plus récents de chaque partition sont dédupliqués par défaut (voir replicated_deduplication_window, replicated_deduplication_window_seconds).
Pour les tables non répliquées, voir non_replicated_deduplication_window.
insert_deduplication_token
- Toute chaîne de caractères
insert_deduplication_token n’est utilisé pour la déduplication que lorsqu’il n’est pas vide.
Pour les tables répliquées, par défaut, seules les 100 insertions les plus récentes de chaque partition sont dédupliquées (voir replicated_deduplication_window, replicated_deduplication_window_seconds).
Pour les tables non répliquées, voir non_replicated_deduplication_window.
insert_deduplication_token fonctionne au niveau de la partition (comme la somme de contrôle insert_deduplication). Plusieurs partitions peuvent avoir le même insert_deduplication_token.insert_keeper_fault_injection_probability
insert_keeper_fault_injection_seed
insert_keeper_max_retries
- Entier positif.
- 0 — Les nouvelles tentatives sont désactivées
20.
Les nouvelles tentatives pour les requêtes Keeper sont effectuées après un certain délai d’attente. Ce délai est contrôlé par les paramètres suivants : insert_keeper_retry_initial_backoff_ms, insert_keeper_retry_max_backoff_ms.
La première nouvelle tentative est effectuée après le délai insert_keeper_retry_initial_backoff_ms. Les délais suivants sont calculés comme suit :
insert_keeper_retry_initial_backoff_ms=100, insert_keeper_retry_max_backoff_ms=10000 et insert_keeper_max_retries=8, les délais seront de 100, 200, 400, 800, 1600, 3200, 6400, 10000.
Au-delà de la tolérance aux pannes, les nouvelles tentatives visent à offrir une meilleure expérience utilisateur : elles permettent d’éviter de renvoyer une erreur lors de l’exécution d’INSERT si Keeper redémarre, par exemple à la suite d’une mise à niveau.
insert_keeper_retry_initial_backoff_ms
- Entier positif.
- 0 — Aucun délai d’attente
insert_keeper_retry_max_backoff_ms
- Entier positif.
- 0 — Le délai maximal n’est pas limité
insert_null_as_default
NULL provoque une exception. Si le type de la colonne est Nullable, les valeurs NULL sont insérées telles quelles, quel que soit ce paramètre.
Ce paramètre s’applique aux requêtes INSERT … SELECT. Notez que les sous-requêtes SELECT peuvent être concaténées avec la clause UNION ALL.
Valeurs possibles :
- 0 — L’insertion de
NULLdans une colonne non Nullable provoque une exception. - 1 — La valeur par défaut de la colonne est insérée à la place de
NULL.
insert_quorum
Ce paramètre ne s’applique pas à SharedMergeTree, voir la cohérence de SharedMergeTree pour plus d’informations.
- Si
insert_quorum < 2, les écritures avec quorum sont désactivées. - Si
insert_quorum >= 2, les écritures avec quorum sont activées. - Si
insert_quorum = 'auto', utilise la majorité (number_of_replicas / 2 + 1) comme nombre de quorum.
INSERT réussit uniquement lorsque ClickHouse parvient à écrire correctement les données sur insert_quorum répliques pendant insert_quorum_timeout. Si, pour une raison quelconque, le nombre de répliques sur lesquelles l’écriture a réussi n’atteint pas insert_quorum, l’écriture est considérée comme ayant échoué et ClickHouse supprimera le bloc inséré de toutes les répliques où les données ont déjà été écrites.
Lorsque insert_quorum_parallel est désactivé, toutes les répliques du quorum sont cohérentes, c’est-à-dire qu’elles contiennent les données de toutes les requêtes INSERT précédentes (la séquence INSERT est linéarisée). Lors de la lecture de données écrites à l’aide de insert_quorum et lorsque insert_quorum_parallel est désactivé, vous pouvez activer la cohérence séquentielle pour les requêtes SELECT à l’aide de select_sequential_consistency.
ClickHouse génère une exception :
- Si le nombre de répliques disponibles au moment de la requête est inférieur à
insert_quorum. - Lorsque
insert_quorum_parallelest désactivé et qu’une tentative d’écriture de données est effectuée alors que le bloc précédent n’a pas encore été inséré surinsert_quorumrépliques. Cette situation peut se produire si l’utilisateur essaie d’exécuter une autre requêteINSERTsur la même table avant que la précédente avecinsert_quorumne soit terminée.
insert_quorum_parallel
Ce paramètre ne s’applique pas à SharedMergeTree. Pour plus d’informations, voir cohérence de SharedMergeTree.
INSERT avec quorum. S’il est activé, des requêtes INSERT supplémentaires peuvent être envoyées avant la fin des requêtes précédentes. S’il est désactivé, les écritures supplémentaires dans la même table seront rejetées.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
insert_quorum_timeout
insert_shard_id
0, spécifie le shard de la table Distributed dans lequel les données seront insérées de façon synchrone.
Si la valeur de insert_shard_id est incorrecte, le serveur lèvera une exception.
Pour obtenir le nombre de shards dans requested_cluster, vous pouvez consulter la configuration du serveur ou utiliser cette requête :
- 0 — Désactivé.
- Un nombre quelconque de
1àshards_numde la table Distributed correspondante.
interactive_delay
intersect_default_mode
jemalloc_collect_profile_samples_in_trace_log
jemalloc_enable_profiler
jemalloc_profile_text_collapsed_use_count
jemalloc_profile_text_output_format
jemalloc_profile_text_symbolize_with_inline
join_algorithm
- grace_hash
grace_hash_join_initial_buckets). Cela est fait de manière à garantir que chaque bucket puisse être traité indépendamment. Les lignes du premier bucket sont ajoutées à une table de hachage en mémoire, tandis que les autres sont enregistrées sur disque. Si la table de hachage dépasse la limite mémoire (par exemple, telle que définie par max_bytes_in_join, le nombre de buckets est augmenté, ainsi que le bucket assigné à chaque ligne. Toutes les lignes qui n’appartiennent pas au bucket actuel sont vidées sur disque et réaffectées.
Prend en charge INNER/LEFT/RIGHT/FULL ALL/ANY JOIN.
- hash
OR dans la section JOIN ON.
Lors de l’utilisation de l’algorithme hash, la partie droite de JOIN est chargée en RAM.
- parallel_hash
hash join qui répartit les données dans des buckets et construit plusieurs tables de hachage au lieu d’une seule, de manière concurrente, afin d’accélérer ce processus.
Lors de l’utilisation de l’algorithme parallel_hash, la partie droite de JOIN est chargée en RAM.
- partial_merge
RIGHT JOIN et FULL JOIN ne sont pris en charge qu’avec la strictness ALL (SEMI, ANTI, ANY et ASOF ne sont pas pris en charge).
Lors de l’utilisation de l’algorithme partial_merge, ClickHouse trie les données et les écrit sur disque. L’algorithme partial_merge dans ClickHouse diffère légèrement de l’implémentation classique. D’abord, ClickHouse trie la table de droite par clés de jointure en blocs et crée un index min-max pour les blocs triés. Ensuite, il trie des parties de la table de gauche par join key et les joint à la table de droite. L’index min-max est également utilisé pour ignorer les blocs inutiles de la table de droite.
- direct
direct (également appelé nested loop) effectue une recherche dans la table de droite en utilisant les lignes de la table de gauche comme clés.
Il est pris en charge par des moteurs de stockage spéciaux tels que Dictionary, EmbeddedRocksDB et les tables MergeTree.
Pour les tables MergeTree, l’algorithme pousse les filtres sur les clés de jointure directement vers la couche de stockage. Cela peut être plus efficace lorsque la clé peut utiliser l’index de clé primaire de la table pour les recherches ; sinon, il effectue des parcours complets de la table de droite pour chaque bloc de la table de gauche.
Prend en charge les jointures INNER et LEFT, et uniquement les clés de jointure d’égalité sur une seule colonne, sans autres conditions.
- auto
auto, hash join est d’abord essayé, puis l’algorithme bascule à la volée vers un autre algorithme si la limite mémoire est dépassée.
- full_sorting_merge
- prefer_partial_merge
partial_merge join si possible, sinon il utilise hash. Déprécié, identique à partial_merge,hash.
- default (déprécié)
direct,hash, c.-à-d. essayer d’utiliser direct join puis hash join (dans cet ordre).
join_any_take_last_row
ANY.
Ce paramètre s’applique uniquement aux opérations
JOIN avec des tables utilisant le moteur Join.- 0 — Si la table de droite comporte plus d’une ligne correspondante, seule la première trouvée est utilisée pour la jointure.
- 1 — Si la table de droite comporte plus d’une ligne correspondante, seule la dernière trouvée est utilisée pour la jointure.
join_default_strictness
ALL— Si la table de droite comporte plusieurs lignes correspondantes, ClickHouse crée un produit cartésien à partir de ces lignes. Il s’agit du comportementJOINnormal en SQL standard.ANY— Si la table de droite comporte plusieurs lignes correspondantes, seule la première trouvée est utilisée pour la jointure. Si la table de droite n’a qu’une seule ligne correspondante, les résultats deANYetALLsont identiques.ASOF— Pour joindre des séquences avec une correspondance incertaine.Chaîne vide— SiALLouANYn’est pas spécifié dans la requête, ClickHouse lève une exception.
join_on_disk_max_files_to_merge
- Tout entier positif à partir de 2.
join_output_by_rowlist_perkey_rows_threshold
join_overflow_mode
hash et parallel_hash de
join_algorithm. Les autres
algorithmes (par exemple, partial_merge, grace_hash, auto) gèrent ces
limites différemment — en déversant sur disque, en repartitionnant ou en changeant
de stratégie — voir
join_algorithm.
Valeurs possibles :
THROW— ClickHouse lève une exception et arrête la requête.BREAK— ClickHouse arrête la requête sans lever d’exception.
THROW.
Voir aussi
join_runtime_bloom_filter_bytes
join_runtime_bloom_filter_hash_functions
join_runtime_bloom_filter_max_ratio_of_set_bits
join_runtime_filter_blocks_to_skip_before_reenabling
join_runtime_filter_exact_values_limit
join_runtime_filter_from_fixed_hash_table
enable_join_fixed_hash_table_conversion), cette table de hachage est utilisée directement comme filtre d’exécution.
join_runtime_filter_pass_ratio_threshold_for_disabling
join_runtime_filter_blocks_to_skip_before_reenabling blocs suivants afin de réduire la surcharge.
join_to_sort_maximum_table_rows
join_to_sort_minimum_perkey_rows
join_use_nulls
- 0 — Les cellules vides sont remplies avec la valeur par défaut du type du champ correspondant.
- 1 —
JOINse comporte comme en SQL standard. Le type du champ correspondant est converti en Nullable, et les cellules vides sont remplies avec NULL.
joined_block_split_single_row
max_joined_block_size_rows != 0 est obligatoire pour que ce paramètre prenne effet.
Combiné à ce paramètre, max_joined_block_size_bytes est utile pour éviter une consommation mémoire excessive en cas de données déséquilibrées, lorsque certaines lignes volumineuses ont de nombreuses correspondances dans la table de droite.
joined_subquery_requires_alias
kafka_disable_num_consumers_limit
kafka_max_wait_ms
- Entier positif.
- 0 — Délai d’attente infini.
keeper_map_strict_mode
keeper_max_retries
keeper_retry_initial_backoff_ms
keeper_retry_max_backoff_ms
least_greatest_legacy_null_behavior
legacy_column_name_of_tuple_literal
lightweight_delete_mode
alter_update- exécute la requêteALTER UPDATE, qui crée une mutation lourde.lightweight_update- exécute une mise à jour légère si possible, sinon exécuteALTER UPDATE.lightweight_update_force- exécute une mise à jour légère si possible, sinon lève une exception.
lightweight_deletes_sync
mutations_sync, mais contrôle uniquement l’exécution des suppressions légères.
Valeurs possibles :
Voir aussi
Valeur par défaut dans Cloud :
1.
limit
- 0 — Le nombre de lignes n’est pas limité.
- Entier positif.
load_balancing
- Random (par défaut)
- Nearest hostname
- Hostname levenshtein distance
- Hostname longest common prefix
- Hostname longest common suffix
- In order
- First or random
- Round robin
Random (par défaut)
Nom d’hôte le plus proche
Distance de Levenshtein du nom d’hôte
nearest_hostname, mais compare le nom d’hôte à l’aide de la distance de Levenshtein. Par exemple :
Plus long préfixe commun du nom d’hôte
nearest_hostname, mais la réplique dont le nom d’hôte partage le préfixe commun le plus long avec le nom d’hôte local est privilégiée (plus le préfixe commun est long, plus la priorité est élevée). Contrairement à nearest_hostname, qui compare les caractères différents position par position, cette stratégie n’est pas trompée par des noms d’hôte dont les segments numériques ont des longueurs différentes. Par exemple, pour le nom d’hôte local sfe301 :
sfe10101 est préféré, car il partage avec sfe301 le préfixe commun le plus long (sfe, longueur 3).
Les répliques ayant la même longueur de préfixe commun sont choisies aléatoirement. En particulier, lorsqu’aucune réplique ne partage de préfixe avec le nom d’hôte local (toutes les longueurs de préfixe commun sont égales à zéro), cette stratégie se comporte exactement comme random.
Plus long suffixe commun du nom d’hôte
hostname_longest_common_prefix, mais on compare le plus long suffixe commun au lieu du préfixe. Cela est utile lorsque l’identité du centre de données est encodée dans le suffixe du nom d’hôte. Par exemple, pour le nom d’hôte local et46gtghn.qc.localdomain :
ab999.qc.localdomain est privilégié, car il partage avec et46gtghn.qc.localdomain le suffixe commun le plus long (.qc.localdomain, longueur 15).
Les répliques ayant une longueur de suffixe commun identique sont choisies aléatoirement. En particulier, lorsqu’aucune réplique ne partage de suffixe avec le nom d’hôte local (toutes les longueurs de suffixe commun sont nulles), cette stratégie se comporte exactement comme random.
Dans l’ordre
First or Random
first_or_random résout le problème de l’algorithme in_order. Avec in_order, si une réplique tombe en panne, la suivante reçoit une charge doublée, tandis que les autres répliques continuent de gérer le volume de trafic habituel. Avec l’algorithme first_or_random, la charge est répartie uniformément entre les répliques encore disponibles.
Il est possible de définir explicitement quelle est la première réplique à l’aide du paramètre load_balancing_first_offset. Cela permet de mieux contrôler le rééquilibrage de la charge des requêtes entre les répliques.
Round Robin
round_robin sont prises en compte).
load_balancing_first_offset
load_marks_asynchronously
1.
local_filesystem_read_method
local_filesystem_read_prefetch
lock_acquire_timeout
DEADLOCK_AVOIDED.
Valeurs possibles :
- Entier positif (en secondes).
- 0 — Aucun délai d’expiration du verrouillage.
log_comment
log_comment de la table system.query_log, ainsi que le texte de commentaire du journal du serveur.
Il peut être utilisé pour améliorer la lisibilité des journaux du serveur. En outre, il permet de sélectionner les requêtes liées au test dans system.query_log après l’exécution de clickhouse-test.
Valeurs possibles :
- Toute chaîne de longueur inférieure ou égale à max_query_size. Si la valeur dépasse max_query_size, le serveur lève une exception.
log_formatted_queries
formatted_query de system.query_log).
Valeurs possibles :
- 0 — Les requêtes formatées ne sont pas enregistrées dans la table système.
- 1 — Les requêtes formatées sont enregistrées dans la table système.
log_processors_profiles
system.processors_profile_log le temps passé par le processeur à s’exécuter ou à attendre des données.
Voir aussi :
log_profile_events
log_queries
log_queries_cut_to_length
log_queries_min_query_duration_ms
long_query_time pour le journal des requêtes lentes de MySQL), ce qui signifie, en pratique, que vous ne les trouverez pas dans les tables suivantes :
system.query_logsystem.query_thread_log
-
QUERY_FINISH -
EXCEPTION_WHILE_PROCESSING - Type : millisecondes
- Valeur par défaut : 0 (toute requête)
log_queries_min_type
query_log.
Valeurs possibles :
QUERY_START(=1)QUERY_FINISH(=2)EXCEPTION_BEFORE_START(=3)EXCEPTION_WHILE_PROCESSING(=4)
query_log ; par exemple, si vous ne vous intéressez qu’aux erreurs, vous pouvez utiliser EXCEPTION_WHILE_PROCESSING :
log_queries_probability
- 0 — Les requêtes ne sont pas enregistrées dans les tables système.
- Nombre à virgule flottante positif compris dans l’intervalle [0..1]. Par exemple, si la valeur du paramètre est
0.5, environ la moitié des requêtes sont enregistrées dans les tables système. - 1 — Toutes les requêtes sont enregistrées dans les tables système.
log_query_settings
query_log et dans le journal des spans OpenTelemetry.
log_query_threads
true. Les threads des requêtes exécutées par ClickHouse lorsque ce paramètre est activé sont journalisés selon les règles définies par le paramètre de configuration du serveur query_thread_log.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
log_query_views
low_cardinality_allow_in_native_format
LowCardinality est limitée, serveur ClickHouse convertit les colonnes LowCardinality en colonnes ordinaires pour les requêtes SELECT, et les colonnes ordinaires en colonnes LowCardinality pour les requêtes INSERT.
Ce paramètre est principalement nécessaire pour les clients tiers qui ne prennent pas en charge le type de données LowCardinality.
Valeurs possibles :
- 1 — L’utilisation de
LowCardinalityn’est pas limitée. - 0 — L’utilisation de
LowCardinalityest limitée.
low_cardinality_max_dictionary_size
- Tout entier positif.
low_cardinality_use_single_dictionary_for_part
low_cardinality_use_single_dictionary_for_part = 1.
Valeurs possibles :
- 1 — La création de plusieurs dictionnaires pour la partie de données est interdite.
- 0 — La création de plusieurs dictionnaires pour la partie de données n’est pas interdite.
low_priority_query_wait_time_ms
priority), les requêtes de faible priorité attendent la fin des requêtes de priorité plus élevée. Ce paramètre définit cette durée d’attente.
make_distributed_plan
materialize_skip_indexes_on_insert
materialize_statistics_on_insert
materialize_ttl_after_modify
materialized_views_ignore_errors
SELECT ou dans le sink de la table interne) sont consignées comme avertissement, et l’instruction INSERT réussit. S’il est désactivé (par défaut), une telle exception se propage et l’instruction INSERT échoue.
Ce paramètre contrôle uniquement le signalement des erreurs. Il n’annule pas une écriture dans la table source et ne garantit pas non plus que le block d’origine ait déjà été validé dans la table source lorsqu’une erreur survient dans le pipeline d’une vue dépendante. Lorsqu’il est désactivé (par défaut), l’INSERT échoue en cas d’erreur sur une vue — relancez-le avec la déduplication d’insertion (insert_deduplicate, deduplicate_blocks_in_dependent_materialized_views) pour une livraison exactly-once vers la table source et toutes les vues dépendantes. Lorsqu’il est activé, l’INSERT est signalé comme réussi malgré une livraison partielle aux vues en échec et à leurs chaînes en aval ; n’utilisez ce mode que lorsque les écritures dans la table source ne doivent pas être bloquées par des problèmes côté vue (par exemple, les tables system.*_log). Consultez la documentation CREATE VIEW pour obtenir la sémantique complète.
materialized_views_squash_parallel_inserts
parallel_view_processing est activé, la requête INSERT générera une part dans la table de destination pour chaque max_insert_thread.
max_analyze_depth
max_ast_depth
À l’heure actuelle, cette profondeur n’est pas contrôlée lors de l’analyse syntaxique, mais seulement après l’analyse de la requête.
Cela signifie qu’un arbre syntaxique trop profond peut être créé pendant l’analyse syntaxique,
mais la requête échouera.
max_ast_elements
À l’heure actuelle, cette limite n’est pas vérifiée lors de l’analyse syntaxique, mais seulement après l’analyse de la requête.
Cela signifie qu’un arbre syntaxique trop profond peut être créé pendant l’analyse syntaxique,
mais que la requête échouera.
max_autoincrement_series
generateSerialID.
Chaque série représentant un nœud dans Keeper, il est recommandé de ne pas en avoir plus de quelques millions.
bande_passante_max_backup
max_block_size
max_block_size indique le nombre maximal recommandé de lignes à inclure dans un bloc unique lors du chargement de données à partir de tables. Des blocs de la taille de max_block_size ne sont pas toujours chargés depuis la table : si ClickHouse détermine qu’il faut récupérer moins de données, un bloc plus petit est traité.
La taille du bloc ne doit pas être trop petite, afin d’éviter des surcoûts notables lors du traitement de chaque bloc. Elle ne doit pas non plus être trop grande, afin de garantir que les requêtes avec une clause LIMIT s’exécutent rapidement après le traitement du premier bloc. Lors du paramétrage de max_block_size, l’objectif est d’éviter une consommation excessive de mémoire lors de l’extraction d’un grand nombre de colonnes dans plusieurs threads, tout en préservant au moins un certain degré de localité de cache.
max_bytes_before_external_group_by
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é.
Si l’utilisation de la mémoire lors des opérations GROUP BY dépasse ce seuil en octets,
activez le mode d’« agrégation externe » (écriture des données intermédiaires sur le disque).La valeur recommandée est la moitié de la mémoire système disponible.
max_bytes_before_external_join
join_algorithm vaut hash, parallel_hash, default ou auto, le hash join sera automatiquement converti en grace hash join afin d’autoriser le spilling sur disque lorsque les données du côté droit 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 le spilling 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 spilling automatique. Cela empêche l’optimisation de lecture ordonnée via join.
max_bytes_before_external_sort
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
max_bytes_for_lazy_final
max_bytes_in_distinct
max_bytes_in_join
join_algorithm choisi — consultez ce paramètre pour connaître le comportement propre à chaque algorithme (spill, repartitionnement, switch, 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
max_bytes_ratio_before_external_group_by
GROUP BY. Une fois cette limite atteinte,
la mémoire externe est utilisée pour l’agrégation.
Par exemple, si elle 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, puis il
commencera à utiliser l’agrégation externe.
max_bytes_ratio_before_external_join
JOIN. Une fois ce seuil atteint, le hash join est converti en grace hash join afin de décharger sur disque les données du côté droit.
Par exemple, si la valeur est définie sur 0.6, JOIN autorisera l’utilisation de 60% de la mémoire disponible (pour server/user/merges) pour la table de hachage du côté droit au début de l’exécution ; au-delà, le spilling sur disque commence.
Si max_bytes_before_external_join et max_bytes_ratio_before_external_join sont tous deux définis, le plus petit seuil obtenu est utilisé. Si le ratio est 0, seul le paramètre absolu s’applique.
N’a d’effet que lorsque join_algorithm vaut hash, parallel_hash, default ou auto, et qu’un chemin de données temporaires est configuré.
max_bytes_ratio_before_external_sort
ORDER BY. Une fois cette limite atteinte, un tri externe est utilisé.
Par exemple, si cette valeur est définie sur 0.6, ORDER BY pourra utiliser 60% de la mémoire disponible (pour le serveur/l’utilisateur/les fusions) au début de l’exécution ; ensuite, il commencera à utiliser un tri externe.
Notez que max_bytes_before_external_sort est toujours respecté : le spilling sur disque n’a lieu que si le bloc de tri est plus grand que max_bytes_before_external_sort.
max_bytes_to_read
max_bytes_to_read_leaf
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é.
Ce paramètre est instable avec
prefer_localhost_replica=1.max_bytes_to_sort
sort_overflow_mode, qui est défini par défaut sur throw.
max_bytes_to_transfer
max_columns_to_read
0 signifie qu’il n’y a pas de limite.
max_compress_block_size
Il s’agit d’un paramètre de niveau expert, et vous ne devriez pas le modifier si vous débutez avec ClickHouse.
max_concurrent_queries_for_all_users
max_concurrent_queries_for_all_users peut être défini sur 99 pour tous les utilisateurs, et l’administrateur de la base de données peut le définir sur 100 pour lui-même afin de pouvoir exécuter des requêtes d’investigation même lorsque le serveur est surchargé.
La modification de ce paramètre pour une requête ou un utilisateur n’affecte pas les autres requêtes.
Valeurs possibles :
- Entier positif.
- 0 — Aucune limite.
1000.
max_concurrent_queries_for_user
- Entier positif.
- 0 — Aucune limite.
max_consume_snapshots
max_distributed_connections
max_distributed_depth
- Entier positif.
- 0 — Profondeur illimitée.
max_download_buffer_size
max_download_threads
max_estimated_execution_time
timeout_before_checking_execution_speed.
max_execution_speed
timeout_before_checking_execution_speed
expire. Si la vitesse d’exécution est trop élevée, elle sera réduite.
max_execution_speed_bytes
timeout_before_checking_execution_speed
expire. Si la vitesse d’exécution est trop élevée, elle sera réduite.
max_execution_time
max_execution_time peut être un peu délicat à comprendre.
Il fonctionne à partir d’une interpolation relative à la vitesse d’exécution actuelle de la requête
(ce comportement est contrôlé par timeout_before_checking_execution_speed).
ClickHouse interrompt une requête si le temps d’exécution estimé dépasse la valeur
de max_execution_time spécifiée. Par défaut, timeout_before_checking_execution_speed
est défini sur 10 secondes. Cela signifie qu’après 10 secondes d’exécution de la requête, ClickHouse
commence à estimer le temps d’exécution total. Si, par exemple, max_execution_time
est défini sur 3600 secondes (1 heure), ClickHouse arrête la requête si la durée estimée
dépasse cette limite de 3600 secondes. Si vous définissez timeout_before_checking_execution_speed
sur 0, ClickHouse utilisera le temps écoulé comme base pour max_execution_time.
Si le temps d’exécution de la requête dépasse le nombre de secondes spécifié, le comportement est
déterminé par timeout_overflow_mode, qui est défini par défaut sur throw.
Le délai d’expiration n’est vérifié, et la requête ne peut donc s’arrêter, qu’à certains points précis du traitement des données.
Actuellement, elle ne peut pas s’arrêter pendant la fusion des états d’agrégation ni pendant l’analyse de la requête,
et le temps d’exécution réel sera supérieur à la valeur de ce paramètre.
max_execution_time_leaf
max_execution_time, mais
s’applique uniquement aux nœuds feuilles pour les requêtes distribuées ou distantes.
Par exemple, si nous voulons limiter le temps d’exécution sur un nœud feuille à 10s sans
imposer de limite sur le nœud initial, au lieu de définir max_execution_time dans les
paramètres de la sous-requête imbriquée :
max_execution_time_leaf dans les paramètres de la requête :
max_expanded_ast_elements
max_fetch_partition_retries_count
max_final_threads
SELECT avec le modificateur FINAL.
Valeurs possibles :
- Entier positif.
- 0 ou 1 — Désactivé. Les requêtes
SELECTsont exécutées sur un seul thread.
max_http_get_redirects
10.
max_hyperscan_regexp_length
- Entier positif.
- 0 - La longueur n’est pas limitée.
max_hyperscan_regexp_total_length
- Entier positif.
- 0 - La longueur n’est pas limitée.
max_insert_block_size
max_insert_block_size_rows
La taille maximale des blocs (en nombre de lignes) à former pour l’insertion dans une table.
Ce paramètre contrôle la formation des blocs dans deux contextes :
-
Analyse des formats : lorsque le serveur analyse des formats d’entrée basés sur les lignes (CSV, TSV, JSONEachRow, etc.) depuis n’importe quelle interface (HTTP, clickhouse-client avec des données intégrées, gRPC, protocole wire PostgreSQL), les blocs sont émis lorsque :
- Les deux seuils min_insert_block_size_rows AND min_insert_block_size_bytes sont atteints, OR
- L’un des seuils max_insert_block_size_rows OR max_insert_block_size_bytes est atteint
-
Opérations INSERT : pendant les requêtes INSERT et lorsque les données transitent par des vues matérialisées, le comportement de ce paramètre dépend de
use_strict_insert_block_limits:-
Lorsqu’il est activé : les blocs sont émis lorsque :
- Seuils minimums (AND) : les deux seuils min_insert_block_size_rows AND min_insert_block_size_bytes sont atteints
- Seuils maximums (OR) : l’un des seuils max_insert_block_size_rows OR max_insert_block_size_bytes est atteint
- Lorsqu’il est désactivé : les blocs sont émis lorsque min_insert_block_size_rows OR min_insert_block_size_bytes est atteint. Les paramètres max_insert_block_size ne sont pas appliqués.
-
Lorsqu’il est activé : les blocs sont émis lorsque :
- Entier positif.
max_insert_block_size_bytes
- Entier positif.
- 0 — le paramètre ne participe pas à la formation des blocs.
max_insert_delayed_streams_for_parallel_write
50.
max_insert_threads
INSERT SELECT.
Valeurs possibles :
- 0 (ou 1) — aucune exécution en parallèle de
INSERT SELECT. - Entier positif, supérieur à 1.
1pour les nœuds disposant de 8 Gio de mémoire2pour les nœuds disposant de 16 Gio de mémoire4pour les nœuds plus grands
INSERT SELECT n’a d’effet que si la partie SELECT est elle aussi exécutée en parallèle ; voir le paramètre max_threads.
Des valeurs plus élevées entraînent une utilisation de la mémoire plus importante.
max_insert_threads_min_free_memory_per_thread
max_threads_min_free_memory_per_thread, mais appliqué à max_insert_threads au lieu de max_threads. La valeur par défaut est plus élevée, car les pipelines d’insertion utilisent généralement des tampons par thread plus volumineux (parties MergeTree, blocs de compression) que les pipelines de lecture.
Si la quantité de mémoire libre est inférieure à max_insert_threads multiplié par cette valeur, max_insert_threads est réduit en conséquence, avec un minimum de 1.
Définissez cette valeur sur 0 pour désactiver cette limite.
max_joined_block_size_bytes
max_joined_block_size_rows
max_limit_for_vector_search_queries
max_local_read_bandwidth
max_local_write_bandwidth
max_memory_usage
0 signifie qu’il n’y a pas de limite.
Ce paramètre ne tient pas compte de la quantité de mémoire disponible ni de la quantité totale
de mémoire sur la machine. La restriction s’applique à une seule requête sur un
seul serveur.
Vous pouvez utiliser SHOW PROCESSLIST pour voir la consommation de mémoire actuelle de chaque requête.
Le pic de consommation mémoire est suivi pour chaque requête et consigné dans le journal.
L’utilisation de la mémoire n’est pas entièrement suivie pour les états des fonctions d’agrégation suivantes
lorsque leurs arguments sont de type String et Array :
minmaxanyanyLastargMinargMax
max_memory_usage_for_user
et max_server_memory_usage.
max_memory_usage_for_user
max_memory_usage_for_user = 0).
Voir aussi la description de max_memory_usage.
Par exemple, si vous souhaitez définir max_memory_usage_for_user à 1000 octets pour un utilisateur nommé clickhouse_read, vous pouvez utiliser l’instruction
getSetting :
max_network_bandwidth
- Entier positif.
- 0 — Le contrôle de la bande passante est désactivé.
max_network_bandwidth_for_all_users
- Entier positif.
- 0 — Le contrôle du débit des données est désactivé.
max_network_bandwidth_for_user
- Entier positif.
- 0 — Le contrôle du débit des données est désactivé.
max_network_bytes
- Entier positif.
- 0 — Le contrôle du volume de données est désactivé.
max_number_of_partitions_for_independent_aggregation
max_os_cpu_wait_time_ratio_to_throw
max_parallel_replicas
- Entier positif.
Traitement parallèle avec la clé SAMPLE
- La position de la clé d’échantillonnage dans la clé de partitionnement ne permet pas d’effectuer efficacement des parcours de plages.
- L’ajout d’une clé d’échantillonnage à la table rend moins efficace le filtrage sur d’autres colonnes.
- La clé d’échantillonnage est une expression coûteuse à calculer.
- La distribution de la latence du cluster a une longue traîne, de sorte qu’interroger davantage de serveurs augmente la latence globale de la requête.
Traitement parallèle avec parallel_replicas_custom_key
max_parser_backtracks
max_parser_depth
- Entier positif.
- 0 — La profondeur de récursion est illimitée.
max_parsing_threads
max_partition_size_to_drop
0 signifie que vous pouvez supprimer des partitions sans aucune restriction.
Valeur par défaut Cloud : 1 TB.
Ce paramètre de requête remplace le paramètre serveur équivalent, voir max_partition_size_to_drop
max_partitions_per_insert_block
- Entier positif.
0— Nombre illimité de partitions.
max_partitions_per_insert_block, ClickHouse consigne soit un avertissement, soit lève une
exception selon throw_on_max_partitions_per_insert_block. Les exceptions ont
le texte suivant :
“Trop de partitions pour un seul bloc INSERT (partitions_count partitions, la limite est ” + toString(max_partitions) + ”).
La limite est contrôlée par le paramètre ‘max_partitions_per_insert_block’.
Un grand nombre de partitions est une erreur de conception fréquente. Cela entraînera un
fort impact négatif sur les performances, notamment un démarrage lent du serveur, des requêtes
INSERT lentes et des requêtes SELECT lentes. Le nombre total recommandé de partitions pour une table est
inférieur à 1000..10000. Veuillez noter que le partitionnement n’est pas destiné à accélérer
les requêtes SELECT (la clé ORDER BY suffit à rendre les requêtes par plage rapides).
Les partitions sont destinées à la manipulation des données (DROP PARTITION, etc.).”
Ce paramètre constitue un seuil de sécurité, car l’utilisation d’un grand nombre de partitions est une erreur de conception fréquente.
max_partitions_to_read
- Entier positif
-1- illimité (par défaut)
Vous pouvez également spécifier le paramètre MergeTree
max_partitions_to_read dans les paramètres de la table.max_parts_to_move
max_projection_rows_to_use_projection_index
max_query_size
max_query_size ne peut pas être défini dans une requête SQL (par ex., SELECT now() SETTINGS max_query_size=10000) car ClickHouse doit allouer un buffer pour analyser la requête, et la taille de ce buffer est déterminée par le paramètre max_query_size, qui doit être configuré avant l’exécution de la requête.max_rand_distribution_parameter
randChiSquared, randStudentT et randFisherF. Cela évite des temps de calcul excessivement longs avec des valeurs de paramètres extrêmes.
max_rand_distribution_trials
randBinomial et randNegativeBinomial. Cela évite des temps de calcul extrêmement longs lorsque le nombre d’essais est très élevé.
max_read_buffer_size
max_read_buffer_size_local_fs
max_read_buffer_size sera utilisé.
max_read_buffer_size_remote_fs
max_read_buffer_size sera utilisé.
max_recursive_cte_evaluation_depth
max_remote_read_network_bandwidth
max_remote_write_network_bandwidth
max_replica_delay_for_distributed_queries
- Entier positif.
- 0 — Le retard des répliques n’est pas vérifié.
SELECT sur une table distribuée pointant vers des tables répliquées.
max_result_bytes
max_result_rows
0.
Limite le nombre de lignes du résultat. Cette limite est également vérifiée pour les sous-requêtes, ainsi que sur les serveurs distants lors de l’exécution de parties d’une requête distribuée.
Aucune limite n’est appliquée lorsque la valeur est 0.
La requête s’arrête après le traitement d’un bloc de données si le seuil est atteint, mais
le dernier bloc du résultat n’est pas tronqué. La taille du résultat peut donc être
supérieure au seuil.
max_reverse_dictionary_lookup_cache_size_bytes
dictGetKeys. Le cache stocke des tuples de clés sérialisés par valeur d’attribut afin d’éviter de parcourir à nouveau le dictionnaire au sein d’une même requête. Lorsque la limite est atteinte, les entrées sont évacuées selon la politique LRU. Définissez cette valeur sur 0 pour désactiver la mise en cache.
max_rows_for_lazy_final
max_rows_in_distinct
max_rows_in_join
join_algorithm choisi — voir ce paramètre pour le comportement propre à chaque algorithme (spill, repartitionnement, basculement ou throw/break selon join_overflow_mode).
Valeurs possibles :
- Entier positif.
0— Nombre de lignes illimité.
max_rows_in_set
max_rows_in_set_to_optimize_join
- 0 — Désactiver.
- Tout entier positif.
max_rows_to_group_by
throw, mais peut aussi être basculé
vers un mode GROUP BY approximatif.
max_rows_to_read
max_rows_to_read_leaf
max_rows_to_read=150 échouera, car le total sera de 200 lignes. Une requête avec max_rows_to_read_leaf=150 aboutira, puisque les nœuds feuille liront au maximum 100 lignes.
La restriction est vérifiée pour chaque fragment de données traité.
Ce paramètre est instable avec
prefer_localhost_replica=1.max_rows_to_sort
sort_overflow_mode, qui est défini par défaut sur throw.
max_rows_to_transfer
max_sessions_for_user
- Entier positif
0- nombre illimité de sessions simultanées (par défaut)
max_size_to_preallocate_for_aggregation
max_size_to_preallocate_for_joins
skip_unavailable_shards est activé, ce paramètre limite le nombre maximal de shards pouvant être ignorés silencieusement.
Si le nombre de shards indisponibles dépasse cette valeur, une exception est levée au lieu de les ignorer silencieusement.
Une valeur de 0 signifie qu’il n’y a pas de limite (comportement par défaut — tous les shards indisponibles peuvent être ignorés).
Lorsque skip_unavailable_shards est activé, limite la proportion maximale (de 0 à 1) de shards pouvant être ignorés silencieusement.
Si la proportion de shards indisponibles par rapport au nombre total de shards dépasse cette valeur, une exception est levée au lieu de les ignorer silencieusement.
Une valeur de 0 signifie qu’il n’y a pas de limite (comportement par défaut — tous les shards indisponibles peuvent être ignorés).
max_streams_for_files_processing_in_cluster_functions
max_streams_for_merge_tree_reading
max_streams_for_union_step
UNION (s’applique à la fois à UNION ALL et à UNION DISTINCT, car UNION DISTINCT est implémenté via une étape UNION ALL suivie d’une étape DISTINCT). Lorsqu’une requête UNION comporte de nombreuses sous-requêtes, elles ouvrent toutes leurs tampons de lecture en même temps, ce qui entraîne une utilisation de la mémoire proportionnelle au nombre de sous-requêtes. Ce paramètre insère des processeurs Concat pour resserrer le pipeline afin qu’au plus ce nombre de flux soit actif à un instant donné, réduisant ainsi fortement le pic de mémoire. La limite réelle est le minimum entre cette valeur et max_threads * max_streams_for_union_step_to_max_threads_ratio (si l’une ou l’autre vaut 0, elle est ignorée). Lorsque les deux valent 0, aucun resserrement n’est appliqué. La limite n’est pas non plus appliquée lorsque le plan de requête exige que chaque flux de sortie du UNION reste trié individuellement (par exemple, lorsque l’optimisation de lecture dans l’ordre est appliquée au UNION) ; dans ce cas, le respect de l’ordre prévaut et le resserrement est ignoré.
max_streams_for_union_step_to_max_threads_ratio
max_threads, détermine une limite du nombre de flux actifs simultanément dans une étape UNION (s’applique à la fois à UNION ALL et à UNION DISTINCT). La limite réelle est le minimum entre cette valeur calculée et max_streams_for_union_step (si l’un des deux vaut 0, il est ignoré). Par exemple, avec max_threads = 8 et ce ratio défini sur 1, au plus 8 flux seront actifs. Définissez-le sur 0 pour désactiver cette limite basée sur le ratio. Comme pour max_streams_for_union_step, la limite n’est pas appliquée lorsque le plan de requête exige que chaque flux de sortie du UNION reste trié individuellement.
max_streams_multiplier_for_merge_tables
max_streams_to_max_threads_ratio
max_subquery_depth
max_table_size_to_drop
0 signifie que vous pouvez supprimer toutes les tables sans aucune restriction.
Valeur par défaut dans Cloud : 1 TB.
Ce paramètre de requête remplace le paramètre de serveur équivalent. Voir max_table_size_to_drop
max_temporary_columns
0 signifie qu’il n’y a pas de limite.
max_temporary_data_on_disk_size_for_query
- Entier positif.
0— illimité (par défaut)
max_temporary_data_on_disk_size_for_user
- Entier positif.
0— illimité (par défaut)
max_temporary_non_const_columns
max_temporary_columns, il s’agit du nombre maximal de colonnes temporaires à conserver simultanément en RAM lors de l’exécution d’une requête, sans compter les colonnes constantes.
Des colonnes constantes sont assez fréquemment générées lors de l’exécution d’une requête, mais elles ne nécessitent pratiquement aucune ressource de calcul.
max_threads
WHERE et de pré-agréger pour GROUP BY en utilisant au moins ‘max_threads’ threads, alors ‘max_threads’ threads sont utilisés.
Pour les requêtes qui se terminent rapidement à cause d’un LIMIT, vous pouvez définir une valeur plus faible pour ‘max_threads’.
Par exemple, si le nombre nécessaire d’entrées se trouve dans chaque bloc et que max_threads = 8, alors 8 blocs sont récupérés, alors qu’il aurait suffi d’en lire un seul.
Plus la valeur de max_threads est faible, moins la mémoire consommée est importante.
Par défaut, le paramètre max_threads correspond au nombre de threads matériels (nombre de cœurs CPU) disponibles pour ClickHouse.
Cas particulier : pour les processeurs x86 disposant de moins de 32 cœurs CPU et du SMT (par ex. Intel HyperThreading), ClickHouse utilise par défaut le nombre de cœurs logiques (= 2 x le nombre de cœurs physiques).
Sans SMT (par ex. Intel HyperThreading), cela correspond au nombre de cœurs CPU.
Pour les utilisateurs de ClickHouse Cloud, la valeur par défaut s’affiche sous la forme auto(N), où N correspond à la taille vCPU de votre service, par ex. 2vCPU/8GiB, 4vCPU/16GiB, etc.
Consultez l’onglet Settings dans la Cloud Console pour obtenir la liste de toutes les tailles de service.
max_threads_for_indexes
max_threads_min_free_memory_per_thread
max_threads lorsque le serveur est sous pression mémoire, afin d’éviter de lancer des requêtes fortement parallèles susceptibles d’atteindre la limite de mémoire.
La mémoire libre est calculée comme max_server_memory_usage du serveur moins la mémoire actuellement suivie par le memory tracker global. Si cette mémoire libre est inférieure à max_threads multiplié par cette valeur, max_threads est réduit au plus grand N tel que N * value <= free_memory, avec un minimum de 1.
Définissez cette valeur sur 0 pour désactiver cette limite.
Par exemple, avec la valeur par défaut de 1 GiB et 32 GiB de mémoire libre, max_threads est plafonné à 32 ; avec 1 GiB de mémoire libre, il retombe à 1.
Ce paramètre s’applique au parallélisme côté lecture (SELECT, UNION, INTERSECT/EXCEPT et la partie SELECT de INSERT ... SELECT). Pour le côté écriture, voir max_insert_threads_min_free_memory_per_thread.
max_untracked_memory
max_wkb_geometry_elements
readWKB et les fonctions associées. Cela protège contre des allocations mémoire excessives causées par des données WKB malformées. Définissez cette valeur sur 0 pour utiliser la limite codée en dur (100 millions).
memory_overcommit_ratio_denominator
memory_overcommit_ratio_denominator_for_user
memory_profiler_sample_max_allocation_size
memory_profiler_sample_probability. 0 signifie que le paramètre est désactivé. Vous pouvez définir max_untracked_memory sur 0 pour que ce seuil fonctionne comme prévu.
memory_profiler_sample_min_allocation_size
memory_profiler_sample_probability. 0 signifie que le paramètre est désactivé. Vous pouvez définir ‘max_untracked_memory’ sur 0 afin que ce seuil fonctionne comme prévu.
memory_profiler_sample_probability
memory_profiler_sample_min_allocation_size et memory_profiler_sample_max_allocation_size). Notez que l’échantillonnage n’a lieu que lorsque la quantité de mémoire non suivie dépasse ‘max_untracked_memory’. Vous pouvez définir ‘max_untracked_memory’ sur 0 pour obtenir un échantillonnage encore plus fin.
memory_profiler_step
- Un nombre entier positif d’octets.
- 0 pour désactiver le profileur mémoire.
memory_tracker_fault_probability
exception safety, lever une exception chaque fois que vous allouez de la mémoire, selon la probabilité spécifiée.
memory_usage_overcommit_max_wait_microseconds
merge_table_max_tables_to_look_for_schema_inference
Merge sans schéma explicite, ou lors de l’utilisation de la fonction de table merge, le schéma est déduit comme l’union d’au plus le nombre spécifié de tables correspondantes.
Si le nombre de tables est supérieur, le schéma sera déduit à partir des premières tables, dans la limite du nombre spécifié.
merge_tree_coarse_index_granularity
merge_tree_coarse_index_granularity sous-plages et y recherche récursivement les clés recherchées.
Valeurs possibles :
- Tout entier pair positif.
merge_tree_compact_parts_min_granules_to_multibuffer_read
merge_tree_determine_task_size_by_prewhere_columns
merge_tree_max_bytes_to_use_cache
merge_tree_max_bytes_to_use_cache octets au cours d’une requête, il n’utilise pas le cache des blocs non compressés.
Le cache des blocs non compressés stocke les données extraites pour les requêtes. ClickHouse utilise ce cache pour accélérer les réponses aux petites requêtes répétées. Ce paramètre évite que le cache soit pollué par des requêtes qui lisent un grand volume de données. Le paramètre serveur uncompressed_cache_size définit la taille du cache des blocs non compressés.
Valeurs possibles :
- Tout entier positif.
merge_tree_max_rows_to_use_cache
merge_tree_max_rows_to_use_cache lignes dans une seule requête, il n’utilise pas le cache des blocs non compressés.
Le cache des blocs non compressés stocke les données extraites pour les requêtes. ClickHouse utilise ce cache pour accélérer les réponses aux petites requêtes répétées. Ce paramètre évite que le cache soit perturbé par des requêtes qui lisent un grand volume de données. Le paramètre de serveur uncompressed_cache_size définit la taille du cache des blocs non compressés.
Valeurs possibles :
- Tout entier positif.
merge_tree_min_bytes_for_concurrent_read
merge_tree_min_bytes_for_concurrent_read, ClickHouse tente alors de lire ce fichier de manière concurrente à l’aide de plusieurs threads.
Valeur possible :
- Entier positif.
merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem
- Entier positif.
merge_tree_min_bytes_for_seek
merge_tree_min_bytes_for_seek octets, ClickHouse lit alors séquentiellement une plage du fichier contenant les deux blocs, évitant ainsi une opération de seek supplémentaire.
Valeurs possibles :
- Tout entier positif.
merge_tree_min_bytes_per_task_for_remote_reading
filesystem_prefetch_min_bytes_for_single_read_task
Nombre minimal d’octets à lire par tâche.
merge_tree_min_read_task_size
merge_tree_min_rows_for_concurrent_read
merge_tree_min_rows_for_concurrent_read, ClickHouse tente alors d’effectuer une lecture concurrente de ce fichier sur plusieurs threads.
Valeurs possibles :
- Entier positif.
merge_tree_min_rows_for_concurrent_read_for_remote_filesystem
- Entier positif.
merge_tree_min_rows_for_seek
merge_tree_min_rows_for_seek lignes, ClickHouse n’effectue pas de seek dans le fichier, mais lit les données de manière séquentielle.
Valeurs possibles :
- Tout entier positif.
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability
PartsSplitter : scinde les plages de lecture en plages qui se chevauchent et en plages qui ne se chevauchent pas à chaque lecture depuis MergeTree, selon la probabilité spécifiée.
merge_tree_storage_snapshot_sleep_ms
- 0 - Aucun délai (par défaut)
- N - Délai en millisecondes
merge_tree_use_const_size_tasks_for_remote_reading
merge_tree_use_deserialization_prefixes_cache
merge_tree_use_prefixes_deserialization_thread_pool
max_prefixes_deserialization_thread_pool_size.
merge_tree_use_v1_object_and_dynamic_serialization
metrics_perf_events_enabled
metrics_perf_events_list
min_bytes_to_use_direct_io
min_bytes_to_use_direct_io octets, ClickHouse lit alors les données depuis le disque de stockage avec l’option O_DIRECT.
Valeurs possibles :
- 0 — Les E/S directes sont désactivées.
- Entier positif.
min_bytes_to_use_mmap_io
- Entier positif.
- 0 — Les gros fichiers sont lus uniquement en copiant les données du noyau vers l’espace utilisateur.
min_chunk_bytes_for_parallel_parsing
- Type : entier non signé
- Valeur par défaut : 1 MiB
min_compress_block_size
min_compress_block_size. Par défaut, 65 536.
La taille réelle du bloc, si les données non compressées sont inférieures à max_compress_block_size, n’est inférieure ni à cette valeur, ni au volume de données correspondant à un repère.
Prenons un exemple. Supposons que index_granularity ait été défini sur 8192 lors de la création de la table.
Nous écrivons une colonne de type UInt32 (4 octets par valeur). Lors de l’écriture de 8192 lignes, cela représente un total de 32 Ko de données. Comme min_compress_block_size = 65 536, un bloc compressé sera formé tous les deux repères.
Nous écrivons une colonne URL de type String (taille moyenne de 60 octets par valeur). Lors de l’écriture de 8192 lignes, cela représente en moyenne un peu moins de 500 Ko de données. Comme cette valeur dépasse 65 536, un bloc compressé sera formé pour chaque repère. Dans ce cas, lors de la lecture des données sur le disque dans la plage d’un seul repère, aucune donnée supplémentaire ne devra être décompressée.
Il s’agit d’un paramètre destiné aux utilisateurs expérimentés, et vous ne devriez pas le modifier si vous débutez avec ClickHouse.
min_count_to_compile_aggregate_expression
- Entier positif.
- 0 — Les expressions d’agrégation identiques sont toujours compilées en JIT.
min_count_to_compile_expression
min_count_to_compile_sort_description
min_execution_speed
timeout_before_checking_execution_speed
expire. Si la vitesse d’exécution est inférieure, une exception est levée.
min_execution_speed_bytes
timeout_before_checking_execution_speed
expire. Si la vitesse d’exécution est inférieure, une exception est levée.
min_external_table_block_size_bytes
min_external_table_block_size_rows
min_filtered_ratio_for_lazy_final
min_free_disk_bytes_to_perform_insert
min_free_disk_ratio_to_perform_insert
min_free_disk_space_for_temporary_data
min_hit_rate_to_use_consecutive_keys_optimization
min_insert_block_size_bytes
- Entier positif.
- 0 — le paramètre n’intervient pas dans la formation des blocs.
min_insert_block_size_bytes_for_materialized_views
INSERT. Les blocs plus petits sont regroupés en blocs plus grands. Ce paramètre s’applique uniquement aux blocs insérés dans une vue matérialisée. En ajustant ce paramètre, vous contrôlez le regroupement des blocs lors de l’envoi vers la vue matérialisée et évitez une utilisation excessive de la mémoire.
Valeurs possibles :
- Tout entier positif.
- 0 — Regroupement désactivé.
min_insert_block_size_rows
-
Analyse des formats d’entrée : lorsque le serveur analyse des formats d’entrée orientés lignes (CSV, TSV, JSONEachRow, etc.) depuis n’importe quelle interface (HTTP, clickhouse-client avec des données intégrées, gRPC, PostgreSQL wire protocol), les blocs sont émis lorsque :
- Les deux seuils min_insert_block_size_rows AND min_insert_block_size_bytes sont atteints, OR
- L’un des deux seuils max_insert_block_size_rows OR max_insert_block_size_bytes est atteint
-
Opérations INSERT : pendant les requêtes INSERT et lorsque les données transitent par des vues matérialisées, le comportement de ce paramètre dépend de
use_strict_insert_block_limits:-
Lorsqu’il est activé : les blocs sont émis lorsque :
- Seuils min (AND) : les deux seuils min_insert_block_size_rows AND min_insert_block_size_bytes sont atteints
- Seuils max (OR) : l’un des deux seuils max_insert_block_size_rows OR max_insert_block_size_bytes est atteint
- Lorsqu’il est désactivé (par défaut) : les blocs sont émis lorsque min_insert_block_size_rows OR min_insert_block_size_bytes est atteint. Les paramètres max_insert_block_size ne sont pas pris en compte.
-
Lorsqu’il est activé : les blocs sont émis lorsque :
- Entier positif.
- 0 — le paramètre ne participe pas à la formation des blocs.
min_insert_block_size_rows_for_materialized_views
INSERT. Les blocs plus petits sont fusionnés en blocs plus grands. Ce paramètre s’applique uniquement aux blocs insérés dans une vue matérialisée. En ajustant ce paramètre, vous contrôlez la fusion des blocs lors de l’alimentation d’une vue matérialisée et évitez une utilisation excessive de la mémoire.
Valeurs possibles :
- Tout entier positif.
- 0 — Fusion désactivée.
min_joined_block_size_bytes
min_joined_block_size_rows
min_os_cpu_wait_time_ratio_to_throw
min_outstreams_per_resize_after_split
Resize ou StrictResize après l’exécution d’un fractionnement lors de la génération du pipeline. Si le nombre de flux résultant est inférieur à cette valeur, l’opération de fractionnement n’a pas lieu.
Qu’est-ce qu’un nœud Resize
Resize est un processeur du pipeline de requête qui ajuste le nombre de flux de données qui y circulent. Il peut augmenter ou diminuer le nombre de flux afin d’équilibrer la charge de travail entre plusieurs threads ou processeurs. Par exemple, si une requête nécessite davantage de parallélisme, le nœud Resize peut scinder un flux unique en plusieurs flux. À l’inverse, il peut fusionner plusieurs flux pour en réduire le nombre et regrouper le traitement des données.
Le nœud Resize garantit une répartition uniforme des données entre les flux, tout en préservant la structure des blocs de données. Cela permet d’optimiser l’utilisation des ressources et d’améliorer les performances des requêtes.
Pourquoi le nœud Resize doit être fractionné
status_mutex de ExecutingGraph::Node du nœud Resize, qui sert de point central, est fortement sujet à la contention, en particulier dans les environnements comportant un grand nombre de cœurs, ce qui entraîne :
- Une latence accrue pour
ExecutingGraph::updateNode, ce qui affecte directement les performances des requêtes. - Un gaspillage excessif de cycles CPU dans la contention sur le spin-lock (
native_queued_spin_lock_slowpath), ce qui dégrade l’efficacité. - Une utilisation réduite du CPU, ce qui limite le parallélisme et le débit.
Comment le nœud Resize est fractionné
- Le nombre de flux de sortie est vérifié afin de s’assurer que le fractionnement peut être effectué : les flux de sortie de chaque processeur issu du fractionnement atteignent ou dépassent le seuil
min_outstreams_per_resize_after_split. - Le nœud
Resizeest divisé en nœudsResizeplus petits, avec un nombre égal de ports, chacun gérant un sous-ensemble des flux d’entrée et de sortie. - Chaque groupe est traité indépendamment, ce qui réduit la contention sur les verrous.
Fractionnement d’un nœud Resize avec des entrées/sorties arbitraires
Resize après fractionnement, certaines entrées sont reliées à des NullSource et certaines sorties à des NullSink. Cela permet d’effectuer le fractionnement sans affecter le flux global de données.
Objectif du paramètre
min_outstreams_per_resize_after_split garantit que le fractionnement des nœuds Resize a du sens et évite de créer trop peu de flux, ce qui pourrait nuire à l’efficacité du traitement parallèle. En imposant un nombre minimal de flux de sortie, ce paramètre aide à maintenir un équilibre entre le parallélisme et le surcoût, afin d’optimiser l’exécution des requêtes dans les scénarios impliquant le fractionnement et la fusion de flux.
Désactivation du paramètre
Resize, définissez ce paramètre sur 0. Cela empêchera le fractionnement des nœuds Resize lors de la génération du pipeline, ce qui leur permettra de conserver leur structure d’origine sans être fractionnés en nœuds plus petits.
min_table_rows_to_use_projection_index
mongodb_throw_on_unsupported_query
move_all_conditions_to_prewhere
move_primary_key_columns_to_end_of_prewhere
multiple_joins_try_to_keep_original_names
mutations_execute_nondeterministic_on_initiator
true, les fonctions constantes non déterministes (par ex. la fonction now()) sont exécutées sur le nœud initiateur puis remplacées par des littéraux dans les requêtes UPDATE et DELETE. Cela permet de maintenir la synchronisation des données entre les répliques lors de l’exécution de mutations avec des fonctions constantes non déterministes. Valeur par défaut : false.
mutations_execute_subqueries_on_initiator
true, les sous-requêtes scalaires sont exécutées sur l’initiateur, puis remplacées par des littéraux dans les requêtes UPDATE et DELETE. Valeur par défaut : false.
mutations_max_literal_size_to_replace
UPDATE et DELETE. Ne prend effet que si au moins l’un des deux paramètres ci-dessus est activé. Valeur par défaut : 16384 (16 KiB).
mutations_sync
ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS (mutations).
Valeurs possibles :
mysql_datatypes_support_level
decimal, datetime64, date2Date32 ou date2String. Toutes les correspondances modernes (decimal, datetime64, date2Date32) sont activées par défaut.
decimal: convertit les typesNUMERICetDECIMALenDecimallorsque la précision le permet.datetime64: convertit les typesDATETIMEetTIMESTAMPenDateTime64au lieu deDateTimelorsque la précision n’est pas0.date2Date32: convertitDATEenDate32au lieu deDate. Prend le pas surdate2String.date2String: convertitDATEenStringau lieu deDate. Est surchargé pardatetime64.
mysql_map_fixed_string_to_text_in_show_columns
TEXT dans SHOW COLUMNS.
N’a d’effet que lorsque la connexion est établie via le MySQL wire protocol.
- 0 - Utiliser
BLOB. - 1 - Utiliser
TEXT.
mysql_map_string_to_text_in_show_columns
TEXT dans SHOW COLUMNS.
N’a d’effet que lorsque la connexion est établie via le MySQL wire protocol.
- 0 - Utiliser
BLOB. - 1 - Utiliser
TEXT.
mysql_max_rows_to_insert
network_compression_method
NONE— aucune compression.LZ4— utilise le codec LZ4.LZ4HC— utilise le codec LZ4HC.ZSTD— utilise le codec ZSTD.
network_zstd_compression_level
ZSTD.
Valeurs possibles :
- Entier positif compris entre 1 et 15.
normalize_function_names
number_of_mutations_to_delay
number_of_mutations_to_throw
odbc_bridge_connection_pool_size
odbc_bridge_use_connection_pooling
offset
- 0 — Aucune ligne n’est ignorée.
- Entier positif.
opentelemetry_start_keeper_trace_probability
- ‘auto’ - Équivaut au paramètre opentelemetry_start_trace_probability
- 0 — Le traçage est désactivé
- 0 à 1 — Probabilité (par ex. : 1.0 = toujours activé)
opentelemetry_start_trace_probability
- 0 — La trace est désactivée pour toutes les requêtes exécutées (si aucun contexte de trace parent n’est fourni).
- Nombre à virgule flottante positif dans l’intervalle [0..1]. Par exemple, si la valeur du paramètre est
0,5, ClickHouse peut démarrer une trace en moyenne pour la moitié des requêtes. - 1 — La trace est activée pour toutes les requêtes exécutées.
opentelemetry_trace_cpu_scheduling
opentelemetry_trace_processors
optimize_aggregation_in_order
- 0 — l’optimisation de
GROUP BYest désactivée. - 1 — l’optimisation de
GROUP BYest activée.
optimize_aggregators_of_group_by_keys
optimize_and_compare_chain
<, <=, >, >=, = ainsi que leurs combinaisons. Par exemple, (a < b) AND (b < c) AND (c < 5) deviendrait (a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5).
optimize_append_index
false.
Valeurs possibles :
- true, false
optimize_arithmetic_operations_in_aggregate_functions
optimize_const_name_size
- entier positif - longueur maximale du nom,
- 0 — toujours,
- entier négatif - jamais.
optimize_count_from_files
file/s3/url/hdfs/azureBlobStorage.
Valeurs possibles :
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_dictget_tuple_element
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 l’accès 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
optimize_distributed_group_by_sharding_key
GROUP BY sharding_key en évitant une agrégation coûteuse sur le serveur initiateur (ce qui réduira 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
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
- 0 — Désactivé.
- 1 — Activé.
À l’heure actuelle, ce réglage nécessite
optimize_skip_unused_shards (la raison est qu’il pourrait un jour être activé par défaut et ne fonctionner correctement que si les données ont été insérées via une table Distributed, c’est-à-dire si elles sont distribuées selon sharding_key).optimize_dry_run_check_part
OPTIMIZE ... DRY RUN valide la part fusionnée obtenue à l’aide de checkDataPart. Si la vérification échoue, une exception est levée.
optimize_empty_string_comparisons
optimize_extract_common_expressions
(A AND B) OR (A AND C) peut être réécrite en A AND (B OR C), ce qui peut aider à exploiter :
- les index dans des expressions de filtrage simples
- l’optimisation de CROSS JOIN en INNER JOIN
optimize_functions_to_subcolumns
- 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.
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_group_by_constant_keys
optimize_group_by_function_keys
optimize_if_chain_to_multiif
if(cond1, then1, if(cond2, ...)) par multiIf. Actuellement, cela n’est pas avantageux pour les types numériques.
optimize_if_transform_strings_to_enum
optimize_injective_functions_in_group_by
optimize_injective_functions_in_limit_by
LIMIT 5 BY toString(x) devient LIMIT 5 BY x.
optimize_injective_functions_inside_uniq
optimize_inverse_dictionary_lookup
optimize_limit_by_function_keys
LIMIT 5 BY x, f(x) devient LIMIT 5 BY x.
optimize_limit_by_in_order
SELECT ... LIMIT N BY <cols> lorsque <cols> (dans n’importe quel ordre) constituent un préfixe de la clé de tri de la table, ou le deviennent après que WHERE col = const a fixé les premières colonnes. Lorsque ce paramètre est activé, la source lit les données dans l’ordre de la clé primaire, de sorte que les lignes ayant les mêmes valeurs pour les colonnes BY arrivent de façon contiguë dans chaque flux. Lorsque les données arrivent dans un seul flux trié, LIMIT BY les filtre en mode streaming avec une mémoire O(1), au lieu de construire une table de hachage pour chaque combinaison distincte de colonnes BY rencontrée. Lorsque les données triées arrivent dans plusieurs flux et que les mêmes valeurs BY peuvent apparaître dans plusieurs d’entre eux, chaque flux est d’abord préfiltré en mode streaming jusqu’à un maximum de LIMIT + OFFSET lignes par groupe, puis les flux sont combinés et un LIMIT BY final, basé sur une table de hachage, déduplique les groupes qui s’étendent sur plusieurs flux. Cette passe finale conserve malgré tout une entrée pour chaque combinaison distincte de colonnes BY, mais elle ne traite que les lignes préfiltrées.
optimize_min_equality_disjunction_chain_length
expr = x1 OR ... expr = xN pour l’optimisation
optimize_min_inequality_conjunction_chain_length
expr <> x1 AND ... expr <> xN pour l’optimisatio
optimize_move_to_prewhere
- 0 — L’optimisation automatique de
PREWHEREest désactivée. - 1 — L’optimisation automatique de
PREWHEREest activée.
optimize_move_to_prewhere_if_final
- 0 — L’optimisation automatique de
PREWHEREdans les requêtesSELECTavec le modificateurFINALest désactivée. - 1 — L’optimisation automatique de
PREWHEREdans les requêtesSELECTavec le modificateurFINALest activée.
- paramètre optimize_move_to_prewhere
optimize_multiif_to_if
optimize_normalize_count_variants
optimize_on_insert
- 0 — Désactivé.
- 1 — Activé.
optimize_or_like_chain
optimize_prewhere_after_pushdown
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
QBit par des fonctions équivalentes qui ne lisent dans le stockage que les colonnes nécessaires au calcul.
optimize_read_in_order
- 0 — l’optimisation
ORDER BYest désactivée. - 1 — l’optimisation
ORDER BYest activée.
optimize_redundant_functions_in_order_by
optimize_respect_aliases
optimize_rewrite_aggregate_function_with_if
avg(if(cond, col, null)) peut être réécrit en avgOrNullIf(cond, col). Cela peut améliorer les performances.
Pris en charge uniquement avec l’analyseur (
enable_analyzer = 1).optimize_rewrite_array_exists_to_has
optimize_rewrite_has_to_in
has en IN lorsque le premier argument est un Array constant. Par exemple, has([1, 2, 3], x) peut être réécrit en x IN [1, 2, 3] pour de meilleures performances avec des Array constants
optimize_rewrite_like_perfect_affix
col LIKE 'ClickHouse%') en appels aux fonctions startsWith ou endsWith (par ex. startsWith(col, 'ClickHouse')).
optimize_rewrite_regexp_functions
optimize_rewrite_sum_if_to_count_if
optimize_skip_merged_partitions
OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1
OPTIMIZE TABLE ... FINAL réécrit cette partie même s’il n’en existe qu’une seule.
Valeurs possibles :
- 1 - Activer l’optimisation.
- 0 - Désactiver l’optimisation.
optimize_skip_unused_shards
WHERE/PREWHERE, et active les optimisations associées pour les requêtes distribuées (par exemple, l’agrégation par clé de sharding).
Suppose que les données sont distribuées selon la clé de sharding ; sinon, la requête renvoie un résultat incorrect.
- 0 — Désactivé.
- 1 — Activé.
optimize_skip_unused_shards_limit
optimize_skip_unused_shards si cette limite est atteinte.
Un trop grand nombre de valeurs peut nécessiter beaucoup de ressources de traitement, pour un bénéfice incertain, car si vous avez un très grand nombre de valeurs dans IN (...), la requête sera très probablement envoyée à tous les shards de toute façon.
optimize_skip_unused_shards_nesting
optimize_skip_unused_shards en fonction du niveau d’imbrication de la requête distribuée (cela nécessite donc toujours optimize_skip_unused_shards). Cela correspond au cas où une table Distributed interroge une autre table Distributed.
Valeurs possibles :
- 0 — Désactivé,
optimize_skip_unused_shardsfonctionne toujours. - 1 — Active
optimize_skip_unused_shardsuniquement pour le premier niveau. - 2 — Active
optimize_skip_unused_shardsjusqu’au deuxième niveau.
optimize_skip_unused_shards_rewrite_in
- 0 — Désactivé.
- 1 — Activé.
optimize_sorting_by_input_stream_properties
optimize_substitute_columns
false.
Valeurs possibles :
- true, false
optimize_syntax_fuse_functions
- 0 — Les fonctions ayant le même argument ne sont pas fusionnées.
- 1 — Les fonctions ayant le même argument sont fusionnées.
optimize_throw_if_noop
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 un 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
toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_trivial_approximate_count_query
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_trivial_count_query
SELECT count() FROM table à l’aide des métadonnées de MergeTree. Si vous devez utiliser la sécurité au niveau des lignes, désactivez ce paramètre.
Valeurs possibles :
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_trivial_group_by_limit_query
SELECT key_expr FROM table GROUP BY key_expr LIMIT n (sans fonctions d’agrégation dans la projection, sans clauses HAVING/ORDER BY/LIMIT BY/window, et sans modificateurs GROUP BY) en définissant max_rows_to_group_by = n + offset avec group_by_overflow_mode = 'any'. L’agrégation s’arrête dès que n + offset clés distinctes ont été produites.
L’optimisation est désactivée lorsque l’utilisateur a explicitement défini group_by_overflow_mode sur une valeur autre que any (afin de préserver le comportement explicite throw/break), ainsi que lorsque l’utilisateur a déjà défini un max_rows_to_group_by plus restrictif (l’optimisation serait alors sans effet).
Valeurs possibles :
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_trivial_insert_select
INSERT INTO table SELECT ... FROM TABLES
optimize_truncate_order_by_after_group_by_keys
optimize_uniq_to_count
optimize_use_implicit_projections
optimize_use_projection_filtering
optimize_use_projections
allow_experimental_projection_optimization
Active ou désactive l’optimisation des projections pendant le traitement des requêtes SELECT.
Valeurs possibles :
- 0 — Optimisation des projections désactivée.
- 1 — Optimisation des projections activée.
optimize_using_constraints
false.
Valeurs possibles :
- true, false
os_threads_nice_value_materialized_view
os_threads_nice_value_query
os_thread_priority
Valeur nice Linux pour les threads de traitement des requêtes. Plus la valeur est faible, plus la priorité CPU est élevée.
Nécessite la capacité CAP_SYS_NICE, sinon aucun effet.
Valeurs possibles : -20 à 19.
page_cache_block_size
page_cache_inject_eviction
page_cache_lookahead_blocks
page_cache_max_coalesced_bytes
readBigAt alimente le cache de pages en espace utilisateur, les défauts de cache consécutifs sont regroupés en une seule lecture depuis le stockage sous-jacent. Ce paramètre limite la taille, en octets, d’une lecture coalescée ; les séries de défauts plus longues sont divisées en plusieurs lectures. Il limite l’utilisation transitoire de la mémoire du tampon temporaire lors de lectures à froid parallèles.
Une valeur plus élevée réduit le nombre de requêtes HTTP lors de scans à froid sur le stockage objet ; une valeur plus faible réduit le pic de mémoire transitoire.
paimon_target_snapshot_id
parallel_distributed_insert_select
INSERT ... SELECT.
Si l’on exécute des requêtes INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b, que les deux tables utilisent le même cluster et qu’elles sont toutes deux soit répliquées, soit non répliquées, alors la requête est traitée localement sur chaque shard.
Valeurs possibles :
0— Désactivé.1—SELECTsera exécuté sur chaque shard à partir de la table sous-jacente du moteur Distributed.2—SELECTetINSERTseront exécutés sur chaque shard, à partir de/vers la table sous-jacente du moteur Distributed.
INSERT ... SELECT à partir d’une source ReplicatedMergeTree ou SharedMergeTree peut également être parallélisé entre les répliques. Pour l’activer :
parallel_distributed_insert_select = 2enable_parallel_replicas = 1
parallel_hash_join_threshold
hash ou parallel_hash (uniquement si une estimation de la taille de la table de droite est disponible).
Le premier est utilisé lorsque nous savons que la taille de la table de droite est inférieure au seuil.
parallel_non_joined_rows_processing
parallel_hash avec de grandes tables.
Lorsqu’il est désactivé, les lignes non jointes sont traitées par un seul thread.
parallel_replica_offset
parallel_replicas_allow_in_with_subquery
parallel_replicas_allow_materialized_views
parallel_replicas_allow_view_over_mergetree
MergeTree (au lieu de la requête interne de la vue), ce qui améliore la parallélisation entre les nœuds. S’applique également aux vues UNION ALL dont toutes les branches lisent chacune dans des tables MergeTree différentes.
parallel_replicas_connect_timeout_ms
parallel_replicas_count
parallel_replicas_custom_key
SAMPLE : il utilisera plusieurs répliques de chaque shard.
parallel_replicas_custom_key_range_lower
range de répartir uniformément le travail entre les répliques en fonction de la plage personnalisée [parallel_replicas_custom_key_range_lower, INT_MAX].
Lorsqu’il est utilisé conjointement avec parallel_replicas_custom_key_range_upper, il permet au filtre de répartir uniformément le travail entre les répliques pour la plage [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper].
Remarque : ce paramètre n’entraîne pas le filtrage de données supplémentaires pendant le traitement des requêtes ; il modifie plutôt les points auxquels le filtre de plage découpe la plage [0, INT_MAX] pour le traitement parallèle.
parallel_replicas_custom_key_range_upper
range de répartir uniformément le travail entre les répliques en fonction de la plage personnalisée [0, parallel_replicas_custom_key_range_upper]. Une valeur de 0 désactive la borne supérieure et la définit sur la valeur maximale de l’expression de clé personnalisée.
Lorsqu’il est utilisé conjointement avec parallel_replicas_custom_key_range_lower, il permet au filtre de répartir uniformément le travail entre les répliques sur la plage [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper].
Remarque : ce paramètre n’entraîne pas le filtrage de données supplémentaires pendant le traitement des requêtes ; il modifie plutôt les points auxquels le filtre de plage découpe la plage [0, INT_MAX] pour le traitement parallèle
parallel_replicas_filter_pushdown
parallel_replicas_for_cluster_engines
parallel_replicas_for_non_replicated_merge_tree
parallel_replicas_index_analysis_only_on_coordinator
parallel_replicas_insert_select_local_pipeline
parallel_replicas_local_plan
parallel_replicas_mark_segment_size
parallel_replicas_min_number_of_rows_per_replica
parallel_replicas_mode
parallel_replicas_only_with_analyzer
parallel_replicas_prefer_local_join
parallel_replicas_prefer_local_replica
max_parallel_replicas = 1 vers un autre hôte, ce qui peut améliorer la localité de cache lorsque de nombreuses requêtes courtes sont réparties sur un cluster.
parallel_replicas_support_projection
parallel_view_processing
parallelize_output_from_storages
parsedatetime_e_requires_space_padding
parsedatetime_parse_without_leading_zeros
partial_merge_join_left_table_buffer_bytes
partial_merge_join_rows_in_right_blocks
- Divise les données de la partie droite de la jointure en blocs contenant jusqu’au nombre de lignes spécifié.
- Indexe chaque bloc avec ses valeurs minimale et maximale.
- Décharge les blocs préparés sur le disk si possible.
- Tout entier positif. Plage de valeurs recommandée : [1000, 100000].
partial_result_on_first_cancel
parts_to_delay_insert
parts_to_throw_insert
per_part_index_stats
poll_interval
polyglot_dialect
postgresql_connection_attempt_timeout
connect_timeout dans l’URL de connexion.
postgresql_connection_pool_auto_close_connection
postgresql_connection_pool_retries
postgresql_connection_pool_size
postgresql_connection_pool_wait_timeout
postgresql_fault_injection_probability
predicate_statistics_sample_rate
system.predicate_statistics_log. Lorsqu’il est défini sur N > 0, environ 1/N des requêtes sont échantillonnées (selon l’ID de requête). 0 signifie que cette fonctionnalité est désactivée.
prefer_column_name_to_alias
- 0 — Le nom de la colonne est remplacé par l’alias.
- 1 — Le nom de la colonne n’est pas remplacé par l’alias.
prefer_external_sort_block_bytes
prefer_global_in_and_join
IN/JOIN par GLOBAL IN/GLOBAL JOIN.
Valeurs possibles :
- 0 — Désactivé. Les opérateurs
IN/JOINne sont pas remplacés parGLOBAL IN/GLOBAL JOIN. - 1 — Activé. Les opérateurs
IN/JOINsont remplacés parGLOBAL IN/GLOBAL JOIN.
SET distributed_product_mode=global puisse modifier le comportement des requêtes sur les tables distribuées, cela ne convient pas aux tables locales ni aux tables issues de ressources externes. C’est là que le paramètre prefer_global_in_and_join entre en jeu.
Par exemple, nous pouvons avoir des nœuds qui traitent les requêtes et contiennent des tables locales, qui ne se prêtent pas à une distribution. Nous devons répartir leurs données à la volée pendant le traitement distribué à l’aide du mot-clé GLOBAL — GLOBAL IN/GLOBAL JOIN.
Un autre cas d’usage de prefer_global_in_and_join est l’accès à des tables créées par des moteurs externes. Ce paramètre permet de réduire le nombre d’appels aux sources externes lors de la jointure de telles tables : un seul appel par requête.
Voir aussi :
- Sous-requêtes distribuées pour plus d’informations sur l’utilisation de
GLOBAL IN/GLOBAL JOIN
prefer_localhost_replica
- 1 — ClickHouse envoie toujours une requête à la réplique localhost si elle existe.
- 0 — ClickHouse utilise la stratégie d’équilibrage spécifiée par le paramètre load_balancing.
Désactivez ce paramètre si vous utilisez max_parallel_replicas sans parallel_replicas_custom_key.
Si parallel_replicas_custom_key est défini, désactivez ce paramètre uniquement s’il est utilisé sur un cluster comportant plusieurs shards avec plusieurs répliques.
S’il est utilisé sur un cluster comportant un seul shard et plusieurs répliques, la désactivation de ce paramètre aura des effets négatifs.
prefer_warmed_unmerged_parts_seconds
preferred_block_size_bytes
preferred_max_column_in_block_size_bytes
preferred_optimize_projection_name
- String : nom de la projectio préférée
prefetch_buffer_size
print_pretty_type_names
DESCRIBE et dans la fonction toTypeName().
Exemple :
priority
promql_database
promql_evaluation_time
evaluation_time
Définit l’heure d’évaluation à utiliser pour le dialecte promql. ‘auto’ signifie l’heure actuelle.
promql_table
push_external_roles_in_interserver_queries
query_cache_compress_entries
- 0 - Désactivé
- 1 - Activé
query_cache_for_subqueries
use_query_cache à toutes les sous-requêtes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
query_cache_max_entries
- Entier positif >= 0.
query_cache_max_size_in_bytes
- Entier supérieur ou égal à 0.
query_cache_min_query_duration
- Entier >= 0.
query_cache_min_query_runs
SELECT avant que son résultat ne soit stocké dans le cache des requêtes.
Valeurs possibles :
- Entier >= 0.
query_cache_nondeterministic_function_handling
SELECT contenant des fonctions non déterministes comme rand() ou now().
Valeurs possibles :
'throw'- Déclenche une exception et ne met pas en cache le résultat de la requête.'save'- Met en cache le résultat de la requête.'ignore'- Ne met pas en cache le résultat de la requête et ne déclenche pas d’exception.
SELECT mis en cache dans le cache de requête peut être consulté par d’autres utilisateurs.
Il n’est pas recommandé d’activer ce paramètre pour des raisons de sécurité.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
query_cache_squash_partial_results
- 0 - Désactivé
- 1 - Activé
query_cache_system_table_handling
SELECT sur les tables système, c’est-à-dire les tables des bases de données system.* et information_schema.*.
Valeurs possibles :
'throw'- Lever une exception et ne pas mettre en cache le résultat de la requête.'save'- Mettre en cache le résultat de la requête.'ignore'- Ne pas mettre en cache le résultat de la requête et ne pas lever d’exception.
query_cache_tag
- Toute chaîne de caractères
query_cache_ttl
- Entier positif >= 0.
query_metric_log_interval
collect_interval_milliseconds du paramètre query_metric_log, ou 1000 par défaut si celle-ci n’est pas définie.
Pour désactiver la collecte pour une requête unique, définissez query_metric_log_interval sur 0.
Valeur par défaut : -1
query_plan_aggregation_in_order
query_plan_enable_optimizations vaut 1.
Il s’agit d’un paramètre de niveau expert qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut évoluer ultérieurement de manière non rétrocompatible, ou être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_convert_any_join_to_semi_or_anti_join
query_plan_convert_join_to_in
JOIN en sous-requête avec IN si les colonnes de sortie ne dépendent que de la table de gauche. Peut produire des résultats incorrects avec des jointures autres que ANY JOIN (par exemple les ALL JOIN, qui constituent le comportement par défaut).
query_plan_convert_outer_join_to_inner_join
OUTER JOIN en INNER JOIN si le filtre appliqué après le JOIN exclut toujours les valeurs par défaut
query_plan_direct_read_from_text_index
query_plan_display_internal_aliases
query_plan_enable_multithreading_after_window_functions
query_plan_enable_optimizations
Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra, à l’avenir, être modifié de manière non rétrocompatible ou supprimé.
- 0 - Désactiver toutes les optimisations au niveau du plan de requête
- 1 - Activer les optimisations au niveau du plan de requête (mais certaines optimisations peuvent toujours être désactivées via leurs propres paramètres)
query_plan_execute_functions_after_sorting
query_plan_enable_optimizations est défini sur 1.
Il s’agit d’un paramètre destiné aux experts, qui ne doit être utilisé pour le débogage que par les développeurs. Ce paramètre pourra évoluer ultérieurement de manière non rétrocompatible, voire être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_filter_push_down
Il s’agit d’un paramètre destiné aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut être modifié ultérieurement de manière non rétrocompatible, voire supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_join_shard_by_pk_ranges
query_plan_join_swap_table
ALL avec la clause JOIN ON. Les valeurs possibles sont :
- ‘auto’ : laisser le planificateur décider quelle table utiliser comme table de build.
- ‘false’ : ne jamais permuter les tables (la table de droite est la table de build).
- ‘true’ : toujours permuter les tables (la table de gauche est la table de build).
query_plan_lift_up_array_join
Il s’agit d’un paramètre de niveau expert qui ne doit être utilisé à des fins de débogage que par les développeurs. Ce paramètre pourra, à l’avenir, changer de manière incompatible avec les versions précédentes ou être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_lift_up_union
query_plan_enable_optimizations vaut 1.
Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut évoluer ultérieurement de manière non rétrocompatible, voire être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_max_limit_for_join_lazy_indexing
query_plan_max_limit_for_lazy_materialization
query_plan_max_limit_for_top_k_optimization
query_plan_max_optimizations_to_apply
Il s’agit d’un paramètre destiné aux experts, qui ne doit être utilisé pour le débogage que par les développeurs. Ce paramètre peut évoluer à l’avenir de manière non rétrocompatible, voire être supprimé.
query_plan_max_set_size_for_projection_match
IN pour lequel le mécanisme de correspondance des projections calcule et compare des hachages de contenu afin de déterminer si deux ensembles sont égaux. Les ensembles plus grands que cette limite sont considérés comme non correspondants et n’utilisent pas la projection. La valeur zéro désactive entièrement la comparaison par hachage de contenu : une correspondance de projection ne réussit jamais pour les nœuds contenant des ensembles de clause IN.
Utilisé par le mécanisme de correspondance des projections d’agrégation (ainsi que par tout futur mécanisme de correspondance des projections devant comparer des ensembles de clause IN). Le calcul du hachage de contenu est en O(N log N) en fonction du nombre d’éléments de l’ensemble ; ce paramètre limite le coût de la planification lorsque de nombreuses clauses IN apparaissent dans la requête ou la projection.
query_plan_max_step_description_length
query_plan_merge_expressions
Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé à des fins de débogage que par les développeurs. Ce paramètre pourra, à l’avenir, être modifié de manière incompatible avec les versions précédentes ou être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_merge_filter_into_join_condition
JOIN et de convertir CROSS JOIN en INNER.
query_plan_merge_filters
query_plan_min_columns_for_join_lazy_indexing
query_plan_optimize_join_order_algorithm
greedy- algorithme glouton simple - fonctionne rapidement, mais peut ne pas produire le meilleur ordre de jointuredpsize- implémente l’algorithme DPsize, actuellement uniquement pour les jointures internes - examine tous les ordres de jointure possibles et trouve le meilleur, mais peut être lent pour les requêtes comportant de nombreuses tables et de nombreux prédicats de jointuredphyp- implémente l’algorithme DPhyp (programmation dynamique via partitionnement d’hypergraphe), actuellement uniquement pour les jointures internes - explore le même espace de recherche quedpsize, mais n’énumère que les paires de sous-graphes connectés, ce qui génère moins de jointures intermédiaires sur des graphes de jointure clairsemés, au prix de ne pas prendre en compte les produits cartésiens Plusieurs algorithmes peuvent être spécifiés sous forme de liste séparée par des virgules, par exempledphyp,greedy. Ils sont essayés dans l’ordre ; si un algorithme ne peut pas traiter la requête (par exemple en raison de jointures externes ou de composants déconnectés), le suivant est utilisé comme solution de repli.
query_plan_optimize_join_order_limit
query_plan_optimize_join_order_max_searched_plans
query_plan_optimize_join_order_algorithm.
Cela limite de manière déterministe le temps d’optimisation (indépendamment du temps écoulé) sur des graphes de jointure denses, tels que des cliques ou des étoiles, où l’espace de recherche croît de façon exponentielle.
Définissez cette valeur sur 0 pour désactiver la limite. Cela n’a aucun effet avec la valeur par défaut de query_plan_optimize_join_order_limit, pour laquelle la recherche reste toujours bien en dessous de cette borne.
query_plan_optimize_join_order_randomize
query_plan_optimize_lazy_final
query_plan_optimize_lazy_materialization
query_plan_optimize_prewhere
query_plan_push_down_limit
Il s’agit d’un paramètre de niveau expert, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut évoluer à l’avenir de manière non rétrocompatible, voire être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_push_limit_by_into_sort
ORDER BY ... LIMIT BY. Lorsque les colonnes de LIMIT BY sont un préfixe de la clause ORDER BY, chaque flux trié en parallèle applique LIMIT BY avant que les flux ne soient fusionnés en un seul, ce qui réduit le nombre de lignes traitées lors de la fusion finale et dans les étapes ultérieures du pipeline. Accélère les requêtes où LIMIT BY élimine une grande partie des lignes.
Ne prend effet que si le paramètre query_plan_enable_optimizations vaut 1.
Valeurs possibles :
- 0 - Désactiver
- 1 - Activer
query_plan_read_in_order
query_plan_enable_optimizations est défini à 1.
Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre pourra à l’avenir être modifié de manière non rétrocompatible ou supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_read_in_order_through_join
query_plan_remove_redundant_distinct
query_plan_enable_optimizations vaut 1.
Il s’agit d’un paramètre de niveau expert qui ne devrait être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra à l’avenir évoluer de manière non rétrocompatible ou être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_remove_redundant_sorting
query_plan_enable_optimizations vaut 1.
Il s’agit d’un paramètre destiné aux experts, qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre pourra changer ultérieurement de manière non rétrocompatible ou être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_remove_unused_columns
Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut changer ultérieurement de manière non rétrocompatible, voire être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_reuse_storage_ordering_for_window_functions
optimize_read_in_window_order
Active ou désactive une optimisation au niveau du plan de requête qui s’appuie sur l’ordre de tri du stockage lors du tri pour les fonctions de fenêtre.
Ne prend effet que si le paramètre query_plan_enable_optimizations vaut 1.
Il s’agit d’un paramètre de niveau expert qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra évoluer à l’avenir de manière non rétrocompatible, voire être supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_split_filter
Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut être modifié ultérieurement de façon non rétrocompatible, voire supprimé.
- 0 - Désactiver
- 1 - Activer
query_plan_text_index_add_hint
query_plan_top_k_through_join
ORDER BY ... LIMIT n à travers une jointure lorsque la clé de tri ne référence que les colonnes du côté préservé par la jointure (LEFT/RIGHT). Limite le nombre de lignes que l’entrée du côté préservé doit produire avant la jointure.
Ne prend effet que si le paramètre query_plan_enable_optimizations vaut 1.
Valeurs possibles :
- 0 - Désactiver
- 1 - Activer
query_plan_try_use_vector_search
query_plan_enable_optimizations vaut 1.
Il s’agit d’un paramètre de niveau expert qui ne doit être utilisé que par les développeurs à des fins de débogage. Ce paramètre pourra, à l’avenir, être modifié de manière non rétrocompatible ou supprimé.
- 0 - Désactiver
- 1 - Activer
query_profiler_cpu_time_period_ns
-
Un entier positif correspondant à un nombre de nanosecondes.
Valeurs recommandées :
- 10000000 (100 fois par seconde) nanosecondes et plus pour les requêtes individuelles.
- 1000000000 (une fois par seconde) pour le profilage à l’échelle du cluster.
- 0 pour désactiver le minuteur.
- Table système trace_log
query_profiler_real_time_period_ns
-
Nombre entier positif, en nanosecondes.
Valeurs recommandées :
- 10000000 (100 fois par seconde) nanosecondes et moins pour les requêtes individuelles.
- 1000000000 (une fois par seconde) pour le profilage à l’échelle du cluster.
- 0 pour désactiver le minuteur.
- Table système trace_log
3000000000.
queue_max_wait_ms
rabbitmq_max_wait_ms
read_backoff_max_throughput
read_backoff_min_concurrency
read_backoff_min_events
read_backoff_min_interval_between_events_ms
read_backoff_min_latency_ms
read_from_distributed_cache_if_exists_otherwise_bypass_cache
read_from_filesystem_cache_if_exists_otherwise_bypass_cache
read_from_page_cache_if_exists_otherwise_bypass_cache
read_in_order_two_level_merge_threshold
read_in_order_use_buffering
read_in_order_use_virtual_row
read_in_order_use_virtual_row_per_block
read_in_order_use_virtual_row, une ligne virtuelle est émise après chaque bloc lu (et pas seulement au début de chaque part).
Cela permet à MergingSortedTransform de reprioriser les sources plus fréquemment, ce qui est utile lorsque les filtres en aval écartent de nombreuses lignes et que les données sont réparties de façon inégale entre les parts.
Notez que cela désactive l’optimisation read_in_order_use_buffering ainsi que la fusion préliminaire (read_in_order_two_level_merge_threshold) pour la lecture.
read_overflow_mode
read_overflow_mode_leaf
throw: lever une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer un résultat partiel.
priorité_de_lecture
threadpool pour le système de fichiers distant.
read_through_distributed_cache
readonly
receive_data_timeout_ms
receive_timeout
send_timeout du socket sera également défini sur l’extrémité correspondante de la connexion côté serveur.
recursive_cte_max_steps_in_type_inference
getLeastSupertype de manière itérative aux branches non récursive et récursive de l’UNION ALL jusqu’à convergence. Définissez cette valeur sur 0 pour désactiver l’élargissement des types et utiliser uniquement les types de la partie non récursive.
regexp_dict_allow_hyperscan
regexp_dict_flag_case_insensitive
regexp_dict_flag_dotall
regexp_max_matches_per_row
- Entier positif.
reject_expensive_hyperscan_regexps
remerge_sort_lowered_memory_bytes_ratio
remote_filesystem_read_method
remote_filesystem_read_prefetch
remote_fs_read_backoff_max_tries
remote_fs_read_max_backoff_ms
remote_read_min_bytes_for_seek
rename_files_after_processing
- Type: String
- Valeur par défaut : Chaîne vide
file. Lorsque cette option est définie, tous les fichiers lus par la fonction de table file sont renommés selon le motif indiqué avec des marqueurs de substitution, uniquement si leur traitement a réussi.
Espaces réservés
%a— Nom complet du fichier d’origine (par ex. : “sample.csv”).%f— Nom du fichier d’origine sans extension (par ex. : “sample”).%e— Extension du fichier d’origine, point compris (par ex. : “.csv”).%t— Horodatage (en microsecondes).%%— Signe de pourcentage (”%”).
Exemple
-
Option :
--rename_files_after_processing="processed_%f_%t%e" -
Requête :
SELECT * FROM file('sample.csv')
sample.csv réussit, le fichier sera renommé processed_sample_1683473210851438.csv
replace_running_query
0 (par défaut) – Lever une exception (ne pas autoriser l’exécution de la requête si une requête avec le même ‘query_id’ est déjà en cours d’exécution).
1 – Annuler l’ancienne requête et lancer la nouvelle.
Définissez ce paramètre sur 1 pour implémenter des suggestions de conditions de segmentation. Après la saisie du caractère suivant, si l’ancienne requête n’est pas encore terminée, elle doit être annulée.
replace_running_query_max_wait_ms
query_id se termine, lorsque le paramètre replace_running_query est actif.
Valeurs possibles :
- Entier positif.
- 0 — Levée d’une exception qui empêche d’exécuter une nouvelle requête si le serveur exécute déjà une requête avec le même
query_id.
replication_wait_for_inactive_replica_timeout
ALTER, OPTIMIZE ou TRUNCATE.
Valeurs possibles :
0— Ne pas attendre.- Entier négatif — Attendre indéfiniment.
- Entier positif — Nombre de secondes à attendre.
restore_replace_external_dictionary_source_to_null
restore_replace_external_engines_to_null
restore_replace_external_table_functions_to_null
1.
result_overflow_mode
throw
Définit ce qu’il faut faire si le volume du résultat dépasse l’une des limites.
Valeurs possibles :
throw: lever une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer le résultat partiel, comme si les données source étaient épuisées.
Break interrompt l’exécution uniquement au
niveau du bloc. Cela signifie que le nombre de lignes renvoyées est supérieur à
max_result_rows, est un multiple de max_block_size
et dépend de max_threads.
Exemple
Query
Result
rewrite_count_distinct_if_with_count_distinct_implementation
countDistcintIf à l’aide du paramètre count_distinct_implementation.
Valeurs possibles :
- true — Autoriser.
- false — Interdire.
rewrite_in_to_join
rows_before_aggregation
s3_allow_multipart_copy
s3_allow_parallel_part_upload
s3_check_objects_after_upload
s3_connect_timeout_ms
s3_create_new_file_on_insert
data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz, etc.
Valeurs possibles :
- 0 — la requête
INSERTcrée un nouveau fichier, ou échoue si le fichier existe et que s3_truncate_on_insert n’est pas défini. - 1 — la requête
INSERTcrée un nouveau fichier à chaque insertion en utilisant un suffixe (à partir du deuxième) si s3_truncate_on_insert n’est pas défini.
s3_disable_checksum
s3_ignore_file_doesnt_exist
- 1 —
SELECTrenvoie un résultat vide. - 0 —
SELECTlève une exception.
s3_list_object_keys_size
s3_max_connections
s3_max_get_burst
s3_max_get_rps
s3_max_get_rps
s3_max_inflight_parts_for_one_file
s3_max_part_number
s3_max_put_burst
s3_max_put_rps
s3_max_put_rps
s3_max_single_operation_copy_size
s3_max_single_part_upload_size
s3_max_single_read_retries
s3_max_unexpected_write_error_retries
s3_max_upload_part_size
s3_min_upload_part_size
s3_path_filter_limit
_path pouvant être extraites des filtres de requête afin d’être utilisées pour l’itération sur les fichiers
au lieu d’un parcours par motif glob. 0 signifie désactivé.
s3_request_timeout_ms
s3_skip_empty_files
- 0 —
SELECTlève une exception si le fichier vide n’est pas compatible avec le format demandé. - 1 —
SELECTrenvoie un résultat vide pour un fichier vide.
s3_slow_all_threads_after_network_error
true, tous les threads exécutant des requêtes S3 vers le même endpoint de sauvegarde sont ralentis
dès qu’une seule requête S3 rencontre une erreur réseau pouvant donner lieu à une nouvelle tentative, comme un timeout de socket.
Lorsque ce paramètre est défini sur false, chaque thread gère le délai progressif des requêtes S3 indépendamment des autres.
s3_strict_upload_part_size
s3_throw_on_zero_files_match
s3_truncate_on_insert
- 0 — la requête
INSERTcrée un nouveau fichier, ou échoue si le fichier existe et que s3_create_new_file_on_insert n’est pas défini. - 1 — la requête
INSERTremplace le contenu existant du fichier par les nouvelles données.
s3_upload_part_size_multiply_factor
s3_min_upload_part_size par ce facteur chaque fois que s3_multiply_parts_count_threshold parts ont été téléversées vers S3 lors d’une seule écriture.
s3_upload_part_size_multiply_parts_count_threshold
s3_uri_style
s3_use_adaptive_timeouts
true, les deux premières tentatives de toutes les requêtes S3 sont effectuées avec des délais d’envoi et de réception courts.
Lorsqu’il est défini sur false, toutes les tentatives sont effectuées avec les mêmes délais.
s3_validate_request_settings
- 1 — valide les paramètres.
- 0 — ne valide pas les paramètres.
s3queue_default_zookeeper_path
s3queue_enable_logging_to_s3queue_log
s3queue_keeper_fault_injection_probability
s3queue_migrate_old_metadata_to_buckets
schema_inference_cache_require_modification_time_for_url
schema_inference_use_cache_for_azure
schema_inference_use_cache_for_file
schema_inference_use_cache_for_hdfs
schema_inference_use_cache_for_s3
schema_inference_use_cache_for_url
secondary_indices_enable_bulk_filtering
select_sequential_consistency
Ce paramètre n’a pas le même comportement avec SharedMergeTree et ReplicatedMergeTree. Voir SharedMergeTree consistency pour plus d’informations sur le comportement de
select_sequential_consistency dans SharedMergeTree.SELECT. Nécessite que insert_quorum_parallel soit désactivé (il est activé par défaut).
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
SELECT que sur les répliques qui contiennent les données de toutes les requêtes INSERT précédentes exécutées avec insert_quorum. Si le client interroge une réplique partielle, ClickHouse génère une exception. La requête SELECT n’inclura pas les données qui n’ont pas encore été écrites sur le quorum de répliques.
Lorsque insert_quorum_parallel est activé (par défaut), select_sequential_consistency ne fonctionne pas. En effet, des requêtes INSERT parallèles peuvent être écrites sur différents groupes de répliques formant le quorum, sans garantie qu’une seule réplique ait reçu toutes les écritures.
Voir aussi :
send_logs_level
send_logs_source_regexp
send_profile_events
- 0 — Désactivé.
- 1 — Activé.
send_progress_in_http_headers
X-ClickHouse-Progress dans les réponses de clickhouse-server.
Pour plus d’informations, consultez la description de l’interface HTTP.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
send_table_structure_on_insert_with_inline_data
send_timeout
receive_timeout du socket sera également défini du côté correspondant de la connexion sur le serveur.
serialize_query_plan
serialize_string_in_memory_with_zero_byte
session_timezone
timeZone() et serverTimeZone() pour obtenir le fuseau horaire de la session et celui du serveur.
Valeurs possibles :
- Tout nom de fuseau horaire issu de
system.time_zones, par exempleEurope/Berlin,UTCouZulu
toDateTime(), utilisé sans fuseau horaire explicitement indiqué dans la première requêteSELECT, tient compte du paramètresession_timezoneet du fuseau horaire global.- Dans la deuxième requête, une valeur DateTime est analysée à partir d’une String et hérite du type et du fuseau horaire de la colonne existante
d. Par conséquent, le paramètresession_timezoneet le fuseau horaire global ne sont pas pris en compte.
set_overflow_mode
throw: lever une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer un résultat partiel, comme si les données source étaient épuisées.
select_sequential_consistency avec SharedMergeTree. Disponible uniquement dans ClickHouse Cloud.
Backoff maximal, en millisecondes, pour la mise à jour des parts lors de l’utilisation de select_sequential_consistency avec SharedMergeTree. Disponible uniquement dans ClickHouse Cloud.
Nombre maximal de tentatives de mise à jour des parts lors de l’utilisation de select_sequential_consistency avec SharedMergeTree. Disponible uniquement dans ClickHouse Cloud.
Synchronise automatiquement l’ensemble des parts de données après les opérations de partition MOVE|REPLACE|ATTACH dans les tables SMT. Cloud uniquement
short_circuit_function_evaluation
enable— Active l’évaluation en court-circuit pour les fonctions qui s’y prêtent (celles qui peuvent lever une exception ou sont coûteuses en calcul).force_enable— Active l’évaluation en court-circuit pour toutes les fonctions.disable— Désactive l’évaluation en court-circuit.
short_circuit_function_evaluation_for_nulls
short_circuit_function_evaluation_for_nulls_threshold
show_processlist_include_internal
SHOW PROCESSLIST.
Les processus internes comprennent les rechargements de dictionnaires, les rechargements de vues matérialisées actualisables, les SELECT auxiliaires exécutés dans les requêtes SHOW ..., les requêtes auxiliaires CREATE DATABASE ... exécutées en interne pour gérer les tables défectueuses, etc.
show_remote_databases_in_system_tables
show_data_lake_catalogs_in_system_tables
Active l’affichage des bases de données distantes (catalogues de data lake, MySQL, PostgreSQL) dans les tables système.
show_table_uuid_in_table_create_query_if_not_nil
SHOW TABLE.
Valeurs possibles :
- 0 — La requête sera affichée sans l’UUID de la table.
- 1 — La requête sera affichée avec l’UUID de la table.
single_join_prefer_left_table
skip_redundant_aliases_in_udf
- 1 — Les alias sont ignorés (substitués) dans les UDF.
- 0 — Les alias ne sont pas ignorés (substitués) dans les UDF.
- ClickHouse ne peut pas se connecter à la réplique, quelle qu’en soit la raison. Lors de la connexion à une réplique, ClickHouse effectue plusieurs tentatives. Si elles échouent toutes, la réplique est considérée comme indisponible.
-
La réplique ne peut pas être résolue via DNS.
Si le nom d’hôte de la réplique ne peut pas être résolu via DNS, cela peut indiquer les situations suivantes :
- L’hôte de la réplique n’a pas d’enregistrement DNS. Cela peut se produire dans des systèmes utilisant un DNS dynamique, par exemple Kubernetes, où les nœuds peuvent être temporairement impossibles à résoudre pendant une période d’indisponibilité, sans que cela constitue une erreur.
- Erreur de configuration. Le fichier de configuration de ClickHouse contient un nom d’hôte incorrect.
- 1 — ignorance activée. Si un shard est indisponible, ClickHouse renvoie un résultat basé sur des données partielles et ne signale pas les problèmes de disponibilité des nœuds.
- 0 — ignorance désactivée. Si un shard est indisponible, ClickHouse lève une exception.
sleep_after_receiving_query_ms
sleep_in_send_data_ms
sleep_in_send_tables_status_ms
sort_overflow_mode
throw: lever une exception.break: arrêter l’exécution de la requête et renvoyer un résultat partiel.
split_intersecting_parts_ranges_into_layers_final
split_parts_ranges_into_intersecting_and_non_intersecting_final
splitby_max_substrings_includes_remaining_string
max_substrings > 0 inclut la chaîne restante dans le dernier élément du tableau résultant.
Valeurs possibles :
0- La chaîne restante ne sera pas incluse dans le dernier élément du tableau résultant.1- La chaîne restante sera incluse dans le dernier élément du tableau résultant. Il s’agit du comportement de la fonctionsplit()de Spark et de la méthode ‘string.split()’ de Python.
stop_refreshable_materialized_views_on_startup
SYSTEM START VIEWS ou SYSTEM START VIEW <name>. S’applique également aux vues nouvellement créées. N’a aucun effet sur les vues matérialisées non actualisables.
storage_file_read_method
read, pread, mmap. La méthode mmap ne s’applique pas à clickhouse-server (elle est destinée à clickhouse-local).
storage_system_stack_trace_pipe_read_timeout_ms
system.stack_trace. Ce paramètre est utilisé à des fins de test et n’est pas destiné à être modifié par les utilisateurs.
stream_flush_interval_ms
stream_like_engine_allow_direct_select
stream_like_engine_insert_queue
stream_poll_timeout_ms
system_events_show_zero_values
system.events.
Certains systèmes de supervision exigent que toutes les valeurs de métriques leur soient transmises à chaque relevé, même si la valeur de la métrique est nulle.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
system_metric_log_show_zero_values_in_histograms
histograms de system.metric_log.
Par défaut, les histogrammes dont le count total d’observations est nul sont ignorés et, dans chaque histogramme émis, les entrées de bucket sans observation sont également omises de la map histogram. Activez ce paramètre pour écrire chaque histogramme et chaque bucket, quel que soit le count — utile pour les systèmes de monitoring qui exigent que chaque métrique apparaisse à chaque point de contrôle.
Valeurs possibles :
- 0 — Désactivé. Les histogrammes avec
count = 0ne sont pas émis ; les histogrammes émis incluent uniquement les buckets ayant reçu au moins une observation. - 1 — Activé. Tous les histogrammes sont écrits et chaque limite de bucket apparaît dans
histogram.
table_engine_read_through_distributed_cache
table_function_remote_max_addresses
- Entier positif.
tcp_keep_alive_timeout
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
temporary_files_buffer_size
temporary_files_codec
- LZ4 — La compression LZ4 est appliquée.
- NONE — Aucune compression n’est appliquée.
text_index_density_threshold
text_index_hint_max_selectivity
text_index_like_max_postings_to_read
use_text_index_like_evaluation_by_dictionary_scan soit activé.
text_index_like_min_pattern_length
use_text_index_like_evaluation_by_dictionary_scan soit activé.
text_index_posting_list_apply_mode
throw_if_no_data_to_insert
clickhouse-client ou via l’interface gRPC.
throw_on_error_from_cache_on_write_operations
throw_on_max_partitions_per_insert_block
max_partitions_per_insert_block est atteint.
Valeurs possibles :
true- Lorsqu’un bloc d’insertion atteintmax_partitions_per_insert_block, une exception est levée.false- Consigne un avertissement lorsquemax_partitions_per_insert_blockest atteint.
throw_on_unsupported_query_inside_transaction
timeout_before_checking_execution_speed
min_execution_speed),
une fois le délai spécifié, en secondes, écoulé.
timeout_overflow_mode
max_execution_time ou si la
durée d’exécution estimée dépasse max_estimated_execution_time.
Valeurs possibles :
throw: lever une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer le résultat partiel, comme si les données source étaient épuisées.
timeout_overflow_mode_leaf
max_execution_time_leaf.
Valeurs possibles :
throw: déclencher une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer un résultat partiel, comme si les données sources étaient épuisées.
totals_auto_threshold
totals_mode = 'auto'.
Voir la section « modificateur WITH TOTALS ».
totals_mode
trace_profile_events
- 1 — Traçage des événements de profil activé.
- 0 — Traçage des événements de profil désactivé.
trace_profile_events_list
trace_profile_events est activé, limitez les événements tracés à la liste spécifiée de noms séparés par des virgules.
Si trace_profile_events_list est une chaîne vide (par défaut), tracez tous les événements de profil.
Valeur d’exemple : ‘DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes’
L’utilisation de ce paramètre permet de collecter plus précisément les données pour un grand nombre de requêtes, car sinon, le volume considérable d’événements peut saturer la file d’attente interne du journal système, et une partie d’entre eux sera perdue.
transfer_overflow_mode
throw: lever une exception (par défaut).break: arrêter l’exécution de la requête et renvoyer un résultat partiel, comme si la source de données était épuisée.
transform_null_in
NULL ne peuvent pas être comparées, car NULL représente une valeur indéfinie. Ainsi, la comparaison expr = NULL doit toujours renvoyer false. Avec ce paramètre, NULL = NULL renvoie true pour l’opérateur IN.
Valeurs possibles :
- 0 — La comparaison de valeurs
NULLavec l’opérateurINrenvoiefalse. - 1 — La comparaison de valeurs
NULLavec l’opérateurINrenvoietrue.
null_in :
traverse_shadow_remote_data_paths
union_default_mode
SELECT. Ce paramètre n’est utilisé qu’avec UNION lorsque UNION ALL ou UNION DISTINCT n’est pas explicitement indiqué.
Valeurs possibles :
'DISTINCT'— ClickHouse renvoie les lignes issues de la combinaison des requêtes en supprimant les doublons.'ALL'— ClickHouse renvoie toutes les lignes issues de la combinaison des requêtes, y compris les doublons.''— ClickHouse génère une exception lorsqu’il est utilisé avecUNION.
unique_key_max_encoded_size
UNIQUE KEY.
unknown_packet_in_send_data
update_parallel_mode
UPDATE concurrentes.
Valeurs possibles :
sync- exécute toutes les requêtesUPDATEde manière séquentielle.auto- exécute de manière séquentielle uniquement les requêtesUPDATEpour lesquelles il existe des dépendances entre les colonnes mises à jour dans une requête et les colonnes utilisées dans les expressions d’une autre requête.async- ne synchronise pas les requêtesUPDATE.
update_sequential_consistency
url_base
- URL relative au chemin (par ex.
data.csv) : fusionnée avec le chemin de l’URL de base conformément à la RFC 3986. Tout ce qui suit le dernier/dans le chemin de base est remplacé par l’URL relative ; la barre oblique finale est donc importante :https://example.com/dir/+data.csv=https://example.com/dir/data.csv, maishttps://example.com/dir+data.csv=https://example.com/data.csv. Si l’URL de base n’a pas de chemin (par ex.https://example.com), un/est inséré :https://example.com/data.csv. Les segments de point (./et../) dans l’URL relative sont normalisés :https://example.com/dir/+../a.csv=https://example.com/a.csv. - URL relative à l’hôte (par ex.
/test/data.csv) : résolue à partir du schéma et de l’hôte de l’URL de base. - URL relative au schéma (par ex.
//other.com/test/data.csv) : résolue à l’aide du schéma de l’URL de base. - Référence contenant uniquement une query string (par ex.
?x=1) : ajoutée au chemin de l’URL de base (en remplaçant toute requête ou tout fragment existant). - Référence contenant uniquement un fragment (par ex.
#frag) : ajoutée à l’URL de base, en conservant toute query string (en remplaçant tout fragment existant). - Référence vide : renvoie l’URL de base sans fragment.
url_base vaut https://example.com/def/, alors :
data.csvest résolu enhttps://example.com/def/data.csv/test/data.csvest résolu enhttps://example.com/test/data.csv//other.com/test/data.csvest résolu enhttps://other.com/test/data.csv
use_async_executor_for_materialized_views
use_cache_for_count_from_files
file/s3/url/hdfs/azureBlobStorage.
Activé par défaut.
use_client_time_zone
use_compact_format_in_distributed_parts_names
distributed_foreground_insert) dans les tables utilisant le moteur Distributed.
Valeurs possibles :
- 0 — Utilise le format de répertoire
user[:password]@host:port#default_database. - 1 — Utilise le format de répertoire
[shard{shard_index}[_replica{replica_index}]].
- avec
use_compact_format_in_distributed_parts_names=0, les modifications de la définition du cluster ne seront pas appliquées aux INSERT en arrière-plan. - avec
use_compact_format_in_distributed_parts_names=1, modifier l’ordre des nœuds dans la définition du cluster changerashard_index/replica_index; soyez donc vigilant.
use_concurrency_control
concurrent_threads_soft_limit_num et concurrent_threads_soft_limit_ratio_to_cores). S’il est désactivé, cela permet d’utiliser un plus grand nombre de threads même si le serveur est surchargé (non recommandé en usage normal, et surtout nécessaire pour les tests).
Valeur par défaut dans Cloud : 0.
use_hash_table_stats_for_join_reordering
use_hedged_requests
hedged_connection_timeout
ou si aucune donnée n’a été reçue dans le délai receive_data_timeout. La requête utilise la première connexion qui envoie un paquet Progress non vide (ou un paquet Data, si allow_changing_replica_until_first_data_packet) ;
les autres connexions sont annulées. Les requêtes avec max_parallel_replicas > 1 sont prises en charge.
Activé par défaut.
Valeur par défaut dans Cloud : 0.
use_hive_partitioning
/name=value/) des moteurs de table de type fichier File/S3/URL/HDFS/AzureBlobStorage, et permet d’utiliser les colonnes de partition comme colonnes virtuelles dans la requête. Ces colonnes virtuelles auront les mêmes noms que dans le chemin partitionné, mais commenceront par _.
use_iceberg_metadata_files_cache
- 0 - Désactivé
- 1 - Activé
use_iceberg_partition_pruning
use_index_for_in_with_subqueries
use_index_for_in_with_subqueries_max_values
use_join_disjunctions_push_down
use_legacy_to_time
use_lightweight_primary_key_index_analysis
MergeTree avec des clés primaires longues.
Lorsqu’il est activé, la durée d’exécution de l’analyse de l’index dépend principalement de la complexité du filtre de la requête (c’est-à-dire des colonnes clés réellement utilisées), et non de la longueur de la clé primaire. Par conséquent, l’extension de la clé de tri n’ajoute qu’un surcoût négligeable à l’analyse de l’index pour les requêtes qui ne filtrent que sur quelques-unes de ses colonnes.
Valeurs possibles :
- 0 — Désactivé. Toutes les colonnes de la clé primaire sont traitées lors de l’analyse de l’index.
- 1 — Activé.
use_page_cache_for_disks_without_file_cache
use_page_cache_for_local_disks
use_page_cache_for_object_storage
use_page_cache_with_distributed_cache
use_paimon_partition_pruning
use_parquet_metadata_cache
- 0 - Désactivé
- 1 - Activé
use_partition_pruning
use_partition_key
Utilise la clé de partition pour réduire le nombre de partitions analysées lors de l’exécution des requêtes sur les tables MergeTree.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
use_primary_key
- 0 — Désactivé.
- 1 — Activé.
use_query_cache
SELECT peuvent utiliser le cache de requêtes. Les paramètres enable_reads_from_query_cache
et enable_writes_to_query_cache contrôlent plus précisément l’utilisation du cache.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
use_query_condition_cache
WHERE,
et réutilise ces informations comme index éphémère pour les requêtes suivantes.
Valeurs possibles :
- 0 - Désactivé
- 1 - Activé
use_reader_executor
ReaderExecutor au lieu de l’empilement legacy de tampons de lecture. Revient au chemin legacy pour les configurations que l’executor ne prend pas encore en charge.
use_roaring_bitmap_iceberg_positional_deletes
use_skip_indexes
- 0 — Désactivé.
- 1 — Activé.
use_skip_indexes_for_disjunctions
- 0 — Désactivé.
- 1 — Activé.
use_skip_indexes_for_top_k
ORDER BY <column> LIMIT n, l’optimiseur tentera d’utiliser cet index MinMax pour ignorer les granules non pertinentes pour le résultat final. Cela peut réduire la latence des requêtes.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
use_skip_indexes_if_final
- 0 — Désactivé.
- 1 — Activé.
use_skip_indexes_if_final_exact_mode
- 0 — Désactivé.
- 1 — Activé.
use_skip_indexes_on_data_read
- 0 — Désactivé.
- 1 — Activé.
use_statistics
use_statistics_cache
use_statistics_for_part_pruning
- 0 — Désactivé.
- 1 — Activé.
use_strict_insert_block_limits
- Seuils min (AND) : min_insert_block_size_rows ET min_insert_block_size_bytes sont tous deux atteints.
- Seuils max (OR) : soit max_insert_block_size_rows, soit max_insert_block_size_bytes est atteint.
- Seuils min (OR) : min_insert_block_size_rows OU min_insert_block_size_bytes est atteint.
use_structure_from_insertion_table_in_table_functions
use_text_index_header_cache
use_text_index_like_evaluation_by_dictionary_scan
use_text_index_postings_cache
use_text_index_tokens_cache
use_top_k_dynamic_filtering
ORDER BY <column> LIMIT n.
Lorsqu’elle est activée, le moteur d’exécution de la requête tente d’ignorer les granules et les lignes qui ne feront pas partie des top N lignes finales du jeu de résultats. Cette optimisation est de nature dynamique, et les gains de latence dépendent de la distribution des données et de la présence d’autres prédicats dans la requête.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
use_top_k_dynamic_filtering_for_variable_length_types
use_top_k_dynamic_filtering de s’appliquer lorsque la colonne de tri a un type de données de longueur variable (par ex. String, Array, Map, Tuple contenant des éléments de longueur variable).
Pour de tels types, la comparaison du seuil ligne par ligne effectuée par le filtre dynamique peut coûter plus qu’elle ne rapporte lorsque le minimum lexicographique de la colonne prédomine (par ex. des chaînes majoritairement vides) et que peu de granules peuvent être ignorés. Dans ce cas, le filtre dynamique dégrade la latence des requêtes au lieu de l’améliorer.
Lorsque ce paramètre vaut 0, le filtrage dynamique est limité aux colonnes dont les valeurs ont une taille maximale fixe en mémoire (nombres, Date, DateTime, FixedString, Enum, Nullable de tels types, Tuple de tels types). Lorsqu’il vaut 1, le filtrage dynamique s’applique aussi aux types de longueur variable.
Valeurs possibles :
- 0 — Désactivé.
- 1 — Activé.
use_uncompressed_cache
use_variant_as_common_type
Variant comme type de résultat pour les fonctions if/multiIf/array/map lorsqu’il n’existe aucun type commun entre les types d’arguments.
Exemple :
use_variant_default_implementation_for_comparisons
use_with_fill_by_sorting_prefix
validate_enum_literals_in_operators
IN, NOT IN, ==, != sont validés par rapport au type enum, et une exception est levée si le littéral ne correspond pas à une valeur enum valide.
validate_mutation_query
validate_polygons
- 0 — Le déclenchement d’une exception est désactivé.
pointInPolygonaccepte les polygones invalides et peut renvoyer des résultats incorrects. - 1 — Le déclenchement d’une exception est activé.
variant_throw_on_type_mismatch
true(par défaut) — génère une exception.false— renvoieNULLpour ces lignes à la place.
vector_search_filter_strategy
- ‘auto’ - Postfiltering (la sémantique exacte peut changer à l’avenir).
- ‘postfilter’ - Utilise l’index de similarité vectorielle pour identifier les plus proches voisins, puis applique les autres filtres
- ‘prefilter’ - Évalue d’abord les autres filtres, puis effectue une recherche brute-force pour identifier les voisins.
vector_search_index_fetch_multiplier
vector_search_postfilter_multiplier
Multiplie par cette valeur le nombre de plus proches voisins récupérés depuis l’index de similarité vectorielle. S’applique uniquement lors d’un post-filtrage avec d’autres prédicats ou si le paramètre ‘vector_search_with_rescoring = 1’.
vector_search_with_rescoring
wait_changes_become_visible_after_commit_mode
wait_for_async_insert
wait_for_async_insert_timeout
wait_for_part_commit_in_dependent_materialized_views
JOIN voie la part écrite par ce sink.
La garantie s’applique à chaque instance de sink individuellement — les parts écrites par d’autres threads de sink du même INSERT peuvent ne pas encore être visibles. Ce paramètre ne garantit pas d’ordre de validation entre les threads.
N’a aucun effet sur les insertions dans des tables sans vues matérialisées dépendantes.
wait_for_window_view_fire_signal_timeout
webassembly_udf_max_fuel
webassembly_udf_max_fuel = 1 correspond à environ 1024 unités de fuel. Définissez-la sur 0 pour supprimer toute limite finie. S’applique uniquement aux fonctions dont le paramètre propre à la fonction webassembly_udf_enable_fuel est défini sur true, ce qui est la valeur par défaut.