Todos los ajustes que aparecen a continuación también están disponibles en la tabla system.settings. Estos ajustes se generan automáticamente a partir del código fuente.
Escribe la cabecera CORS HTTP adicional.
Una expresión de filtrado adicional que se aplica al resultado de la consulta SELECT.
Esta configuración no se aplica a ninguna subconsulta.
Ejemplo
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SElECT * FROM table_1;
┌─x─┬─y────┐
│ 1 │ a │
│ 2 │ bb │
│ 3 │ ccc │
│ 4 │ dddd │
└───┴──────┘
SELECT *
FROM table_1
SETTINGS additional_result_filter = 'x != 2'
┌─x─┬─y────┐
│ 1 │ a │
│ 3 │ ccc │
│ 4 │ dddd │
└───┴──────┘
Una expresión de filtro adicional que se aplica tras leer
de la tabla especificada.
Ejemplo
INSERT INTO table_1 VALUES (1, 'a'), (2, 'bb'), (3, 'ccc'), (4, 'dddd');
SELECT * FROM table_1;
┌─x─┬─y────┐
│ 1 │ a │
│ 2 │ bb │
│ 3 │ ccc │
│ 4 │ dddd │
└───┴──────┘
SELECT *
FROM table_1
SETTINGS additional_table_filters = {'table_1': 'x != 2'}
┌─x─┬─y────┐
│ 1 │ a │
│ 3 │ ccc │
│ 4 │ dddd │
└───┴──────┘
Formato de entrada de AggregateFunction durante las operaciones INSERT.
Valores posibles:
state — Cadena binaria con el estado serializado (valor predeterminado). Este es el comportamiento predeterminado, en el que se esperan valores de AggregateFunction como datos binarios.
value — El formato espera un único valor del argumento de la función de agregación o, en el caso de varios argumentos, una tupla con ellos. Se deserializarán mediante el IDataType o DataTypeTuple correspondiente y luego se agregarán para formar el estado.
array — El formato espera un Array de valores, como se describe en la opción value anterior. Todos los elementos del array se agregarán para formar el estado.
Ejemplos
Para una tabla con la estructura:
CREATE TABLE example (
user_id UInt64,
avg_session_length AggregateFunction(avg, UInt32)
);
Con aggregate_function_input_format = 'value':
INSERT INTO example FORMAT CSV
123,456
Con aggregate_function_input_format = 'array':
INSERT INTO example FORMAT CSV
123,"[456,789,101]"
Nota: Los formatos value y array son más lentos que el formato state predeterminado, ya que requieren crear y agregar valores durante la inserción.
aggregate_functions_null_for_empty
Habilita o deshabilita la reescritura de todas las funciones de agregación de una consulta, añadiéndoles el sufijo -OrNull. Actívelo para lograr compatibilidad con el estándar SQL.
Se implementa mediante la reescritura de consultas (de forma similar al ajuste count_distinct_implementation) para obtener resultados coherentes en consultas distribuidas.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Ejemplo
Considere la siguiente consulta con funciones de agregación:
SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;
Con aggregate_functions_null_for_empty = 0, se produciría:
┌─SUM(-1)─┬─MAX(0)─┐
│ 0 │ 0 │
└─────────┴────────┘
Con aggregate_functions_null_for_empty = 1, el resultado sería:
┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│ NULL │ NULL │
└───────────────┴──────────────┘
aggregation_in_order_max_block_bytes
Tamaño máximo del bloque, en bytes, acumulado durante la agregación en el orden de la clave primaria. Un tamaño de bloque menor permite paralelizar más la etapa final de combinación de la agregación.
aggregation_memory_efficient_merge_threads
Número de hilos que se deben usar para fusionar los resultados intermedios de agregación en el modo de uso eficiente de memoria. Cuanto mayor sea, más memoria se consumirá. 0 significa lo mismo que ‘max_threads’.
ai_function_max_api_calls_per_query
Número máximo de solicitudes HTTP que las funciones de IA pueden realizar por consulta. Establezca 0 para desactivarlo.
Número máximo total de tokens de entrada (prompt) en todas las llamadas a la API de la función de IA dentro de una sola consulta. Se contabiliza de forma acumulativa a partir de las respuestas del proveedor. Tenga en cuenta que este límite puede superarse por el equivalente a los tokens de entrada de una llamada, ya que el número de tokens de entrada de una llamada no se conoce de antemano. Establézcalo en 0 para desactivarlo.
ai_function_max_output_tokens_per_query
Número máximo total de tokens de salida (completion) en todas las llamadas a la API de la función de IA dentro de una sola consulta. Se contabiliza de forma acumulativa a partir de las respuestas del proveedor. Tenga en cuenta que este límite puede superarse en el equivalente a los tokens de salida de una llamada, ya que el número de tokens de salida de una llamada no se conoce de antemano. Establezca 0 para desactivarlo.
Número máximo de reintentos ante errores transitorios para cada solicitud individual a la API. Cada reintento usa backoff exponencial a partir de ai_function_retry_initial_delay_ms.
ai_function_request_timeout_sec
Tiempo de espera, en segundos, para cada solicitud HTTP realizada por las funciones de IA (completions de chat con IA y llamadas a la API de embedding). Si una solicitud no se completa dentro de este plazo, se considera fallida y puede reintentarse según ai_function_max_retries.
ai_function_retry_initial_delay_ms
Retraso inicial, en milisegundos, antes del primer reintento de una solicitud fallida a la API de una función de IA. El retraso se duplica en cada intento posterior (backoff exponencial). Por ejemplo, con la configuración predeterminada: 1000ms, 2000ms, 4000ms.
ai_function_throw_on_error
Si se establece en true (valor predeterminado), una llamada a una función de IA que falla de forma permanente tras agotar todos los reintentos aborta la consulta con una excepción. Si se establece en false, la fila con error recibe el valor predeterminado del tipo de columna (cadena vacía para String) y el procesamiento continúa.
ai_function_throw_on_quota_exceeded
Si es true (valor predeterminado), al superar un límite de QUOTA de una función de IA (ai_function_max_input_tokens_per_query, ai_function_max_output_tokens_per_query o ai_function_max_api_calls_per_query), la consulta se aborta con una excepción. Si es false, las filas restantes reciben el valor predeterminado del tipo de columna (cadena vacía para String).
allow_aggregate_partitions_independently
Habilita la agregación independiente de particiones en hilos separados cuando la clave de partición se ajusta a la clave de agrupación. Resulta beneficioso cuando el número de particiones es cercano al número de núcleos y las particiones tienen aproximadamente el mismo tamaño
allow_archive_path_syntax
Los motores File/S3 y la función de tabla interpretarán las rutas con ’::’ como <archive> :: <file> si el archivo tiene la extensión correcta.
allow_asynchronous_read_from_io_pool_for_merge_tree
Usa el grupo de E/S en segundo plano para leer de tablas MergeTree. Esta configuración puede mejorar el rendimiento de las consultas limitadas por E/S
allow_calculating_subcolumns_sizes_for_merge_tree_reading
Cuando está habilitada, ClickHouse calculará el tamaño de los archivos necesarios para leer cada subcolumna, lo que mejora el cálculo del tamaño de las tareas y los bloques.
allow_changing_replica_until_first_data_packet
Si está habilitado, en las solicitudes hedged podemos iniciar una nueva conexión hasta recibir el primer paquete de datos, incluso si ya hemos avanzado algo
(pero no ha habido actualizaciones de progreso durante el tiempo de espera de receive_data_timeout); de lo contrario, deshabilitamos el cambio de réplica después de la primera vez que hubo progreso.
allow_create_index_without_type
Permite la consulta CREATE INDEX sin TYPE. La consulta se ignorará. Se hizo para pruebas de compatibilidad con SQL.
allow_custom_error_code_in_throwif
Permite usar un código de error personalizado en la función throwIf(). Si es true, las excepciones generadas pueden tener códigos de error inesperados.
Si se establece en true, se permite a un usuario ejecutar consultas DDL.
allow_deprecated_database_ordinary
Permite crear bases de datos con el motor Ordinary obsoleto
allow_deprecated_error_prone_window_functions
Permite usar funciones de ventana obsoletas y propensas a errores (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)
allow_deprecated_snowflake_conversion_functions
Las funciones snowflakeToDateTime, snowflakeToDateTime64, dateTimeToSnowflake y dateTime64ToSnowflake están obsoletas y se deshabilitan de forma predeterminada.
En su lugar, utilice las funciones snowflakeIDToDateTime, snowflakeIDToDateTime64, dateTimeToSnowflakeID y dateTime64ToSnowflakeID.
Para volver a habilitar las funciones obsoletas (por ejemplo, durante un período de transición), establezca este ajuste en true.
allow_deprecated_syntax_for_merge_tree
Permite crear tablas *MergeTree con la sintaxis en desuso para la definición del motor
Si se establece en true, se permite que un usuario ejecute consultas DDL distribuidas.
Permite ejecutar consultas ALTER TABLE … DROP DETACHED PART[ITION] …
allow_dynamic_type_in_join_keys
Permite usar el tipo Dynamic en las claves de JOIN. Se añadió por motivos de compatibilidad. No se recomienda usar el tipo Dynamic en las claves de JOIN, ya que la comparación con otros tipos puede producir resultados inesperados.
allow_execute_multiif_columnar
Permite ejecutar la función multiIf de forma columnar
allow_experimental_ai_functions
Habilita las funciones de IA experimentales (p. ej., aiGenerateContent). Estas funciones realizan llamadas HTTP externas a proveedores de IA.
allow_experimental_analyzer
Aliases: enable_analyzer
Permite usar el nuevo analizador de consultas.
allow_experimental_cleanup_old_data_files_compaction
Permite eliminar archivos de datos antiguos durante la compactación de Iceberg.
allow_experimental_codecs
Si se establece en true, permite especificar códecs de compresión experimentales (aunque todavía no tenemos ninguno y esta opción no hace nada).
Permite ejecutar subconsultas correlacionadas.
allow_experimental_database_glue_catalog
Alias: allow_database_glue_catalog
Permite usar el motor de base de datos experimental DataLakeCatalog con catalog_type = ‘glue’
Valor predeterminado en Cloud: 1.
allow_experimental_database_hms_catalog
Permite el motor de base de datos experimental DataLakeCatalog con catalog_type = ‘hms’
allow_experimental_database_iceberg
Alias: allow_database_iceberg
Permite usar el motor de base de datos experimental DataLakeCatalog con catalog_type = ‘iceberg’
Valor predeterminado de Cloud: 1.
allow_experimental_database_materialized_postgresql
Permite crear una database con Engine=MaterializedPostgreSQL(…).
allow_experimental_database_paimon_rest_catalog
Permite el motor de base de datos experimental DataLakeCatalog con catalog_type = ‘paimon_rest’
allow_experimental_database_unity_catalog
Aliases: allow_database_unity_catalog
Permite usar el motor de base de datos experimental DataLakeCatalog con catalog_type = ‘unity’
Valor predeterminado en Cloud: 1.
allow_experimental_delta_kernel_rs
Permite usar la implementación experimental de delta-kernel-rs.
allow_experimental_delta_lake_writes
Habilita la función de escritura de delta-kernel.
allow_experimental_expire_snapshots
Permite ejecutar el comando experimental de Iceberg ALTER TABLE ... EXECUTE expire_snapshots.
allow_experimental_funnel_functions
Activa las funciones experimentales para el análisis de embudos.
allow_experimental_geo_types_in_iceberg
Permite interpretar los tipos de campo geometry y geography de Iceberg como el tipo Geometry (Variant) de ClickHouse.
allow_experimental_hash_functions
Permite el uso de funciones hash experimentales
allow_experimental_iceberg_compaction
Permite usar OPTIMIZE explícitamente en tablas Iceberg.
allow_experimental_join_right_table_sorting
Si se establece en true y se cumplen las condiciones de join_to_sort_minimum_perkey_rows y join_to_sort_maximum_table_rows, reordena la tabla de la derecha por clave para mejorar el rendimiento en un hash join left o inner.
allow_experimental_json_lazy_type_hints
Habilita las indicaciones de tipo diferidas experimentales para el tipo JSON. Esta función permite optimizar las conversiones del tipo JSON al posponer la evaluación de las indicaciones de tipo.
allow_experimental_kafka_offsets_storage_in_keeper
Permite la función experimental de almacenar en ClickHouse Keeper los offsets de Kafka. Cuando está habilitada, se pueden especificar una ruta de ClickHouse Keeper y un nombre de réplica para el motor de tabla Kafka. Como resultado, en lugar del motor Kafka habitual, se utilizará un nuevo tipo de motor de almacenamiento que almacena los offsets confirmados principalmente en ClickHouse Keeper
allow_experimental_kusto_dialect
Habilita Kusto Query Language (KQL), una alternativa a SQL.
allow_experimental_materialized_postgresql_table
Permite usar el table engine MaterializedPostgreSQL. Está deshabilitado de forma predeterminada porque esta función es experimental.
allow_experimental_nlp_functions
Habilita las funciones experimentales de procesamiento del lenguaje natural.
allow_experimental_nullable_tuple_type
Permite crear columnas Nullable Tuple en las tablas.
Esta configuración no controla si las subcolumnas de tupla extraídas pueden ser Nullable (por ejemplo, de columnas Dynamic, Variant, JSON o Tuple).
Utilice allow_nullable_tuple_in_extracted_subcolumns para controlar si las subcolumnas de tupla extraídas pueden ser Nullable.
allow_experimental_object_storage_queue_hive_partitioning
Permite usar el particionado de Hive con los motores S3Queue/AzureQueue
allow_experimental_paimon_storage_engine
Permite crear tablas que usen motores de tabla Paimon*.
allow_experimental_parallel_reading_from_replicas
Alias: enable_parallel_replicas
Usa hasta max_parallel_replicas réplicas de cada segmento para ejecutar consultas SELECT. La lectura se paraleliza y se coordina de forma dinámica. 0 - deshabilitado, 1 - habilitado, se deshabilita silenciosamente en caso de fallo, 2 - habilitado, se lanza una excepción en caso de fallo
allow_experimental_polyglot_dialect
Habilita el transpilador SQL polyglot: transpila SQL de más de 30 dialectos (MySQL, PostgreSQL, SQLite, Snowflake, DuckDB, etc.) a ClickHouse SQL.
allow_experimental_prql_dialect
Activa PRQL, una alternativa a SQL.
allow_experimental_query_deduplication
Deduplicación experimental de datos para consultas SELECT basada en UUIDs de partes
allow_experimental_time_series_aggregate_functions
Alias: allow_experimental_ts_to_grid_aggregate_function
Funciones de agregación experimentales timeSeries* para el remuestreo de series temporales de tipo Prometheus y el cálculo de tasas y deltas.
allow_experimental_time_series_table
Permite crear tablas con el motor de tabla TimeSeries. Posibles valores:
- 0 — el motor de tabla TimeSeries está deshabilitado.
- 1 — el motor de tabla TimeSeries está habilitado.
allow_experimental_unique_key
Permite crear tablas con la cláusula UNIQUE KEY en motores de la familia MergeTree.
allow_experimental_window_view
Habilita WINDOW VIEW. Aún no está lo suficientemente maduro.
allow_experimental_ytsaurus_dictionary_source
Fuente de diccionario experimental para la integración con YTsaurus.
allow_experimental_ytsaurus_table_engine
Motor de tabla experimental para la integración con YTsaurus.
allow_experimental_ytsaurus_table_function
Motor de tabla experimental para la integración con YTsaurus.
allow_fuzz_query_functions
Habilita la función fuzzQuery, que aplica mutaciones aleatorias al AST de una cadena de consulta.
allow_general_join_planning
Permite usar un algoritmo de planificación de join más general, capaz de manejar condiciones más complejas, pero solo funciona con hash join. Si hash join no está habilitado, se usa el algoritmo habitual de planificación de join independientemente del valor de esta configuración.
Permite utilizar la función getClientHTTPHeader, que permite obtener el valor de una cabecera de la solicitud HTTP actual. No está habilitada de forma predeterminada por motivos de seguridad, ya que algunas cabeceras, como Cookie, podrían contener información confidencial. Tenga en cuenta que las cabeceras X-ClickHouse-* y Authentication siempre están restringidas y no se pueden obtener con esta función.
Permite las funciones que utilizan la biblioteca Hyperscan. Desactívala para evitar tiempos de compilación potencialmente largos y un uso excesivo de recursos.
allow_iceberg_remove_orphan_files
Permite usar ‘ALTER TABLE … EXECUTE remove_orphan_files()’ en tablas Iceberg.
allow_insert_into_iceberg
Aliases: allow_experimental_insert_into_iceberg
Permite ejecutar consultas insert en Iceberg.
allow_introspection_functions
Habilita o deshabilita las funciones de introspección para el perfilado de consultas.
Valores posibles:
- 1 — Funciones de introspección habilitadas.
- 0 — Funciones de introspección deshabilitadas.
Véase también
allow_key_condition_coalesce_rewrite
Reescribe predicados de la forma coalesce(a_1, ..., a_N) <op> const (y, de forma equivalente, ifNull, o con la constante a la izquierda) como la disyunción (a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const) antes del análisis de índices, de modo que puedan usarse la clave primaria por columna y los skip indexes de cada a_i. Se admiten formas con constantes parciales como coalesce(a, 42, b) y coalesce(a, b, 42): la lista de argumentos se normaliza igual que el propio coalesce (se eliminan los literales NULL y se descartan los argumentos posteriores al primero que no sea Nullable) y, si existe, una constante final distinta de NULL se emite como la rama final. La reescritura es estrictamente aditiva para la poda de índices; el filtrado en tiempo de ejecución sigue usando el predicado original.
allow_materialized_view_with_bad_select
Permite CREATE MATERIALIZED VIEW con una consulta SELECT que haga referencia a tablas o columnas inexistentes. Aun así, debe ser sintácticamente válida. No se aplica a las MV actualizables. Tampoco se aplica si el esquema de la MV debe inferirse a partir de la consulta SELECT (es decir, si CREATE no tiene lista de columnas ni tabla TO). Puede usarse para crear una MV antes de su tabla de origen.
allow_named_collection_override_by_default
Permite de forma predeterminada la sobrescritura de los campos de las colecciones con nombre.
Permite ejecutar sentencias ALTER que afectan no solo a los metadatos de las tablas, sino también a los datos en disco
allow_nonconst_timezone_arguments
Permite argumentos de zona horaria no constantes en determinadas funciones relacionadas con el tiempo, como toTimeZone(), fromUnixTimestamp*(), snowflakeToDateTime*().
Esta configuración existe únicamente por motivos de compatibilidad. En ClickHouse, la zona horaria es una propiedad del tipo de dato y, por tanto, de la columna.
Habilitar esta configuración da la impresión errónea de que distintos valores dentro de una columna pueden tener distintas zonas horarias.
Por lo tanto, no habilite esta configuración.
allow_nondeterministic_mutations
Configuración a nivel de usuario que permite que las mutaciones en tablas replicadas utilicen funciones no deterministas como dictGet.
Dado que, por ejemplo, los diccionarios pueden estar desincronizados entre nodos, las mutaciones que extraen valores de ellos no están permitidas en tablas replicadas de forma predeterminada. Al habilitar esta configuración, se permite este comportamiento, por lo que es responsabilidad del usuario garantizar que los datos utilizados estén sincronizados en todos los nodos.
Ejemplo
<profiles>
<default>
<allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>
<!-- ... -->
</default>
<!-- ... -->
</profiles>
allow_nondeterministic_optimize_skip_unused_shards
Permite usar funciones no deterministas (como rand o dictGet, ya que esta última tiene algunas particularidades con las actualizaciones) en la clave de segmentación.
Valores posibles:
- 0 — No permitido.
- 1 — Permitido.
allow_nullable_tuple_in_extracted_subcolumns
Controla si las subcolumnas extraídas de tipo Tuple(...) pueden tener el tipo Nullable(Tuple(...)).
false: Devuelve Tuple(...) y usa los valores de tupla predeterminados para las filas en las que falta la subcolumna.
true: Devuelve Nullable(Tuple(...)) y usa NULL para las filas en las que falta la subcolumna.
Esta configuración solo controla el comportamiento de las subcolumnas extraídas.
No controla si se pueden crear columnas Nullable(Tuple(...)) en tablas; eso se controla con allow_experimental_nullable_tuple_type.
ClickHouse usa el valor de esta configuración cargado al iniciar el servidor.
Los cambios realizados con SET o SETTINGS a nivel de consulta no modifican el comportamiento de las subcolumnas extraídas.
Para cambiar el comportamiento de las subcolumnas extraídas, actualice allow_nullable_tuple_in_extracted_subcolumns en la configuración del perfil de inicio (por ejemplo, users.xml) y reinicie el servidor.
allow_prefetched_read_pool_for_local_filesystem
Usa preferentemente el threadpool de prelectura si todas las partes están en el sistema de archivos local
allow_prefetched_read_pool_for_remote_filesystem
Preferir el pool de hilos con lectura anticipada si todas las partes están en un sistema de archivos remoto
allow_push_predicate_ast_for_distributed_subqueries
Permite aplicar push predicate a nivel de AST en subconsultas distribuidas con el analizador habilitado
allow_push_predicate_when_subquery_contains_with
Permite aplicar push predicate cuando la subconsulta contiene una cláusula WITH
allow_rank_dense_rank_arguments
Permite pasar argumentos a las funciones de ventana RANK y DENSE_RANK para mantener la compatibilidad con versiones anteriores.
Según el estándar SQL, RANK y DENSE_RANK no aceptan argumentos: clasifican las filas únicamente en función de la ventana
OVER (ORDER BY ...). En las versiones de ClickHouse anteriores a la 26.5, consultas como
RANK(x) OVER (...) aceptaban e ignoraban silenciosamente el argumento, lo que generaba confusión entre los usuarios
(el argumento visible sugería que influía en la clasificación, pero no era así).
Cuando esta configuración es false (el valor predeterminado), RANK y DENSE_RANK rechazan cualquier argumento y
generan NUMBER_OF_ARGUMENTS_DOESNT_MATCH. Cuando se establece en true, se restaura el comportamiento heredado permisivo:
los argumentos se ignoran silenciosamente, igual que antes de la versión 26.5.
allow_reorder_prewhere_conditions
Permite reordenar las condiciones al moverlas de WHERE a PREWHERE para optimizar el filtrado
Controla si se permite o no SETTINGS después de FORMAT en consultas INSERT. No se recomienda usar esta opción, ya que puede interpretar parte de SETTINGS como valores.
Ejemplo:
INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');
Pero la siguiente consulta solo funcionará con allow_settings_after_format_in_insert:
SET allow_settings_after_format_in_insert=1;
INSERT INTO FUNCTION null('foo String') VALUES ('bar') SETTINGS max_threads=1;
Valores posibles:
- 0 — No se permite.
- 1 — Se permite.
Use esta configuración solo por compatibilidad con versiones anteriores si sus casos de uso dependen de la sintaxis anterior.
Permite utilizar la biblioteca simdjson en las funciones ‘JSON*’ si las instrucciones AVX2 están disponibles. Si se desactiva, se utilizará rapidjson.
Permite generar la salida de columnas con tipos especiales de serialización, como Sparse y Replicated, sin convertirlas en una representación de columna completa.
Ayuda a evitar copias de datos innecesarias durante el formateo.
Alias: allow_experimental_statistics
Permite definir columnas con estadísticas y gestionar las estadísticas.
allow_statistics_optimize
Alias: allow_statistic_optimize
Permite utilizar estadísticas para optimizar consultas
Si se establece en true, se permite especificar códecs de compresión sin sentido.
allow_suspicious_fixed_string_types
En la instrucción CREATE TABLE, permite crear columnas de tipo FixedString(n) con n > 256. Un FixedString con longitud >= 256 es sospechoso y muy probablemente indica un uso incorrecto
Rechaza índices primarios/secundarios y claves de ordenación con expresiones idénticas
allow_suspicious_low_cardinality_types
Permite o restringe el uso de LowCardinality con tipos de datos de tamaño fijo de 8 bytes o menos: tipos de datos numéricos y FixedString(8_bytes_or_less).
En valores fijos pequeños, el uso de LowCardinality suele ser ineficiente, porque ClickHouse almacena un índice numérico para cada fila. Como resultado:
- El uso de espacio en disco puede aumentar.
- El consumo de RAM puede ser mayor, según el tamaño del diccionario.
- Algunas funciones pueden ejecutarse más lentamente debido a operaciones adicionales de codificación/decodificación.
Los tiempos de merge en tablas con motor MergeTree pueden aumentar por todas las razones descritas anteriormente.
Posibles valores:
- 1 — El uso de
LowCardinality no está restringido.
- 0 — El uso de
LowCardinality está restringido.
allow_suspicious_primary_key
Permite PRIMARY KEY/ORDER BY sospechosos en MergeTree (es decir, SimpleAggregateFunction).
allow_suspicious_ttl_expressions
Rechaza las expresiones TTL que no dependen de ninguna columna de la tabla. La mayoría de las veces, esto indica un error del usuario.
allow_suspicious_types_in_group_by
Permite o restringe el uso de los tipos Variant y Dynamic en las claves de GROUP BY.
allow_suspicious_types_in_order_by
Permite o restringe el uso de los tipos Variant y Dynamic en las claves ORDER BY.
allow_suspicious_variant_types
En la instrucción CREATE TABLE, permite especificar el tipo Variant con tipos de variante similares (por ejemplo, distintos tipos numéricos o de fecha). Habilitar esta configuración puede introducir cierta ambigüedad al trabajar con valores de tipos similares.
allow_unrestricted_reads_from_keeper
Permite lecturas sin restricciones (sin condición en la ruta) desde la tabla system.zookeeper; puede ser útil, pero no es seguro para ZooKeeper
alter_move_to_space_execute_async
Ejecuta ALTER TABLE MOVE … TO [DISK|VOLUME] de forma asíncrona
alter_partition_verbose_result
Habilita o deshabilita la visualización de información sobre las partes a las que se han aplicado correctamente las operaciones de manipulación de particiones y partes.
Se aplica a ATTACH PARTITION|PART y a FREEZE PARTITION.
Valores posibles:
- 0 — deshabilita el nivel de detalle.
- 1 — habilita el nivel de detalle.
Ejemplo
CREATE TABLE test(a Int64, d Date, s String) ENGINE = MergeTree PARTITION BY toYYYYMDECLARE(d) ORDER BY a;
INSERT INTO test VALUES(1, '2021-01-01', '');
INSERT INTO test VALUES(1, '2021-01-01', '');
ALTER TABLE test DETACH PARTITION ID '202101';
ALTER TABLE test ATTACH PARTITION ID '202101' SETTINGS alter_partition_verbose_result = 1;
┌─command_type─────┬─partition_id─┬─part_name────┬─old_part_name─┐
│ ATTACH PARTITION │ 202101 │ 202101_7_7_0 │ 202101_5_5_0 │
│ ATTACH PARTITION │ 202101 │ 202101_8_8_0 │ 202101_6_6_0 │
└──────────────────┴──────────────┴──────────────┴───────────────┘
ALTER TABLE test FREEZE SETTINGS alter_partition_verbose_result = 1;
┌─command_type─┬─partition_id─┬─part_name────┬─backup_name─┬─backup_path───────────────────┬─part_backup_path────────────────────────────────────────────┐
│ FREEZE ALL │ 202101 │ 202101_7_7_0 │ 8 │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_7_7_0 │
│ FREEZE ALL │ 202101 │ 202101_8_8_0 │ 8 │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_8_8_0 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘
Alias: replication_alter_partitions_sync
Permite especificar el comportamiento de espera para las acciones que deben ejecutarse en las réplicas mediante consultas ALTER, OPTIMIZE o TRUNCATE.
Valores posibles:
0 — No esperar.
1 — Esperar la ejecución propia.
2 — Esperar a todos.
3 - Esperar solo a las réplicas activas.
Valor predeterminado de Cloud: 0.
alter_sync se aplica solo a tablas Replicated y SharedMergeTree; no tiene efecto al alterar tablas que no sean Replicated ni Shared.
Modo para las consultas ALTER que incluyen comandos UPDATE.
Valores posibles:
heavy - ejecuta una mutación normal.
lightweight - ejecuta una actualización ligera si es posible; de lo contrario, ejecuta una mutación normal.
lightweight_force - ejecuta una actualización ligera si es posible; de lo contrario, lanza una excepción.
analyze_index_with_space_filling_curves
Si una tabla tiene una curva de relleno espacial en su índice, p. ej., ORDER BY mortonEncode(x, y) o ORDER BY hilbertEncode(x, y), y la consulta incluye condiciones sobre sus argumentos, p. ej., x >= 10 AND x <= 20 AND y >= 20 AND y <= 30, utilice la curva de relleno espacial para el análisis del índice.
analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested
Permite añadir identificadores compuestos a nested. Esta es una configuración de compatibilidad porque cambia el resultado de la consulta. Cuando está deshabilitada, SELECT a.b.c FROM table ARRAY JOIN a no funciona, y SELECT a FROM table no incluye la columna a.b.c en el resultado de Nested a.
analyzer_compatibility_join_using_top_level_identifier
Forzar la resolución del identificador en JOIN USING a partir de la proyección (por ejemplo, en SELECT a + 1 AS b FROM t1 JOIN t2 USING (b) el join se realizará mediante t1.a + 1 = t2.b, en lugar de t1.b = t2.b).
Cuando está habilitado, el analizador sustituye las vistas ordinarias (no materializadas y no parametrizadas) por las subconsultas que las definen, lo que permite optimizaciones que abarcan esos límites, como el pushdown de predicados y la poda de columnas.
any_join_distinct_right_table_keys
Habilita el comportamiento heredado del servidor de ClickHouse en las operaciones ANY INNER|LEFT JOIN.
Use esta configuración solo por compatibilidad con versiones anteriores si sus casos de uso dependen del comportamiento heredado de JOIN.
Cuando el comportamiento heredado está habilitado:
- Los resultados de las operaciones
t1 ANY LEFT JOIN t2 y t2 ANY RIGHT JOIN t1 no son iguales porque ClickHouse usa una lógica con una correspondencia de claves entre tablas, de izquierda a derecha, de muchos a uno.
- Los resultados de las operaciones
ANY INNER JOIN contienen todas las filas de la tabla izquierda, igual que las operaciones SEMI LEFT JOIN.
Cuando el comportamiento heredado está deshabilitado:
- Los resultados de las operaciones
t1 ANY LEFT JOIN t2 y t2 ANY RIGHT JOIN t1 son iguales porque ClickHouse usa una lógica que proporciona una correspondencia de claves de uno a muchos en las operaciones ANY RIGHT JOIN.
- Los resultados de las operaciones
ANY INNER JOIN contienen una fila por clave de las tablas izquierda y derecha.
Valores posibles:
- 0 — El comportamiento heredado está deshabilitado.
- 1 — El comportamiento heredado está habilitado.
Véase también:
Habilita el filtrado de las filas eliminadas con eliminación ligera. Si se desactiva, una consulta podrá leer esas filas. Esto resulta útil para escenarios de depuración y de recuperación de filas eliminadas
Si es true, las mutaciones (UPDATE y DELETE) que no están materializadas en la data part se aplicarán en las consultas SELECT.
Si es true, las patch parts (que representan actualizaciones ligeras) se aplican en las consultas SELECT.
apply_patch_parts_join_cache_buckets
El número de buckets de la caché temporal para aplicar partes de parche en modo Join.
apply_prewhere_after_final
Cuando se habilita, las condiciones PREWHERE se aplican después del procesamiento FINAL en ReplacingMergeTree y motores similares.
Esto puede resultar útil cuando PREWHERE hace referencia a columnas que pueden tener valores distintos entre filas duplicadas
y quiere que FINAL seleccione la fila que prevalece antes de filtrar. Cuando está deshabilitada, PREWHERE se aplica durante la lectura.
Nota: Si apply_row_level_security_after_final está habilitada y la política de filas usa columnas que no forman parte de la clave de ordenación, PREWHERE también
se pospondrá para mantener el orden de ejecución correcto (la política de filas debe aplicarse antes de PREWHERE).
apply_row_policy_after_final
Cuando está habilitado, las políticas de fila y PREWHERE se aplican después del procesamiento FINAL en tablas *MergeTree. (Especialmente en ReplacingMergeTree)
Cuando está deshabilitado, las políticas de fila se aplican antes de FINAL, lo que puede producir resultados diferentes cuando la política
filtra filas que deberían usarse para la deduplicación en ReplacingMergeTree o motores similares.
Si la expresión de la política de fila depende solo de columnas de ORDER BY, seguirá aplicándose antes de FINAL como optimización,
ya que ese filtrado no puede afectar al resultado de la deduplicación.
Valores posibles:
- 0 — La política de fila y PREWHERE se aplican antes de FINAL (predeterminado).
- 1 — La política de fila y PREWHERE se aplican después de FINAL.
apply_settings_from_server
Indica si el cliente debe aceptar la configuración del servidor.
Esto solo afecta a las operaciones realizadas del lado del cliente, en particular el análisis de los datos de entrada de INSERT y el formateo del resultado de la consulta. La mayor parte de la ejecución de la consulta ocurre en el servidor y no se ve afectada por esta configuración.
Normalmente, esta configuración debe establecerse en el perfil de usuario (users.xml o consultas como ALTER USER), no a través del cliente (argumentos de la línea de comandos del cliente, consulta SET o sección SETTINGS de la consulta SELECT). A través del cliente puede cambiarse a false, pero no puede cambiarse a true (porque el servidor no enviará la configuración si el perfil de usuario tiene apply_settings_from_server = false).
Tenga en cuenta que, inicialmente (24.12), existía una configuración de servidor (send_settings_to_client), pero más tarde fue reemplazada por esta configuración de cliente para mejorar la usabilidad.
archive_adaptive_buffer_max_size_bytes
Limita el tamaño máximo del búfer adaptativo utilizado al escribir en archivos de archivado (por ejemplo, archivos tar
arrow_flight_request_descriptor_type
Tipo de descriptor que se utiliza para las solicitudes de Arrow Flight. ‘path’ envía el nombre del conjunto de datos como descriptor de ruta. ‘command’ envía una consulta SQL como descriptor de comando (obligatorio para Dremio).
Valores posibles:
- ‘path’ — Usa FlightDescriptor::Path (predeterminado; funciona con la mayoría de los servidores Arrow Flight)
- ‘command’ — Usa FlightDescriptor::Command con una consulta SELECT (obligatorio para Dremio)
Si es false (valor predeterminado), el AST fuzzer del servidor (controlado por ast_fuzzer_runs) solo aplica fuzzing a consultas de solo lectura (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). Si es true, se aplica fuzzing a todos los tipos de consultas, incluidas DDL e INSERT.
Habilita el AST fuzzer del servidor, que ejecuta consultas aleatorias después de cada consulta normal y descarta sus resultados.
- 0: deshabilitado (predeterminado).
- Un valor entre 0 y 1 (sin incluirlos): probabilidad de ejecutar una sola consulta generada por el fuzzer.
- Un valor >= 1: número de consultas generadas por el fuzzer que se ejecutarán por cada consulta normal.
El fuzzer acumula fragmentos de AST de todas las consultas de todas las sesiones, lo que produce mutaciones cada vez más interesantes con el tiempo. Las consultas generadas por el fuzzer que fallan se descartan silenciosamente; los resultados nunca se devuelven al cliente.
asterisk_include_alias_columns
Incluye las columnas ALIAS en las consultas con comodín (SELECT *).
Valores posibles:
- 0 - deshabilitado
- 1 - habilitado
asterisk_include_materialized_columns
Incluye columnas MATERIALIZED en consultas con comodín (SELECT *).
Posibles valores:
- 0 - deshabilitado
- 1 - habilitado
asterisk_include_virtual_columns
Incluye las columnas virtuales en la consulta con comodín (SELECT *).
Posibles valores:
- 0 - deshabilitado
- 1 - habilitado
Si es true, los datos de la consulta INSERT se almacenan en una cola y más tarde se escriben en la tabla en segundo plano. Si wait_for_async_insert es false, la consulta INSERT se procesa casi al instante; de lo contrario, el cliente esperará hasta que los datos se escriban en la tabla
async_insert_busy_timeout_decrease_rate
La tasa de crecimiento exponencial con la que se reduce el tiempo de espera de inserción asíncrona adaptativo
async_insert_busy_timeout_increase_rate
La tasa de crecimiento exponencial a la que aumenta el tiempo de espera adaptativo de inserción asíncrona
async_insert_busy_timeout_max_ms
Alias: async_insert_busy_timeout_ms
Tiempo máximo de espera antes de volcar los datos recopilados por consulta desde que apareció el primer dato.
Valor predeterminado de Cloud: 1000 (1s).
async_insert_busy_timeout_min_ms
Si el ajuste automático está habilitado mediante async_insert_use_adaptive_busy_timeout, es el tiempo mínimo de espera antes de volcar los datos recopilados por consulta desde que aparecieron los primeros datos. También sirve como valor inicial para el algoritmo adaptativo
Para las consultas INSERT asíncronas en la tabla replicada, especifica que debe realizarse la deduplicación de los bloques que se insertan
async_insert_max_data_size
Tamaño máximo, en bytes, de los datos sin analizar recopilados por consulta antes de insertarse
Valor predeterminado de Cloud: 104857600 (100 MiB).
async_insert_max_query_number
Número máximo de consultas de inserción antes de que se realice la inserción.
Solo surte efecto si la configuración async_insert_deduplicate es 1.
async_insert_poll_timeout_ms
Tiempo de espera para recuperar datos de la cola de inserción asíncrona
async_insert_use_adaptive_busy_timeout
Si se establece en true, usa un timeout adaptativo por ocupación para las inserciones asíncronas
async_query_sending_for_remote
Habilita la creación asíncrona de conexiones y el envío de la consulta mientras se ejecuta una consulta remota.
Habilitado de forma predeterminada.
Habilita la lectura asíncrona desde el socket al ejecutar una consulta remota.
Habilitado de forma predeterminada.
automatic_parallel_replicas_min_bytes_per_replica
Umbral de bytes que se deben leer por réplica para habilitar automáticamente las réplicas paralelas (solo se aplica cuando automatic_parallel_replicas_mode=1). 0 significa que no hay umbral.
El número total de bytes que se deben leer se estima a partir de las estadísticas recopiladas.
automatic_parallel_replicas_mode
Habilita el cambio automático a la ejecución con réplicas paralelas en función de las estadísticas recopiladas. Requiere enable_analyzer = 1, enable_parallel_replicas != 0, parallel_replicas_local_plan = 1 y que se proporcione cluster_for_parallel_replicas.
0 - deshabilitado, 1 - habilitado, 2 - solo está habilitada la recopilación de estadísticas (el cambio a la ejecución con réplicas paralelas está deshabilitado).
azure_allow_parallel_part_upload
Usa varios hilos para la carga multiparte de Azure.
azure_check_objects_after_upload
Comprobar cada objeto cargado en Azure Blob Storage para asegurarse de que la carga se haya completado correctamente
Tiempo de espera de conexión al host para discos de Azure.
azure_create_new_file_on_insert
Habilita o deshabilita la creación de un nuevo archivo en cada operación de insert en las tablas del motor Azure
azure_ignore_file_doesnt_exist
Ignora la ausencia de un archivo si este no existe al leer ciertas claves.
Valores posibles:
- 1 —
SELECT devuelve un resultado vacío.
- 0 —
SELECT genera una excepción.
azure_list_object_keys_size
Número máximo de archivos que la solicitud ListObject puede devolver en un lote
azure_max_blocks_in_multipart_upload
Número máximo de bloques en una carga multiparte para Azure.
Número máximo de solicitudes que pueden emitirse simultáneamente antes de alcanzar el límite de solicitudes por segundo. De forma predeterminada, (0) equivale a azure_max_get_rps
Límite de solicitudes GET por segundo en Azure antes de que se aplique throttling. Cero significa sin límite.
azure_max_inflight_parts_for_one_file
El número máximo de partes que se pueden cargar simultáneamente en una solicitud de carga multiparte. 0 significa que no hay límite.
Número máximo de solicitudes que pueden emitirse simultáneamente antes de alcanzar el límite de solicitudes por segundo. De forma predeterminada, (0) equivale a azure_max_put_rps
Límite de solicitudes PUT por segundo en Azure antes de aplicar throttling. Cero significa sin límite.
Número máximo permitido de saltos de redirección de Azure.
azure_max_single_part_copy_size
El tamaño máximo del objeto que se puede copiar mediante una copia de una sola parte en Azure blob storage.
azure_max_single_part_upload_size
El tamaño máximo del objeto que se puede cargar mediante una carga de una sola parte en Azure Blob Storage.
azure_max_single_read_retries
El número máximo de reintentos durante una sola lectura desde Azure blob storage.
azure_max_unexpected_write_error_retries
El número máximo de reintentos en caso de errores inesperados durante la escritura en Azure blob storage
azure_max_upload_part_size
El tamaño máximo de la parte que se va a subir durante una subida multiparte a Azure blob storage.
azure_min_upload_part_size
El tamaño mínimo de la parte que se va a subir durante una carga multiparte en Azure blob storage.
Tiempo de espera por inactividad para el envío y la recepción de datos desde/hacia Azure. Se produce un error si una sola llamada TCP de lectura o escritura queda bloqueada durante este tiempo.
Número máximo de reintentos del SDK de Azure
azure_sdk_retry_initial_backoff_ms
Espera mínima entre reintentos en Azure SDK
azure_sdk_retry_max_backoff_ms
Backoff máximo entre reintentos en Azure SDK
Activa o desactiva la omisión de archivos vacíos en el motor S3.
Valores posibles:
- 0 —
SELECT genera una excepción si el archivo vacío no es compatible con el formato solicitado.
- 1 —
SELECT devuelve un resultado vacío para un archivo vacío.
azure_strict_upload_part_size
El tamaño exacto de la parte que se va a subir durante una subida multiparte a Azure blob storage.
azure_throw_on_zero_files_match
Lanza un error si no coincide ningún archivo según las reglas de expansión de glob.
Valores posibles:
- 1 —
SELECT lanza una excepción.
- 0 —
SELECT devuelve un resultado vacío.
Activa o desactiva el truncado antes de insertar en las tablas del engine Azure.
azure_upload_part_size_multiply_factor
Multiplica azure_min_upload_part_size por este factor cada vez que se hayan cargado azure_multiply_parts_count_threshold partes en una única escritura en Azure blob storage.
azure_upload_part_size_multiply_parts_count_threshold
Cada vez que se cargue este número de partes en Azure blob storage, azure_min_upload_part_size se multiplica por azure_upload_part_size_multiply_factor.
azure_use_adaptive_timeouts
Si se establece en true, en todas las solicitudes a Azure los dos primeros intentos se realizan con tiempos de espera de envío y recepción reducidos.
Si se establece en false, todos los intentos se realizan con tiempos de espera idénticos.
backup_restore_batch_size_for_keeper_multi
Tamaño máximo del lote para una solicitud múltiple a [Zoo]Keeper durante la copia de seguridad o la restauración
backup_restore_batch_size_for_keeper_multiread
Tamaño máximo del lote de una solicitud de multilectura a [Zoo]Keeper durante la copia de seguridad o la restauración
backup_restore_failure_after_host_disconnected_for_seconds
Si, durante una operación BACKUP ON CLUSTER o RESTORE ON CLUSTER, un host no vuelve a crear su nodo efímero ‘alive’ en ZooKeeper dentro de este intervalo, toda la copia de seguridad o restauración se considera fallida.
Este valor debe ser mayor que cualquier tiempo razonable que un host pueda tardar en volver a conectarse a ZooKeeper después de un fallo.
Cero significa sin límite.
backup_restore_finish_timeout_after_error_sec
Cuánto tiempo debe esperar el iniciador para que otros hosts reaccionen al nodo ‘error’ y detengan su trabajo en la operación actual BACKUP ON CLUSTER o RESTORE ON CLUSTER.
backup_restore_keeper_fault_injection_probability
Probabilidad aproximada de fallo de una solicitud de Keeper durante una copia de seguridad o una restauración. El valor válido se encuentra en el intervalo [0.0f, 1.0f]
backup_restore_keeper_fault_injection_seed
0: semilla aleatoria; en caso contrario, el valor de la configuración
backup_restore_keeper_max_retries
Número máximo de reintentos para operaciones de [Zoo]Keeper durante una operación BACKUP o RESTORE.
Debe ser lo bastante grande como para que toda la operación no falle debido a un fallo temporal de [Zoo]Keeper.
backup_restore_keeper_max_retries_while_handling_error
Número máximo de reintentos para las operaciones de [Zoo]Keeper al gestionar un error en una operación BACKUP ON CLUSTER o RESTORE ON CLUSTER.
backup_restore_keeper_max_retries_while_initializing
Número máximo de reintentos para las operaciones de [Zoo]Keeper durante la inicialización de una operación BACKUP ON CLUSTER o RESTORE ON CLUSTER.
backup_restore_keeper_retry_initial_backoff_ms
Tiempo de espera del backoff inicial para las operaciones de [Zoo]Keeper durante la copia de seguridad o la restauración
backup_restore_keeper_retry_max_backoff_ms
Tiempo de espera máximo del backoff para las operaciones de [Zoo]Keeper durante la copia de seguridad o la restauración
Valor predeterminado de Cloud: 60000.
backup_restore_keeper_value_max_size
Tamaño máximo de los datos de un nodo de [Zoo]Keeper durante la restauración de una copia de seguridad
backup_restore_s3_retry_attempts
Configuración para Aws::Client::RetryStrategy. Aws::Client gestiona los reintentos por sí mismo; 0 significa que no habrá reintentos. Solo se aplica a la copia de seguridad/restauración.
backup_restore_s3_retry_initial_backoff_ms
Retraso de backoff inicial, en milisegundos, antes del primer reintento durante la copia de seguridad y la restauración. Cada reintento posterior aumenta el retraso de forma exponencial, hasta el máximo especificado por backup_restore_s3_retry_max_backoff_ms
backup_restore_s3_retry_jitter_factor
Factor de jitter aplicado al retraso de backoff de reintento en Aws::Client::RetryStrategy durante las operaciones de copia de seguridad y restauración. El retraso de backoff calculado se multiplica por un factor aleatorio en el intervalo [1.0, 1.0 + jitter], hasta un máximo de backup_restore_s3_retry_max_backoff_ms. Debe estar en el intervalo [0.0, 1.0]
backup_restore_s3_retry_max_backoff_ms
Retraso máximo, en milisegundos, entre reintentos durante las operaciones de copia de seguridad y restauración.
backup_slow_all_threads_after_retryable_s3_error
Cuando se establece en true, todos los hilos que ejecutan solicitudes a S3 hacia el mismo endpoint de backup se ralentizan
después de que una sola solicitud a S3 encuentre un error de S3 que permita reintentos, como ‘Slow Down’.
Cuando se establece en false, cada hilo gestiona el backoff de las solicitudes a S3 de forma independiente de los demás.
Solo tiene efecto en ClickHouse Cloud. Número de hilos en segundo plano para descargar de forma especulativa nuevas partes de datos en la caché del sistema de archivos cuando cache_populated_by_fetch está habilitado. Cero para deshabilitarlo.
calculate_text_stack_trace
Calcula la traza de pila en texto en caso de excepciones durante la ejecución de la consulta. Este es el valor predeterminado. Requiere búsquedas de símbolos que pueden ralentizar las pruebas de fuzzing cuando se ejecuta una gran cantidad de consultas incorrectas. En condiciones normales, no debería desactivar esta opción.
cancel_http_readonly_queries_on_client_close
Cancela las consultas HTTP de solo lectura (p. ej., SELECT) cuando el cliente cierra la conexión sin esperar la respuesta.
Valor predeterminado en Cloud: 1.
cast_ipv4_ipv6_default_on_conversion_error
Los operadores CAST a IPv4 y CAST al tipo IPv6, así como las funciones toIPv4 y toIPv6, devolverán el valor predeterminado en lugar de lanzar una excepción si se produce un error de conversión.
Habilita o deshabilita la conservación del tipo de dato Nullable en las operaciones CAST.
Cuando esta configuración está habilitada y el argumento de la función CAST es Nullable, el resultado también se convierte al tipo Nullable. Cuando la configuración está deshabilitada, el resultado siempre tiene exactamente el tipo de destino.
Posibles valores:
- 0 — El resultado de
CAST tiene exactamente el tipo de destino especificado.
- 1 — Si el tipo del argumento es
Nullable, el resultado de CAST se convierte en Nullable(DestinationDataType).
Ejemplos
La siguiente consulta produce exactamente el tipo de dato de destino:
SET cast_keep_nullable = 0;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
Resultado:
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Int32 │
└───┴───────────────────────────────────────────────────┘
La siguiente consulta produce la modificación Nullable en el tipo de dato de destino:
SET cast_keep_nullable = 1;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);
Resultado:
┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Nullable(Int32) │
└───┴───────────────────────────────────────────────────┘
Ver también
cast_string_to_date_time_mode
Permite elegir un parser para la representación textual de fecha y hora al convertir desde String.
Posibles valores:
-
'best_effort' — Habilita el análisis ampliado.
ClickHouse puede analizar el formato básico YYYY-MM-DD HH:MM:SS y todos los formatos de fecha y hora ISO 8601. Por ejemplo, '2018-06-08T01:02:03.000Z'.
-
'best_effort_us' — Similar a best_effort (consulte la diferencia en parseDateTimeBestEffortUS
-
'basic' — Usa el parser básico.
ClickHouse solo puede analizar el formato básico YYYY-MM-DD HH:MM:SS o YYYY-MM-DD. Por ejemplo, 2019-08-20 10:18:56 o 2019-08-20.
Vea también:
cast_string_to_dynamic_use_inference
Usar la inferencia de tipos durante la conversión de String a Dynamic
cast_string_to_variant_use_inference
Utiliza la inferencia de tipos durante la conversión de String a Variant.
check_named_collection_dependencies
Comprueba que DROP NAMED COLLECTION no provoque fallos en las tablas que dependen de ella
check_query_single_value_result
Define el nivel de detalle del resultado de la consulta CHECK TABLE para los motores de la familia MergeTree .
Valores posibles:
- 0 — la consulta muestra un estado de verificación para cada parte de datos individual de una tabla.
- 1 — la consulta muestra el estado general de verificación de la tabla.
check_referential_table_dependencies
Compruebe que la consulta DDL (como DROP TABLE o RENAME) no interrumpa las dependencias referenciales
Verifica que una consulta DDL (como DROP TABLE o RENAME) no rompa las dependencias
Valida las sumas de verificación durante la lectura. Está habilitada de forma predeterminada y siempre debería estarlo en producción. No espere obtener ningún beneficio al deshabilitar este ajuste. Solo puede usarse para experimentos y benchmarks. Este ajuste solo se aplica a tablas de la familia MergeTree. Las sumas de verificación siempre se validan para otros motores de tabla y al recibir datos a través de la red.
Modo Cloud
Valor predeterminado en Cloud: 1.
cloud_mode_database_engine
El motor de base de datos permitido en Cloud. 1 - reescribe las DDL para usar una base de datos Replicated, 2 - reescribe las DDL para usar una base de datos Shared
Valor predeterminado de Cloud: 2.
La familia de motores permitida en Cloud.
- 0 - permitir todo
- 1 - reescribir las DDLs para usar *ReplicatedMergeTree
- 2 - reescribir las DDLs para usar SharedMergeTree
- 3 - reescribir las DDLs para usar SharedMergeTree, excepto cuando se especifique explícitamente un disco remoto
- 4 - igual que 3, y además usar Alias en lugar de Distributed (la tabla Alias apuntará a la tabla de destino de la tabla Distributed, por lo que usará la tabla local correspondiente)
UInt64 para minimizar la parte pública
Valor predeterminado de Cloud: 2.
cluster_for_parallel_replicas
Clúster para un segmento en el que se encuentra el servidor actual
Valor predeterminado de Cloud: default.
cluster_function_process_archive_on_multiple_nodes
Si se establece en true, mejora el rendimiento al procesar archivos comprimidos en funciones de clúster. Debe establecerse en false para mantener la compatibilidad y evitar errores durante la actualización a 25.7+ si se usan funciones de clúster con archivos comprimidos en versiones anteriores.
cluster_table_function_buckets_batch_size
Define el tamaño aproximado de un lote (en bytes) que se usa en el procesamiento distribuido de tareas en funciones de tabla de clúster con granularidad de división bucket. El sistema acumula datos hasta alcanzar al menos esta cantidad. El tamaño real puede ser ligeramente mayor para ajustarse a los límites de los datos.
cluster_table_function_split_granularity
Controla cómo se dividen los datos en tareas al ejecutar una CLUSTER TABLE FUNCTION.
Esta configuración define la granularidad de la distribución del trabajo en el cluster:
file — cada tarea procesa un archivo completo.
bucket — las tareas se crean por cada bloque de datos interno dentro de un archivo (por ejemplo, grupos de filas de Parquet).
Elegir una granularidad más fina (como bucket) puede mejorar el paralelismo al trabajar con una cantidad reducida de archivos grandes.
Por ejemplo, si un archivo Parquet contiene varios grupos de filas, habilitar la granularidad bucket permite que cada grupo se procese de forma independiente en distintos workers.
collect_hash_table_stats_during_aggregation
Activa la recopilación de estadísticas de la tabla hash para optimizar la asignación de memoria
collect_hash_table_stats_during_joins
Activa la recopilación de estadísticas de la tabla hash para optimizar la asignación de memoria
La configuración compatibility hace que ClickHouse use la configuración predeterminada de una versión anterior de ClickHouse, indicada en este ajuste.
Si algunos ajustes tienen valores distintos de los predeterminados, esos valores se respetan (solo los ajustes que no se han modificado se ven afectados por la configuración compatibility).
Esta configuración acepta un número de versión de ClickHouse como cadena, por ejemplo 22.3 o 22.8. Un valor vacío significa que esta configuración está deshabilitada.
Deshabilitada de forma predeterminada.
En ClickHouse Cloud, la configuración de compatibilidad predeterminada a nivel de servicio debe establecerla ClickHouse Cloud Support. Abra un caso para solicitarlo.
Sin embargo, la configuración compatibility se puede sobrescribir a nivel de usuario, rol, perfil, consulta o sesión mediante los mecanismos de configuración estándar de ClickHouse, como SET compatibility = '22.3' en una sesión o SETTINGS compatibility = '22.3' en una consulta.
compatibility_ignore_auto_increment_in_create_table
Ignora la palabra clave AUTO_INCREMENT en la declaración de la columna si es true; de lo contrario, devuelve un error. Esto simplifica la migración desde MySQL
compatibility_ignore_collation_in_create_table
Compatibilidad: ignorar la cotejación en CREATE TABLE
compatibility_s3_presigned_url_query_in_path
Compatibilidad: cuando está habilitado, integra los parámetros de consulta de la URL prefirmada (p. ej., X-Amz-*) en la clave de S3 (comportamiento heredado),
por lo que ’?’ actúa como un comodín en la ruta. Cuando está deshabilitado (valor predeterminado), los parámetros de consulta de la URL prefirmada se mantienen en la cadena de consulta de la URL
para evitar interpretar ’?’ como un comodín.
compile_aggregate_expressions
Habilita o deshabilita la compilación JIT de las funciones de agregación en código nativo. Habilitar esta opción puede mejorar el rendimiento.
Valores posibles:
- 0 — La agregación se realiza sin compilación JIT.
- 1 — La agregación se realiza con compilación JIT.
Vea también
Compila algunas funciones escalares y operadores en código nativo.
Compila la descripción de ordenación en código nativo.
Tiempo de espera de conexión si no hay réplicas.
connect_timeout_with_failover_ms
El tiempo de espera, en milisegundos, para conectarse a un servidor remoto con un motor de tabla Distributed, si se usan las secciones ‘shard’ y ‘replica’ en la definición del clúster.
Si no se logra la conexión, se realizan varios intentos para conectarse a distintas réplicas.
connect_timeout_with_failover_secure_ms
Tiempo de espera de conexión para seleccionar la primera réplica en buen estado (para conexiones seguras).
connection_pool_max_wait_ms
El tiempo de espera, en milisegundos, de una conexión cuando el pool de conexiones está lleno.
Valores posibles:
- Entero positivo.
- 0 — Tiempo de espera infinito.
connections_with_failover_max_tries
El número máximo de intentos de conexión con cada réplica para el engine de tabla Distributed.
Cuando se establece en true, una consulta SELECT se convertirá en forma normal conjuntiva (CNF). En algunos casos, reescribir una consulta en CNF puede ejecutarse más rápido (consulta este issue de GitHub para obtener una explicación).
Por ejemplo, observa cómo la siguiente consulta SELECT no se modifica (comportamiento predeterminado):
EXPLAIN SYNTAX
SELECT *
FROM
(
SELECT number AS x
FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = false;
El resultado es:
┌─explain────────────────────────────────────────────────────────┐
│ SELECT x │
│ FROM │
│ ( │
│ SELECT number AS x │
│ FROM numbers(20) │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ ) AS a │
│ WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15)) │
│ SETTINGS convert_query_to_cnf = 0 │
└────────────────────────────────────────────────────────────────┘
Establezcamos convert_query_to_cnf en true y veamos qué cambia:
EXPLAIN SYNTAX
SELECT *
FROM
(
SELECT number AS x
FROM numbers(20)
) AS a
WHERE ((x >= 1) AND (x <= 5)) OR ((x >= 10) AND (x <= 15))
SETTINGS convert_query_to_cnf = true;
Observe que la cláusula WHERE se reescribe en CNF, pero el conjunto de resultados sigue siendo idéntico: la lógica booleana no cambia:
┌─explain───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SELECT x │
│ FROM │
│ ( │
│ SELECT number AS x │
│ FROM numbers(20) │
│ WHERE ((x <= 15) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x >= 10) OR (x >= 1)) │
│ ) AS a │
│ WHERE ((x >= 10) OR (x >= 1)) AND ((x >= 10) OR (x <= 5)) AND ((x <= 15) OR (x >= 1)) AND ((x <= 15) OR (x <= 5)) │
│ SETTINGS convert_query_to_cnf = 1 │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Valores posibles: true, false
Controla el tipo de JOIN del plan de consulta decorrelacionado. El valor predeterminado es right, lo que significa que el plan decorrelacionado contendrá RIGHT JOINs con la entrada de la subconsulta en el lado derecho.
Valores posibles:
left - El proceso de decorrelación producirá LEFT JOINs y la tabla de entrada aparecerá en el lado izquierdo.
right - El proceso de decorrelación producirá RIGHT JOINs y la tabla de entrada aparecerá en el lado derecho.
Usa expresiones de filtro para inferir expresiones equivalentes y sustituirlas en lugar de crear un CROSS JOIN.
Usa un búfer en memoria para la entrada de subconsultas correlacionadas a fin de evitar su evaluación repetida.
count_distinct_implementation
Especifica cuál de las funciones uniq* debe usarse para implementar la construcción COUNT(DISTINCT …).
Valores posibles:
count_distinct_optimization
Reescribe count distinct como una subconsulta con group by
count_matches_stop_at_empty_match
Deja de contar cuando un patrón produce una coincidencia de longitud cero en la función countMatches.
Activa IF NOT EXISTS para la instrucción CREATE de forma predeterminada. Si se especifica esta configuración o IF NOT EXISTS, y ya existe una tabla con el nombre indicado, no se lanzará ninguna excepción.
create_index_ignore_unique
Ignora la palabra clave UNIQUE en CREATE UNIQUE INDEX. Diseñado para pruebas de compatibilidad con SQL.
create_replicated_merge_tree_fault_injection_probability
La probabilidad de que se inyecte un fallo durante la creación de la tabla después de crear los metadatos en ZooKeeper
create_table_empty_primary_key_by_default
Permite crear tablas *MergeTree con una clave primaria vacía cuando no se especifican ORDER BY ni PRIMARY KEY
cross_join_min_bytes_to_compress
Tamaño mínimo del bloque que se debe comprimir en CROSS JOIN. Un valor de cero significa desactivar este umbral. Este bloque se comprime cuando se alcanza cualquiera de los dos umbrales (por filas o por bytes).
cross_join_min_rows_to_compress
Número mínimo de filas para comprimir el bloque en CROSS JOIN. Un valor de cero significa deshabilitar este umbral. Este bloque se comprime cuando se alcanza cualquiera de los dos umbrales (por filas o por bytes).
cross_to_inner_join_rewrite
Usa inner join en lugar de comma/cross join si hay expresiones de join en la sección WHERE. Valores: 0 - sin reescritura, 1 - aplicar si es posible para comma/cross, 2 - forzar la reescritura de todos los comma joins, cross - si es posible
data_type_default_nullable
Hace que los tipos de datos sin modificadores explícitos NULL o NOT NULL en la definición de columnas sean Nullable.
Valores posibles:
- 1 — Los tipos de datos en las definiciones de columna se establecen como
Nullable de forma predeterminada.
- 0 — Los tipos de datos en las definiciones de columna se establecen como no
Nullable de forma predeterminada.
database_atomic_wait_for_drop_and_detach_synchronously
Añade un modificador SYNC a todas las consultas DROP y DETACH.
Valores posibles:
- 0 — Las consultas se ejecutarán de forma diferida.
- 1 — Las consultas se ejecutarán sin demora.
Indica si se debe lanzar un error o no cuando no se tienen permisos para obtener los metadatos de la tabla en el motor de base de datos DataLakeCatalog.
database_replicated_allow_explicit_uuid
0 - No permite especificar explícitamente UUIDs para las tablas en bases de datos Replicated. 1 - Lo permite. 2 - Lo permite, pero ignora el UUID especificado y genera uno aleatorio en su lugar.
database_replicated_allow_heavy_create
Permite las consultas DDL de larga duración (CREATE AS SELECT y POPULATE) en el motor de base de datos Replicated. Tenga en cuenta que puede bloquear la cola DDL durante mucho tiempo.
database_replicated_allow_only_replicated_engine
Permite crear únicamente tablas Replicated en una base de datos con motor Replicated
Valor predeterminado de Cloud: 1.
database_replicated_allow_replicated_engine_arguments
0 - No permitir especificar explícitamente la ruta de ZooKeeper ni el nombre de la réplica para las tablas *MergeTree en bases de datos Replicated. 1 - Permitirlo. 2 - Permitirlo, pero ignorar la ruta especificada y usar en su lugar la predeterminada. 3 - Permitirlo y no registrar ninguna advertencia.
database_replicated_always_detach_permanently
Ejecuta DETACH TABLE como DETACH TABLE PERMANENTLY si el engine de la base de datos es Replicated
database_replicated_enforce_synchronous_settings
Obliga a esperar de forma síncrona en algunas consultas (véase también database_atomic_wait_for_drop_and_detach_synchronously, mutations_sync, alter_sync). No se recomienda habilitar estos ajustes.
database_replicated_initial_query_timeout_sec
Establece cuánto tiempo debe esperar la consulta DDL inicial a que la base de datos Replicated procese las entradas previas de la cola DDL, en segundos.
Valores posibles:
- Entero positivo.
- 0 — Ilimitado.
database_shared_drop_table_delay_seconds
El tiempo de espera, en segundos, antes de que una tabla eliminada se quite realmente de una base de datos Shared. Esto permite recuperar la tabla durante ese tiempo mediante la sentencia UNDROP TABLE.
Comprueba el desbordamiento de las operaciones aritméticas y de comparación de Decimal
deduplicate_blocks_in_dependent_materialized_views
Habilita o deshabilita la comprobación de deduplicación para las vistas materializadas que reciben datos de tablas Replicated*.
Valores posibles:
0 — Deshabilitado.
1 — Habilitado.
Cuando está habilitado, ClickHouse realiza la deduplicación de bloques en las vistas materializadas que dependen de tablas Replicated*.
Esta configuración es útil para garantizar que las vistas materializadas no contengan datos duplicados cuando la operación de inserción se reintenta debido a un fallo.
Véase también
Habilita o deshabilita la deduplicación de bloques de INSERT INTO (para tablas Replicated*).
Este ajuste sobrescribe los ajustes insert_deduplicate y async_insert_deduplicate.
Este ajuste tiene tres valores posibles:
- disable — La deduplicación está deshabilitada para la consulta
INSERT INTO.
- enable — La deduplicación está habilitada para la consulta
INSERT INTO.
- backward_compatible_choice — La deduplicación está habilitada si
insert_deduplicate o async_insert_deduplicate están habilitados para el tipo de insert específico.
deduplicate_insert_select
Habilita o deshabilita la deduplicación de bloques de INSERT SELECT (para tablas Replicated*).
Esta configuración anula insert_deduplicate y deduplicate_insert para las consultas INSERT SELECT.
Esta configuración tiene cuatro valores posibles:
- disable — La deduplicación está deshabilitada para la consulta
INSERT SELECT.
- force_enable — La deduplicación está habilitada para la consulta
INSERT SELECT. Si el resultado de SELECT no es estable, se lanza una excepción.
- enable_when_possible — La deduplicación está habilitada si
insert_deduplicate está habilitado y el resultado de SELECT es estable; de lo contrario, se deshabilita.
- enable_even_for_bad_queries - La deduplicación está habilitada si
insert_deduplicate está habilitado. Si el resultado de SELECT no es estable, se registra una advertencia, pero la consulta se ejecuta con deduplicación. Esta opción es por compatibilidad con versiones anteriores. Considere usar otras opciones, ya que esta puede dar lugar a resultados inesperados.
default_materialized_view_sql_security
Permite establecer un valor predeterminado para la opción SQL SECURITY al crear una vista materializada. Más información sobre SQL security.
El valor predeterminado es DEFINER.
default_max_bytes_in_join
Tamaño máximo de la tabla del lado derecho cuando se requiere un límite pero max_bytes_in_join no está configurado.
default_normal_view_sql_security
Permite establecer la opción predeterminada de SQL SECURITY al crear una vista normal. Más información sobre la seguridad SQL.
El valor predeterminado es INVOKER.
Motor de tabla predeterminado que se utilizará cuando no se especifique ENGINE en una sentencia CREATE.
Valores posibles:
- una cadena que represente cualquier nombre de motor de tabla válido
Valor predeterminado de Cloud: SharedMergeTree.
Ejemplo
Consulta:
SET default_table_engine = 'Log';
SELECT name, value, changed FROM system.settings WHERE name = 'default_table_engine';
Resultado:
┌─name─────────────────┬─value─┬─changed─┐
│ default_table_engine │ Log │ 1 │
└──────────────────────┴───────┴─────────┘
En este ejemplo, cualquier tabla nueva que no especifique un Engine utilizará el motor de tabla Log:
Consulta:
CREATE TABLE my_table (
x UInt32,
y UInt32
);
SHOW CREATE TABLE my_table;
Resultado:
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.my_table
(
`x` UInt32,
`y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
default_temporary_table_engine
Igual que default_table_engine, pero para las tablas temporales.
En este ejemplo, cualquier tabla temporal nueva que no especifique un Engine usará el engine de tabla Log:
Consulta:
SET default_temporary_table_engine = 'Log';
CREATE TEMPORARY TABLE my_table (
x UInt32,
y UInt32
);
SHOW CREATE TEMPORARY TABLE my_table;
Resultado:
┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TEMPORARY TABLE default.my_table
(
`x` UInt32,
`y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘
Permite establecer la opción DEFINER predeterminada al crear una vista. Más información sobre SQL SECURITY.
El valor predeterminado es CURRENT_USER.
defer_partition_pruning_after_final
Cuando está habilitado (valor predeterminado), la poda de particiones se omite para las consultas FINAL en tablas cuyas
columnas de la clave de partición no forman parte de la clave de ordenación. Este es el comportamiento seguro desde el punto de vista de la corrección
introducido en 26.3: FINAL puede necesitar deduplicar filas que comparten una clave primaria pero están
en particiones distintas, y la poda de particiones excluiría silenciosamente esas filas de la
entrada usada para la deduplicación.
Cuando está deshabilitado, la poda de particiones se aplica incluso con FINAL, lo que restaura el comportamiento
anterior a la versión 26.3. Esto puede ser considerablemente más rápido para consultas con predicados WHERE en la
columna de partición, pero solo es correcto cuando filas con la misma clave primaria no pueden existir
en particiones distintas; por ejemplo, en tablas de registro de eventos cuya columna de partición se establece en el momento de la inserción
y nunca cambia.
Este ajuste solo afecta a las tablas particionadas cuyas columnas de la clave de partición no están incluidas
en la clave de ordenación; en las demás tablas, la poda de particiones siempre se aplica.
Posibles valores:
- 0 — Aplicar la poda de particiones antes de
FINAL (comportamiento anterior a la versión 26.3, más rápido pero inseguro en el caso general).
- 1 — Aplazar la poda de particiones hasta después de
FINAL (valor predeterminado, seguro desde el punto de vista de la corrección).
delta_lake_enable_engine_predicate
Activa la poda interna de datos de delta-kernel.
delta_lake_enable_expression_visitor_logging
Habilita los logs de nivel Test del visitante de expresiones de DeltaLake. Estos logs pueden ser demasiado verbosos incluso para el registro de prueba.
delta_lake_insert_max_bytes_in_data_file
Define el límite en bytes para un único archivo de datos insertado en delta lake.
delta_lake_insert_max_rows_in_data_file
Define el límite de filas para un único archivo de datos insertado en delta lake.
Habilita el registro de los archivos de metadatos de delta lake en la tabla del sistema.
delta_lake_reload_schema_for_consistency
Si está habilitada, el esquema se recarga a partir de los metadatos de DeltaLake antes de cada ejecución de la consulta para garantizar
la consistencia entre el esquema utilizado durante el análisis de la consulta y el esquema utilizado durante la ejecución.
delta_lake_snapshot_end_version
Versión final del snapshot de Delta Lake que se va a leer. El valor -1 significa que se lee la versión más reciente (el valor 0 es una versión de snapshot válida).
delta_lake_snapshot_start_version
Versión inicial de la instantánea de Delta Lake que se leerá. El valor -1 indica que se leerá la versión más reciente (el valor 0 es una versión de instantánea válida).
delta_lake_snapshot_version
Versión de la instantánea de delta lake que se debe leer. El valor -1 indica que se leerá la versión más reciente (el valor 0 es una versión de instantánea válida).
delta_lake_throw_on_engine_predicate_error
Hace que se lance una excepción si se produce un error al analizar el predicado de escaneo en delta-kernel.
Si es true, incluye solo los nombres de las columnas y los tipos en el resultado de la consulta DESCRIBE
describe_include_subcolumns
Permite describir subcolumnas en una consulta DESCRIBE. Por ejemplo, los miembros de un Tuple o las subcolumnas de un tipo de dato Map, Nullable o Array.
Valores posibles:
- 0 — Las subcolumnas no se incluyen en las consultas
DESCRIBE.
- 1 — Las subcolumnas se incluyen en las consultas
DESCRIBE.
Ejemplo
Vea un ejemplo de la sentencia DESCRIBE.
describe_include_virtual_columns
Si es true, las columnas virtuales de la tabla se incluirán en el resultado de la consulta DESCRIBE.
Dialecto que se utilizará para analizar la consulta
dictionary_use_async_executor
Ejecuta una canalización para leer la fuente del diccionario en varios hilos. Solo es compatible con diccionarios con una fuente CLICKHOUSE local.
dictionary_validate_primary_key_type
Valida el tipo de clave primaria de los diccionarios. De forma predeterminada, el tipo de id de los layouts simples se convertirá implícitamente en UInt64.
Establece qué ocurre cuando la cantidad de datos supera uno de los límites.
Valores posibles:
throw: lanza una excepción (predeterminado).
break: deja de ejecutar la consulta y devuelve el resultado parcial, como si los
datos de origen se hubieran agotado.
distributed_aggregation_memory_efficient
Indica si está habilitado el modo de agregación distribuida con ahorro de memoria.
distributed_background_insert_batch
Aliases: distributed_directory_monitor_batch_inserts
Habilita o deshabilita el envío por lotes de los datos insertados.
Cuando el envío por lotes está habilitado, el motor de tabla Distributed intenta enviar varios archivos de datos insertados en una sola operación en lugar de enviarlos por separado. El envío por lotes mejora el rendimiento del clúster al aprovechar mejor los recursos del servidor y de la red.
Valores posibles:
- 1 — Habilitado.
- 0 — Deshabilitado.
distributed_background_insert_max_sleep_time_ms
Aliases: distributed_directory_monitor_max_sleep_time_ms
Intervalo máximo para que el motor de tabla Distributed envíe datos. Limita el crecimiento exponencial del intervalo establecido en la opción de configuración distributed_background_insert_sleep_time_ms.
Valores posibles:
- Un número entero positivo de milisegundos.
distributed_background_insert_sleep_time_ms
Aliases: distributed_directory_monitor_sleep_time_ms
Intervalo base para que el motor de tabla Distributed envíe datos. El intervalo real aumenta exponencialmente en caso de errores.
Valores posibles:
- Un número entero positivo de milisegundos.
distributed_background_insert_split_batch_on_failure
Alias: distributed_directory_monitor_split_batch_on_failure
Habilita o deshabilita la división de lotes cuando se producen fallos.
A veces, el envío de un lote concreto al segmento remoto puede fallar debido a alguna canalización compleja posterior (por ejemplo, una MATERIALIZED VIEW con GROUP BY) por Memory limit exceeded u otros errores similares. En este caso, reintentar no servirá de ayuda (y esto bloqueará los envíos distribuidos de la tabla), pero enviar los archivos de ese lote uno por uno puede hacer que el INSERT se complete correctamente.
Por lo tanto, establecer esta configuración en 1 deshabilitará el procesamiento por lotes para esos lotes (es decir, deshabilitará temporalmente distributed_background_insert_batch para los lotes fallidos).
Valores posibles:
- 1 — Habilitado.
- 0 — Deshabilitado.
Esta configuración también afecta a los lotes dañados (que pueden aparecer debido a una finalización anómala del servidor (máquina) y a la ausencia de fsync_after_insert/fsync_directories para el motor de tabla Distributed).
No debe confiar en la división automática de lotes, ya que puede perjudicar el rendimiento.
distributed_background_insert_timeout
Alias: insert_distributed_timeout
Tiempo de espera de la consulta de inserción en Distributed. Esta configuración se usa solo cuando insert_distributed_sync está habilitado. Un valor de cero significa que no hay tiempo de espera.
distributed_cache_alignment
Solo tiene efecto en ClickHouse Cloud. Es una configuración para pruebas; no la cambie
distributed_cache_bypass_connection_pool
Solo tiene efecto en ClickHouse Cloud. Permite omitir el pool de conexiones de Distributed Cache
distributed_cache_connect_backoff_max_ms
Solo tiene efecto en ClickHouse Cloud. Máximo de milisegundos de backoff para la creación de conexiones de distributed cache.
distributed_cache_connect_backoff_min_ms
Solo tiene efecto en ClickHouse Cloud. Milisegundos mínimos de backoff para la creación de conexiones a distributed cache.
distributed_cache_connect_max_tries
Solo tiene efecto en ClickHouse Cloud. Número de intentos de conexión a distributed cache en caso de error
distributed_cache_connect_timeout_ms
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera de conexión al establecer conexión con el servidor de caché distribuida.
distributed_cache_credentials_refresh_period_seconds
Solo tiene efecto en ClickHouse Cloud. Período de actualización de credenciales.
distributed_cache_data_packet_ack_window
Solo tiene efecto en ClickHouse Cloud. Una ventana para enviar ACK de la secuencia de DataPacket en una sola solicitud de lectura de distributed cache
distributed_cache_discard_connection_if_unread_data
Solo tiene efecto en ClickHouse Cloud. Descarta la conexión si queda algún dato sin leer.
distributed_cache_fetch_metrics_only_from_current_az
Solo tiene efecto en ClickHouse Cloud. Obtiene métricas únicamente de la zona de disponibilidad actual en system.distributed_cache_metrics, system.distributed_cache_events
distributed_cache_file_cache_name
Solo tiene efecto en ClickHouse Cloud. Configuración usada solo para pruebas de CI: nombre de la filesystem cache que se usará en distributed cache.
distributed_cache_log_mode
Solo tiene efecto en ClickHouse Cloud. Modo para escribir en system.distributed_cache_log
distributed_cache_max_unacked_inflight_packets
Solo surte efecto en ClickHouse Cloud. Número máximo de paquetes en vuelo sin confirmar en una única solicitud de lectura de distributed cache
distributed_cache_min_bytes_for_seek
Solo surte efecto en ClickHouse Cloud. Número mínimo de bytes para realizar un seek en distributed cache.
distributed_cache_pool_behaviour_on_limit
Solo tiene efecto en ClickHouse Cloud. Describe el comportamiento de la conexión de caché distribuida cuando se alcanza el límite del pool
distributed_cache_prefer_bigger_buffer_size
Solo tiene efecto en ClickHouse Cloud. Es igual que filesystem_cache_prefer_bigger_buffer_size, pero para la caché distribuida.
distributed_cache_read_only_from_current_az
Solo tiene efecto en ClickHouse Cloud. Permite leer solo de la zona de disponibilidad actual. Si se desactiva, se leerá de todos los servidores de caché de todas las zonas de disponibilidad.
distributed_cache_read_request_max_tries
Solo tiene efecto en ClickHouse Cloud. Número de intentos para realizar una solicitud de lectura al distributed cache si falla
distributed_cache_receive_response_wait_milliseconds
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera en milisegundos para recibir los datos de una solicitud desde la caché distribuida
distributed_cache_receive_timeout_milliseconds
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera, en milisegundos, para recibir cualquier tipo de respuesta de la caché distribuida
Valor predeterminado en Cloud: 20000.
distributed_cache_receive_timeout_ms
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera para recibir datos del servidor de caché distribuida, en milisegundos. Si no se recibe ningún byte en este intervalo, se lanza una excepción.
distributed_cache_send_timeout_ms
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera para enviar datos al servidor de caché distribuida, en milisegundos. Si un cliente necesita enviar datos, pero no puede enviar ningún byte dentro de este intervalo, se genera una excepción.
distributed_cache_tcp_keep_alive_timeout_ms
Solo tiene efecto en ClickHouse Cloud. Tiempo, en milisegundos, durante el que la conexión con el servidor de caché distribuida debe permanecer inactiva antes de que TCP empiece a enviar sondas keepalive.
distributed_cache_throw_on_error
Solo tiene efecto en ClickHouse Cloud. Vuelve a lanzar la excepción que se produzca durante la comunicación con la caché distribuida o la excepción recibida de la caché distribuida. De lo contrario, en caso de error, se omite la caché distribuida
distributed_cache_use_clients_cache_for_read
Solo tiene efecto en ClickHouse Cloud. Use la caché de los clientes para las solicitudes de lectura.
distributed_cache_use_clients_cache_for_write
Solo tiene efecto en ClickHouse Cloud. Usa la caché del cliente para las solicitudes de escritura.
distributed_cache_wait_connection_from_pool_milliseconds
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera en milisegundos para obtener una conexión del pool de conexiones si distributed_cache_pool_behaviour_on_limit es wait
distributed_cache_write_request_max_tries
Solo tiene efecto en ClickHouse Cloud. Número de intentos para realizar una solicitud de escritura en distributed cache si falla
distributed_connections_pool_size
El número máximo de conexiones simultáneas con servidores remotos para el procesamiento distribuido de todas las consultas a una única tabla Distributed. Recomendamos establecer un valor no inferior al número de servidores del clúster.
distributed_ddl_entry_format_version
Versión de compatibilidad para las consultas de DDL distribuido (ON CLUSTER)
Valor predeterminado de Cloud: 6.
distributed_ddl_output_mode
Establece el formato del conjunto de resultados de la consulta DDL distribuida.
Valores posibles:
throw — Devuelve un conjunto de resultados con el estado de ejecución de la consulta para todos los hosts en los que la consulta ha finalizado. Si la consulta ha fallado en algunos hosts, vuelve a lanzar la primera excepción. Si la consulta aún no ha finalizado en algunos hosts y se ha superado distributed_ddl_task_timeout, lanza la excepción TIMEOUT_EXCEEDED.
none — Es similar a throw, pero la consulta DDL distribuida no devuelve ningún conjunto de resultados.
null_status_on_timeout — Devuelve NULL como estado de ejecución en algunas filas del conjunto de resultados en lugar de lanzar TIMEOUT_EXCEEDED si la consulta no ha finalizado en los hosts correspondientes.
never_throw — No lanza TIMEOUT_EXCEEDED ni vuelve a lanzar excepciones si la consulta ha fallado en algunos hosts.
none_only_active - Similar a none, pero no espera a las réplicas inactivas de la base de datos Replicated. Nota: con este modo es imposible determinar que la consulta no se ejecutó en alguna réplica y que se ejecutará en segundo plano.
null_status_on_timeout_only_active — Similar a null_status_on_timeout, pero no espera a las réplicas inactivas de la base de datos Replicated
throw_only_active — Similar a throw, pero no espera a las réplicas inactivas de la base de datos Replicated
Valor predeterminado de Cloud: none_only_active.
distributed_ddl_task_timeout
Establece el tiempo de espera para las respuestas a consultas DDL de todos los hosts del clúster. Si una solicitud DDL no se ha ejecutado en todos los hosts, la respuesta contendrá un error de tiempo de espera y la solicitud se ejecutará en modo asíncrono. Un valor negativo significa que el tiempo de espera es infinito.
Valores posibles:
- Entero positivo.
- 0 — Modo asíncrono.
- Entero negativo — tiempo de espera infinito.
distributed_foreground_insert
Aliases: insert_distributed_sync
Habilita o deshabilita la inserción síncrona de datos en una tabla Distributed.
De forma predeterminada, al insertar datos en una tabla Distributed, el servidor de ClickHouse envía los datos a los nodos del clúster en segundo plano. Cuando distributed_foreground_insert=1, los datos se procesan de forma síncrona y la operación INSERT solo se completa correctamente después de que todos los datos se hayan guardado en todos los segmentos (al menos una réplica por cada segmento si internal_replication es true).
Valores posibles:
0 — Los datos se insertan en segundo plano.
1 — Los datos se insertan en modo síncrono.
Valor predeterminado de Cloud: 1.
Véase también
distributed_group_by_no_merge
No fusiona los estados de agregación de distintos servidores durante el procesamiento distribuido de consultas; puede usarse cuando se tiene la certeza de que hay claves distintas en diferentes segmentos
Valores posibles:
0 — Deshabilitado (el procesamiento final de la consulta se realiza en el nodo iniciador).
1 - No fusiona los estados de agregación de distintos servidores durante el procesamiento distribuido de consultas (la consulta se procesa por completo en el segmento; el iniciador solo actúa como proxy de los datos); puede usarse cuando se tiene la certeza de que hay claves distintas en diferentes segmentos.
2 - Igual que 1, pero aplica ORDER BY y LIMIT en el iniciador (esto no es posible cuando la consulta se procesa por completo en el nodo remoto, como en distributed_group_by_no_merge=1) y puede usarse para consultas con ORDER BY y/o LIMIT.
Ejemplo
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 1
FORMAT PrettyCompactMonoBlock
┌─dummy─┐
│ 0 │
│ 0 │
└───────┘
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 2
FORMAT PrettyCompactMonoBlock
┌─dummy─┐
│ 0 │
└───────┘
distributed_index_analysis
El análisis de índices se distribuirá entre las réplicas.
Resulta beneficioso para el almacenamiento compartido y grandes volúmenes de datos en el clúster.
Utiliza réplicas de cluster_for_parallel_replicas.
Véase también
distributed_index_analysis_for_non_shared_merge_tree
Habilita el análisis distribuido de índices incluso para motores que no son SharedMergeTree (motor exclusivo de Cloud).
distributed_index_analysis_only_on_coordinator
Si está habilitado, el análisis de índices distribuidos se ejecuta solo en el coordinador.
Esto evita la generación de consultas O(N^2) cuando el predicado contiene subconsultas (p. ej., IN (SELECT ...)),
porque, de lo contrario, cada réplica follower activaría de forma independiente su propio análisis de índices distribuidos,
pero hace que el análisis de índices distribuidos sea menos eficiente si en las subconsultas se usan tablas grandes.
distributed_insert_skip_read_only_replicas
Permite omitir las réplicas de solo lectura en las consultas INSERT en Distributed.
Valores posibles:
- 0 — INSERT se realizará como de costumbre; si se dirige a una réplica de solo lectura, fallará
- 1 — El nodo iniciador omitirá las réplicas de solo lectura antes de enviar los datos a los segmentos.
distributed_plan_default_reader_bucket_count
Número predeterminado de tareas para la lectura paralela en una consulta distribuida. Las tareas se distribuyen entre las réplicas.
distributed_plan_default_shuffle_join_bucket_count
Número predeterminado de buckets para el shuffle-hash-join distribuido.
distributed_plan_execute_locally
Ejecuta localmente todas las tareas de un plan de consulta distribuida. Útil para pruebas y depuración.
distributed_plan_force_exchange_kind
Fuerza el tipo especificado de operadores Exchange entre las etapas de una consulta distribuida.
Valores posibles:
- ” - no forzar ningún tipo de operadores Exchange; dejar que el optimizador elija,
- ‘Persisted’ - usar archivos temporales en el almacenamiento de objetos,
- ‘Streaming’ - transmitir datos de intercambio a través de la red.
distributed_plan_force_shuffle_aggregation
Usa la estrategia de agregación Shuffle en lugar de PartialAggregation + Merge en el plan de consulta distribuida.
distributed_plan_max_rows_to_broadcast
Número máximo de filas para usar un broadcast join en lugar de un shuffle join en el plan de consulta distribuida.
distributed_plan_optimize_exchanges
Elimina los intercambios innecesarios en el plan de consulta distribuida. Desactívelo para depuración.
distributed_plan_prefer_replicas_over_workers
Serializa el plan de consulta distribuida para ejecutarlo en las réplicas.
Cambia el comportamiento de las subconsultas distribuidas.
ClickHouse aplica esta configuración cuando la consulta contiene el producto de tablas distribuidas; es decir, cuando la consulta de una tabla distribuida contiene una subconsulta no GLOBAL para la tabla distribuida.
Restricciones:
- Solo se aplica a las subconsultas
IN y JOIN.
- Solo si la sección
FROM usa una tabla distribuida que contiene más de un segmento.
- Si la subconsulta hace referencia a una tabla distribuida que contiene más de un segmento.
- No se usa para la función de tabla remote.
Valores posibles:
deny — Valor predeterminado. Prohíbe usar estos tipos de subconsultas (devuelve la excepción “Double-distributed in/JOIN subqueries is denied”).
local — Reemplaza la base de datos y la tabla de la subconsulta por las locales del servidor de destino (segmento), dejando IN/JOIN normal.
global — Reemplaza la consulta IN/JOIN por GLOBAL IN/GLOBAL JOIN.
allow — Permite el uso de estos tipos de subconsultas.
distributed_push_down_limit
Habilita o deshabilita la aplicación de LIMIT por separado en cada segmento.
Esto permite evitar:
- Enviar filas adicionales por la red;
- Procesar filas que quedan fuera del límite en el iniciador.
A partir de la versión 21.9, ya no es posible obtener resultados inexactos, ya que distributed_push_down_limit cambia la ejecución de la consulta solo si se cumple al menos una de estas condiciones:
- distributed_group_by_no_merge > 0.
- La consulta no tiene
GROUP BY/DISTINCT/LIMIT BY, pero sí ORDER BY/LIMIT.
- La consulta tiene
GROUP BY/DISTINCT/LIMIT BY con ORDER BY/LIMIT y:
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Véase también:
distributed_replica_error_cap
- Tipo: entero sin signo
- Valor predeterminado: 1000
El número de errores de cada réplica está limitado a este valor, lo que evita que una sola réplica acumule demasiados errores.
Véase también:
distributed_replica_error_half_life
- Tipo: segundos
- Valor predeterminado: 60 segundos
Controla la rapidez con la que los errores en las tablas distribuidas se ponen a cero. Si una réplica no está disponible durante un tiempo, acumula 5 errores y distributed_replica_error_half_life se establece en 1 segundo, la réplica vuelve a considerarse normal 3 segundos después del último error.
Véase también:
distributed_replica_max_ignored_errors
- Tipo: entero sin signo
- Valor predeterminado: 0
El número de errores que se ignorarán al seleccionar las réplicas (según el algoritmo load_balancing).
Vea también:
do_not_merge_across_partitions_select_final
Mejora las consultas FINAL al evitar los merges entre distintas particiones.
Cuando está habilitado, durante las consultas SELECT FINAL, las partes de distintas particiones no se mezclarán entre sí. En su lugar, la mezcla solo se producirá dentro de cada partición por separado. Esto puede mejorar significativamente el rendimiento de las consultas al trabajar con tablas particionadas.
dynamic_disk_allow_from_env
Permite usar sustituciones from_env en la configuración de discos dinámicos (es decir, en los argumentos de la función disk()).
Está deshabilitada de forma predeterminada para evitar que los usuarios puedan leer variables de entorno arbitrarias al definir el almacenamiento de la tabla.
dynamic_disk_allow_from_zk
Permite usar sustituciones from_zk en la configuración dinámica del disco (es decir, en los argumentos de la función disk()).
Deshabilitada de forma predeterminada.
dynamic_disk_allow_include
Permite usar include en la configuración dinámica de discos (es decir, en los argumentos de la función disk()).
Desactivada de forma predeterminada.
dynamic_throw_on_type_mismatch
Al aplicar una función a una columna Dynamic mediante la implementación predeterminada,
controla qué ocurre con las filas cuyo tipo real es incompatible con la función:
true (predeterminado) — lanzar una excepción.
false — devolver NULL para esas filas.
empty_result_for_aggregation_by_constant_keys_on_empty_set
Devuelve un resultado vacío al agregar por claves constantes sobre un conjunto vacío.
empty_result_for_aggregation_by_empty_set
Devuelve un resultado vacío al realizar una agregación sin claves sobre un conjunto vacío.
enable_adaptive_memory_spill_scheduler
Hace que el procesador vuelque datos al almacenamiento externo de forma adaptativa. Actualmente, se admite grace join.
enable_add_distinct_to_in_subqueries
Habilita DISTINCT en las subconsultas IN. Esta configuración implica una compensación: activarla puede reducir considerablemente el tamaño de las tablas temporales transferidas para las subconsultas IN distribuidas y acelerar significativamente la transferencia de datos entre segmentos, ya que garantiza que solo se envíen valores únicos.
Sin embargo, activar esta configuración añade trabajo de fusión adicional en cada nodo, ya que debe realizarse la deduplicación (DISTINCT). Usa esta configuración cuando la transferencia de red sea un cuello de botella y el coste adicional de fusión sea aceptable.
enable_automatic_decision_for_merging_across_partitions_for_final
Si está habilitado, ClickHouse activará automáticamente esta optimización cuando la expresión de la clave de partición sea determinista y todas las columnas usadas en ella estén incluidas en la clave primaria.
Esta deducción automática garantiza que las filas con los mismos valores de clave primaria siempre pertenecerán a la misma partición, por lo que es seguro evitar las fusiones entre particiones.
Registra información sobre las operaciones de blob storage en la tabla system.blob_storage_log
enable_blob_storage_log_for_read_operations
Registra información sobre las operaciones de lectura de almacenamiento de blobs en la tabla system.blob_storage_log.
Requiere que enable_blob_storage_log también esté habilitado.
enable_early_constant_folding
Habilita la optimización de consultas en la que se analizan los resultados de funciones y subconsultas, y se reescribe la consulta si contienen constantes
enable_extended_results_for_datetime_functions
Habilita o deshabilita la devolución de resultados de tipo Date32 con rango ampliado (en comparación con el tipo Date)
o de tipo DateTime64 con rango ampliado (en comparación con el tipo DateTime).
Valores posibles:
0 — Las funciones devuelven Date o DateTime para todos los tipos de argumentos.
1 — Las funciones devuelven Date32 o DateTime64 para argumentos Date32 o DateTime64, y Date o DateTime en los demás casos.
La siguiente tabla muestra el comportamiento de esta configuración para varias funciones de fecha y hora.
| Función | enable_extended_results_for_datetime_functions = 0 | enable_extended_results_for_datetime_functions = 1 |
|---|
toStartOfYear | Devuelve Date o DateTime | Devuelve Date/DateTime para entradas de tipo Date/DateTime Devuelve Date32/DateTime64 para entradas de tipo Date32/DateTime64 |
toStartOfISOYear | Devuelve Date o DateTime | Devuelve Date/DateTime para entradas Date/DateTime Devuelve Date32/DateTime64 para entradas Date32/DateTime64 |
toStartOfQuarter | Devuelve Date o DateTime | Devuelve Date/DateTime para entradas Date/DateTime Devuelve Date32/DateTime64 para entradas Date32/DateTime64 |
toStartOfMonth | Devuelve Date o DateTime | Devuelve Date/DateTime para entradas Date/DateTime Devuelve Date32/DateTime64 para entradas Date32/DateTime64 |
toStartOfWeek | Devuelve Date o DateTime | Devuelve Date/DateTime para valores de entrada Date/DateTime Devuelve Date32/DateTime64 para valores de entrada Date32/DateTime64 |
toLastDayOfWeek | Devuelve Date o DateTime | Devuelve Date/DateTime cuando la entrada es Date/DateTime Devuelve Date32/DateTime64 cuando la entrada es Date32/DateTime64 |
toLastDayOfMonth | Devuelve Date o DateTime | Devuelve Date/DateTime para entradas Date/DateTime Devuelve Date32/DateTime64 para entradas Date32/DateTime64 |
toMonday | Devuelve Date o DateTime | Devuelve Date/DateTime para valores de entrada Date/DateTime Devuelve Date32/DateTime64 para valores de entrada Date32/DateTime64 |
toStartOfDay | Devuelve DateTime Nota: resultados incorrectos para valores fuera del intervalo 1970-2149 | Devuelve DateTime para una entrada Date/DateTime Devuelve DateTime64 para una entrada Date32/DateTime64 |
toStartOfHour | Devuelve DateTime Nota: resultados incorrectos para valores fuera del rango 1970-2149 | Devuelve DateTime para entradas Date/DateTime Devuelve DateTime64 para entradas Date32/DateTime64 |
toStartOfFifteenMinutes | Devuelve DateTime Nota: resultados incorrectos para valores fuera del rango 1970-2149 | Devuelve DateTime para entradas Date/DateTime Devuelve DateTime64 para entradas Date32/DateTime64 |
toStartOfTenMinutes | Devuelve DateTime Nota: resultados incorrectos para valores fuera del rango 1970-2149 | Devuelve DateTime para entradas Date/DateTime Devuelve DateTime64 para entradas Date32/DateTime64 |
toStartOfFiveMinutes | Devuelve DateTime Nota: devuelve resultados incorrectos para valores fuera del intervalo 1970-2149 | Devuelve DateTime para entradas Date/DateTime Devuelve DateTime64 para entradas Date32/DateTime64 |
toStartOfMinute | Devuelve DateTime Nota: resultados incorrectos para valores fuera del intervalo 1970-2149 | Devuelve DateTime para entradas Date/DateTime Devuelve DateTime64 para entradas Date32/DateTime64 |
timeSlot | Devuelve DateTime Nota: produce resultados incorrectos para valores fuera del rango 1970-2149 | Devuelve DateTime para entradas Date/DateTime Devuelve DateTime64 para entradas Date32/DateTime64 |
Usa la caché para el filesystem remoto. Esta configuración no activa ni desactiva la caché de los discos (debe hacerse mediante la configuración del disco), pero permite omitir la caché para algunas consultas si así se pretende
enable_filesystem_cache_log
Permite registrar el log de la caché del sistema de archivos para cada consulta
enable_filesystem_cache_on_write_operations
Habilita o deshabilita la caché write-through. Si se establece en false, la caché write-through se desactiva para las operaciones de escritura. Si se establece en true, la caché write-through se activa siempre que cache_on_write_operations esté habilitado en la sección de configuración del disco de caché de la configuración del servidor.
Consulta “Using local cache” para obtener más información.
Valor predeterminado de Cloud: 1.
enable_filesystem_read_prefetches_log
Registra en system.filesystem prefetch_log durante la consulta. Debe usarse solo para pruebas o depuración; no se recomienda habilitarlo de forma predeterminada
Aliases: allow_experimental_full_text_index
Si se establece en true, permite usar el índice de texto.
enable_global_with_statement
Propagar las sentencias WITH a las consultas UNION y a todas las subconsultas
Habilita o deshabilita pread para archivos HDFS. De forma predeterminada, se usa hdfsPread. Si se deshabilita, se usarán hdfsRead y hdfsSeek para leer archivos HDFS.
Habilita o deshabilita la compresión de datos en la respuesta a una petición HTTP.
Para obtener más información, consulta la descripción de la interfaz HTTP.
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
Muestra la traza de pila del creador de un trabajo cuando este genera una excepción. Está deshabilitado de forma predeterminada para evitar la sobrecarga de rendimiento.
enable_join_fixed_hash_table_conversion
Habilita la conversión de la tabla hash a un array plano para joins cuando la clave es un solo entero con un rango de valores pequeño.
enable_join_runtime_filters
Filtra el lado izquierdo usando el conjunto de claves de JOIN recopiladas del lado derecho en tiempo de ejecución.
enable_join_transitive_predicates
Infiere predicados transitivos de equijoin a partir de las condiciones de join existentes.
Por ejemplo, dados A.x = B.x y B.x = C.x, se añade un predicado sintético A.x = C.x
para que el optimizador del orden de join pueda considerar planes directos de (A JOIN C).
enable_lazy_columns_replication
Habilita la replicación diferida de columnas en JOIN y ARRAY JOIN, lo que permite evitar copias innecesarias de las mismas filas varias veces en memoria.
enable_lightweight_delete
Alias: allow_experimental_lightweight_delete
Habilita las mutaciones DELETE de eliminación ligera en tablas MergeTree.
enable_lightweight_update
Alias: allow_experimental_lightweight_update
Permite utilizar actualizaciones ligeras.
Habilita las expresiones de tabla comunes materializadas; tiene prioridad sobre enable_global_with_statement
enable_memory_bound_merging_of_aggregation_results
Activa la estrategia de fusión limitada por memoria para la agregación.
enable_multiple_prewhere_read_steps
Traslada más condiciones de WHERE a PREWHERE y realiza lecturas desde disco y filtrado en varios pasos si hay varias condiciones combinadas con AND
enable_named_columns_in_function_tuple
Genera tuplas con nombre en la función tuple() cuando todos los nombres sean únicos y puedan tratarse como identificadores sin comillas.
enable_optimize_predicate_expression
Activa el pushdown de predicados en las consultas SELECT.
El pushdown de predicados puede reducir significativamente el tráfico de red en las consultas distribuidas.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Uso
Considere las siguientes consultas:
SELECT count() FROM test_table WHERE date = '2018-10-10'
SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'
Si enable_optimize_predicate_expression = 1, el tiempo de ejecución de estas consultas es el mismo porque ClickHouse aplica WHERE a la subconsulta durante su procesamiento.
Si enable_optimize_predicate_expression = 0, el tiempo de ejecución de la segunda consulta es mucho mayor porque la cláusula WHERE se aplica a todos los datos una vez finalizada la subconsulta.
enable_optimize_predicate_expression_to_final_subquery
Permite trasladar el predicado a la subconsulta FINAL.
Habilita o deshabilita la ordenación mediante la sintaxis ORDER BY ALL; consulte ORDER BY.
Valores posibles:
- 0 — Deshabilita ORDER BY ALL.
- 1 — Habilita ORDER BY ALL.
Ejemplo
Consulta:
CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();
INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);
SELECT * FROM TAB ORDER BY ALL; -- devuelve un error porque ALL es ambiguo
SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;
Resultado:
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │ 10 │
│ 30 │ 10 │ 20 │
│ 10 │ 20 │ 30 │
└────┴────┴─────┘
enable_parallel_blocks_marshalling
Afecta solo a las consultas distribuidas. Si está habilitado, los bloques se (des)serializarán y (des)comprimirán en los hilos del pipeline (es decir, con un paralelismo mayor que el predeterminado) antes/después de enviarlos al iniciador.
enable_parsing_to_custom_serialization
Si es true, los datos pueden interpretarse directamente en columnas con serialización personalizada (p. ej., Sparse), según las indicaciones de serialización obtenidas de la tabla.
enable_positional_arguments
Habilita o deshabilita el uso de argumentos posicionales en las sentencias GROUP BY, LIMIT BY y ORDER BY.
Valores posibles:
- 0 — No se admiten argumentos posicionales.
- 1 — Se admiten argumentos posicionales: se pueden usar números de columna en lugar de nombres de columna.
Ejemplo
Consulta:
CREATE TABLE positional_arguments(one Int, two Int, three Int) ENGINE=Memory();
INSERT INTO positional_arguments VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);
SELECT * FROM positional_arguments ORDER BY 2,3;
Resultado:
┌─one─┬─two─┬─three─┐
│ 30 │ 10 │ 20 │
│ 20 │ 20 │ 10 │
│ 10 │ 20 │ 30 │
└─────┴─────┴───────┘
enable_positional_arguments_for_projections
Habilita o deshabilita la compatibilidad con argumentos posicionales en las definiciones de PROJECTION. Consulte también la configuración enable_positional_arguments.
Esta es una configuración de nivel experto y no debe cambiarla si apenas está empezando con ClickHouse.
Valores posibles:
- 0 — Los argumentos posicionales no se admiten.
- 1 — Los argumentos posicionales se admiten: se pueden usar números de columna en lugar de nombres de columna.
enable_producing_buckets_out_of_order_in_aggregation
Permite que la agregación con uso eficiente de memoria (consulta distributed_aggregation_memory_efficient) produzca buckets fuera de orden.
Puede mejorar el rendimiento cuando los tamaños de los buckets de agregación son desiguales, ya que permite que una réplica envíe buckets con identificadores más altos al iniciador mientras sigue procesando algunos buckets pesados con identificadores más bajos.
La desventaja es un uso de memoria potencialmente mayor.
enable_reads_from_query_cache
Si está activado, los resultados de las consultas SELECT se recuperan de la caché de consultas.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
enable_s3_requests_logging
Habilita un registro muy detallado de las solicitudes a S3. Solo tiene sentido para depuración.
enable_scalar_subquery_optimization
Si se establece en true, evita que las subconsultas escalares (de)serialicen valores escalares grandes y, posiblemente, que la misma subconsulta se ejecute más de una vez.
enable_scopes_for_with_statement
Si está deshabilitada, las declaraciones en las cláusulas WITH de nivel superior tendrán el mismo alcance que si se hubieran declarado en el alcance actual.
Tenga en cuenta que esta es una configuración de compatibilidad del analizador para permitir la ejecución de algunas consultas no válidas que el analizador antiguo podía ejecutar.
enable_shared_storage_snapshot_in_query
Si está habilitado, todas las subconsultas dentro de una misma consulta compartirán la misma StorageSnapshot para cada tabla.
Esto garantiza una vista coherente de los datos en toda la consulta, incluso si se accede varias veces a la misma tabla.
Esto es necesario para consultas en las que la coherencia interna de las partes de datos es importante. Ejemplo:
SELECT
count()
FROM events
WHERE (_part, _part_offset) IN (
SELECT _part, _part_offset
FROM events
WHERE user_id = 42
)
Sin esta configuración, las consultas externa e interna pueden operar sobre instantáneas de datos distintas, lo que puede producir resultados incorrectos.
Al habilitar esta configuración, se desactiva la optimización que elimina de las instantáneas las partes de datos innecesarias una vez completada la fase de planificación.
Como resultado, las consultas de larga duración pueden retener partes obsoletas durante toda su ejecución, lo que retrasa la limpieza de partes y aumenta la presión sobre el almacenamiento.Actualmente, esta configuración solo se aplica a tablas de la familia MergeTree.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
enable_sharing_sets_for_mutations
Permite compartir objetos Set creados para subconsultas IN entre diferentes tareas de la misma mutación. Esto reduce el uso de memoria y el consumo de CPU
enable_software_prefetch_in_aggregation
Habilita el uso de la precarga por software en la agregación
enable_software_prefetch_in_join
Habilita el uso de prefetch por software en la fase de sondeo de hash join para ocultar la latencia de acceso a memoria en tablas hash grandes.
Aliases: allow_experimental_time_time64_type
Permite crear los tipos de datos Time y Time64.
enable_unaligned_array_join
Permite ARRAY JOIN con varios arrays de distinto tamaño. Cuando esta configuración está habilitada, los arrays se redimensionan al de mayor longitud.
Permite habilitar o deshabilitar la decodificación/codificación de la ruta de la URI en tablas con motor URL.
Está deshabilitado de forma predeterminada.
Si está habilitado, elimina las filas duplicadas durante FINAL marcando las filas como eliminadas y filtrándolas posteriormente en lugar de fusionarlas
enable_writes_to_query_cache
Si está activado, los resultados de las consultas SELECT se almacenan en la caché de consultas.
Valores posibles:
- 0 - Desactivado
- 1 - Activado
Si está habilitada, solo se permiten identificadores que contengan caracteres alfanuméricos y guiones bajos.
engine_file_allow_create_multiple_files
Habilita o deshabilita la creación de un archivo nuevo en cada inserción en tablas con el engine File si el format tiene el sufijo (JSON, ORC, Parquet, etc.). Si está habilitado, en cada inserción se creará un archivo nuevo con un nombre que siga este patrón:
data.Parquet -> data.1.Parquet -> data.2.Parquet, etc.
Valores posibles:
- 0 — la consulta
INSERT agrega datos nuevos al final del archivo.
- 1 — la consulta
INSERT crea un archivo nuevo.
engine_file_empty_if_not_exists
Permite seleccionar datos de una tabla del motor File aunque no exista el archivo.
Valores posibles:
- 0 —
SELECT lanza una excepción.
- 1 —
SELECT devuelve un resultado vacío.
engine_file_skip_empty_files
Habilita o deshabilita la omisión de archivos vacíos en las tablas del motor File.
Valores posibles:
- 0 —
SELECT genera una excepción si el archivo vacío no es compatible con el formato solicitado.
- 1 —
SELECT devuelve un resultado vacío para un archivo vacío.
engine_file_truncate_on_insert
Habilita o deshabilita el truncado antes de insertar en las tablas del motor File.
Posibles valores:
- 0 — la consulta
INSERT añade datos nuevos al final del archivo.
- 1 — la consulta
INSERT sustituye el contenido existente del archivo por los nuevos datos.
engine_url_skip_empty_files
Habilita o deshabilita la omisión de archivos vacíos en las tablas del motor URL.
Valores posibles:
- 0 —
SELECT genera una excepción si el archivo vacío no es compatible con el format solicitado.
- 1 —
SELECT devuelve un resultado vacío si el archivo está vacío.
Cuando está habilitada, ClickHouse proporcionará el valor exacto de la estadística rows_before_limit_at_least, pero a costa de tener que leer por completo los datos anteriores al límite
Establece el modo predeterminado en la consulta EXCEPT. Posibles valores: cadena vacía, ‘ALL’, ‘DISTINCT’. Si está vacío, una consulta sin modo generará una excepción.
exclude_materialize_skip_indexes_on_insert
Excluye los índices de omisión especificados para que no se creen ni se almacenen durante los INSERTs. Los índices de omisión excluidos se seguirán creando y almacenando durante las fusiones o mediante una
consulta MATERIALIZE INDEX explícita.
No tiene efecto si materialize_skip_indexes_on_insert es false.
Ejemplo:
CREATE TABLE tab
(
a UInt64,
b UInt64,
INDEX idx_a a TYPE minmax,
INDEX idx_b b TYPE set(3)
)
ENGINE = MergeTree ORDER BY tuple();
SET exclude_materialize_skip_indexes_on_insert='idx_a'; -- idx_a no se actualizará al insertar
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- ningún índice se actualizaría al insertar
INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- solo se actualiza idx_b
-- al ser una configuración de sesión, puede establecerse a nivel de consulta individual
INSERT INTO tab SELECT number, number / 50 FROM numbers(100, 100) SETTINGS exclude_materialize_skip_indexes_on_insert='idx_b';
ALTER TABLE tab MATERIALIZE INDEX idx_a; -- esta consulta puede usarse para materializar el índice de forma explícita
SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- restablecer la configuración al valor predeterminado
execute_exists_as_scalar_subquery
Ejecuta las subconsultas EXISTS no correlacionadas como subconsultas escalares. Igual que con las subconsultas escalares, se utiliza la caché y el plegado de constantes se aplica al resultado.
Valor predeterminado en Cloud: 0.
external_storage_connect_timeout_sec
Tiempo de espera de conexión en segundos. Actualmente, solo es compatible con MySQL
external_storage_max_read_bytes
Limita el número máximo de bytes cuando una tabla con motor externo debe vaciar los datos del historial. Actualmente, solo es compatible con el motor de tabla MySQL, el motor de base de datos y el diccionario. Si es igual a 0, esta configuración está deshabilitada
external_storage_max_read_rows
Limita el número máximo de filas cuando una tabla con motor externo deba volcar los datos del historial. Actualmente, solo es compatible con el motor de tabla MySQL, el motor de base de datos y el diccionario. Si es igual a 0, esta configuración está deshabilitada
external_storage_rw_timeout_sec
Tiempo de espera de lectura/escritura en segundos. Actualmente, solo se admite para MySQL
external_table_functions_use_nulls
Define cómo las funciones de tabla mysql, postgresql y odbc utilizan columnas Nullable.
Valores posibles:
- 0 — La función de tabla utiliza explícitamente columnas Nullable.
- 1 — La función de tabla utiliza implícitamente columnas Nullable.
Uso
Si esta configuración se establece en 0, la función de tabla no genera columnas Nullable e inserta valores predeterminados en lugar de NULL. Esto también se aplica a los valores NULL dentro de los arrays.
external_table_strict_query
Si se establece en true, se prohíbe convertir la expresión en un filtro local en las consultas a tablas externas.
Alias: extract_kvp_max_pairs_per_row
Número máximo de pares que puede generar la función extractKeyValuePairs. Se utiliza como medida de protección para evitar un consumo excesivo de memoria.
Indica si se deben contar los valores extremos (los mínimos y máximos en las columnas del resultado de una consulta). Acepta 0 o 1. De forma predeterminada, 0 (deshabilitado).
Para obtener más información, consulte la sección “Valores extremos”.
fallback_to_stale_replicas_for_distributed_queries
Obliga a que una consulta use una réplica desactualizada si no hay datos actualizados disponibles. Consulte Replicación.
ClickHouse selecciona la más adecuada entre las réplicas desactualizadas de la tabla.
Se utiliza al ejecutar SELECT en una tabla distribuida que apunta a tablas replicadas.
De forma predeterminada, 1 (habilitado).
filesystem_cache_allow_background_download
Permite que la caché del sistema de archivos ponga en cola descargas en segundo plano para los datos leídos del almacenamiento remoto. Desactívelo para mantener las descargas en primer plano para la consulta o sesión actual.
filesystem_cache_boundary_alignment
Alineación de los límites de la caché del sistema de archivos. Esta configuración se aplica solo a lecturas que no se realizan desde disco (p. ej., para la caché de motores de tabla remotos / funciones de tabla, pero no para la configuración de almacenamiento de las tablas MergeTree). El valor 0 significa que no hay alineación.
filesystem_cache_enable_background_download_during_fetch
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera para bloquear la caché al reservar espacio en la caché del sistema de archivos
Solo tiene efecto en ClickHouse Cloud. Tiempo de espera para adquirir un bloqueo de caché y reservar espacio en la caché del sistema de archivos
filesystem_cache_max_download_size
Tamaño máximo de la caché remota del sistema de archivos que puede descargarse con una sola consulta
Nombre de la caché del sistema de archivos que se utilizará para motores de tabla sin estado o lagos de datos
filesystem_cache_prefer_bigger_buffer_size
Prioriza un tamaño de búfer mayor si la caché del sistema de archivos está habilitada para evitar escribir segmentos de archivo pequeños, que perjudican el rendimiento de la caché. Por otro lado, habilitar esta configuración podría aumentar el uso de memoria.
filesystem_cache_reserve_space_wait_lock_timeout_milliseconds
Tiempo de espera para bloquear la caché al reservar espacio en la caché del sistema de archivos
filesystem_cache_segments_batch_size
Límite del tamaño de un único batch de segmentos de archivo que un búfer de lectura puede solicitar a la caché. Un valor demasiado bajo provocará demasiadas solicitudes a la caché; uno demasiado alto puede ralentizar la expulsión de la caché
filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit
Alias: skip_download_if_exceeds_query_cache
Omitir la descarga desde el sistema de archivos remoto si supera el tamaño de la caché de consultas
filesystem_prefetch_max_memory_usage
Uso máximo de memoria para las operaciones de precarga.
Valor predeterminado en Cloud: 10% de la memoria total.
filesystem_prefetch_step_bytes
Paso de prefetch en bytes. Cero significa auto: el paso de prefetch óptimo se inferirá automáticamente de forma aproximada, aunque puede que no sea el mejor en todos los casos. El valor real puede ser diferente debido a la configuración filesystem_prefetch_min_bytes_for_single_read_task
filesystem_prefetch_step_marks
Paso de precarga en marcas. Cero significa auto: se deducirá automáticamente un paso de precarga aproximadamente óptimo, aunque puede que no sea el mejor en todos los casos. El valor real puede ser diferente debido a la configuración filesystem_prefetch_min_bytes_for_single_read_task
filesystem_prefetches_limit
Número máximo de precargas. Cero significa sin límite. Se recomienda la configuración filesystem_prefetches_max_memory_usage si desea limitar el número de precargas
Aplica automáticamente el modificador FINAL a todas las tablas de una consulta en las que FINAL sea aplicable, incluidas las tablas combinadas, las tablas de las subconsultas y
las tablas distribuidas.
Posibles valores:
- 0 - deshabilitado
- 1 - habilitado
Ejemplo:
CREATE TABLE test
(
key Int64,
some String
)
ENGINE = ReplacingMergeTree
ORDER BY key;
INSERT INTO test FORMAT Values (1, 'first');
INSERT INTO test FORMAT Values (1, 'second');
SELECT * FROM test;
┌─key─┬─some───┐
│ 1 │ second │
└─────┴────────┘
┌─key─┬─some──┐
│ 1 │ first │
└─────┴───────┘
SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
│ 1 │ second │
└─────┴────────┘
SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
│ 1 │ second │
└─────┴────────┘
finalize_projection_parts_synchronously
Cuando está habilitada, las partes de proyección se finalizan de forma síncrona durante INSERT, lo que reduce el uso máximo de memoria a costa de una menor paralelización de las cargas a S3. De forma predeterminada, el flujo de salida de cada proyección se mantiene activo hasta que se finaliza la parte completa (incluidas todas las proyecciones), lo que permite solapar las cargas a S3, pero aumenta el uso máximo de memoria en proporción al número de proyecciones. Esta configuración solo afecta a la ruta de INSERT; merge y mutation ya finalizan las proyecciones de forma síncrona.
Establece el formato de datos de las columnas de tipo nested.
Valores posibles:
- 1 — La columna nested se aplana en arrays separados.
- 0 — La columna nested sigue siendo un único array de tuplas.
Uso
Si el ajuste se establece en 0, se puede usar cualquier nivel de anidamiento.
Ejemplos
Consulta:
SET flatten_nested = 1;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();
SHOW CREATE TABLE t_nest;
Resultado:
┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
`n.a` Array(UInt32),
`n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Consulta:
SET flatten_nested = 0;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();
SHOW CREATE TABLE t_nest;
Resultado:
┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
`n` Nested(a UInt32, b UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
force_aggregate_partitions_independently
Fuerza el uso de esta optimización cuando es aplicable, aunque las heurísticas hayan decidido no utilizarla
force_aggregation_in_order
Esta configuración la utiliza el propio servidor para admitir consultas distribuidas. No la cambie manualmente, porque interrumpirá el funcionamiento normal. (Fuerza el uso de la agregación en orden en los nodos remotos durante la agregación distribuida).
force_data_skipping_indices
Deshabilita la ejecución de la consulta si no se utilizaron los índices de omisión de datos especificados.
Considere el siguiente ejemplo:
CREATE TABLE data
(
key Int,
d1 Int,
d1_null Nullable(Int),
INDEX d1_idx d1 TYPE minmax GRANULARITY 1,
INDEX d1_null_idx assumeNotNull(d1_null) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;
SELECT * FROM data_01515;
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices=''; -- la consulta producirá el error CANNOT_PARSE_TEXT.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- la consulta producirá el error INDEX_NOT_USED.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Correcto.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Correcto (ejemplo de parser con todas las funcionalidades).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- la consulta producirá el error INDEX_NOT_USED, ya que d1_null_idx no se utiliza.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Correcto.
force_grouping_standard_compatibility
Hace que la función GROUPING devuelva 1 cuando el argumento no se use como clave de agregación
Desactiva la ejecución de la consulta si no se puede usar el índice de fecha.
Funciona con tablas de la familia MergeTree.
Si force_index_by_date=1, ClickHouse comprueba si la consulta tiene una condición sobre la clave de fecha que pueda usarse para restringir los rangos de datos. Si no hay una condición adecuada, lanza una excepción. Sin embargo, no comprueba si la condición reduce la cantidad de datos que se deben leer. Por ejemplo, la condición Date != ' 2000-01-01 ' es aceptable incluso cuando coincide con todos los datos de la tabla (es decir, ejecutar la consulta requiere un escaneo completo). Para obtener más información sobre los rangos de datos en las tablas MergeTree, consulta MergeTree.
force_optimize_projection
Habilita o deshabilita el uso obligatorio de proyecciones en las consultas SELECT cuando está habilitada la optimización de proyecciones (consulta el ajuste optimize_use_projections).
Valores posibles:
- 0 — La optimización de proyecciones no es obligatoria.
- 1 — La optimización de proyecciones es obligatoria.
force_optimize_projection_name
Si se establece como una cadena no vacía, compruebe que esta proyección se utilice en la consulta al menos una vez.
Valores posibles:
- cadena: nombre de la proyección que se utiliza en una consulta
force_optimize_skip_unused_shards
Habilita o deshabilita la ejecución de consultas si optimize_skip_unused_shards está habilitado y no es posible omitir los segmentos no utilizados. Si no es posible omitirlos y esta configuración está habilitada, se lanzará una excepción.
Valores posibles:
- 0 — Deshabilitado. ClickHouse no lanza ninguna excepción.
- 1 — Habilitado. La ejecución de consultas se deshabilita solo si la tabla tiene una clave de segmentación.
- 2 — Habilitado. La ejecución de consultas se deshabilita independientemente de si la tabla tiene definida una clave de segmentación.
force_optimize_skip_unused_shards_nesting
Controla force_optimize_skip_unused_shards en función del nivel de anidamiento de la consulta distribuida (es decir, cuando tiene una tabla Distributed que consulta otra tabla Distributed), por lo que sigue requiriendo force_optimize_skip_unused_shards.
Valores posibles:
- 0 - Deshabilitado;
force_optimize_skip_unused_shards funciona siempre.
- 1 — Habilita
force_optimize_skip_unused_shards solo para el primer nivel.
- 2 — Habilita
force_optimize_skip_unused_shards hasta el segundo nivel.
Deshabilita la ejecución de la consulta si no es posible usar el índice de la clave primaria.
Funciona con tablas de la familia MergeTree.
Si force_primary_key=1, ClickHouse comprueba si la consulta tiene una condición sobre la clave primaria que pueda usarse para restringir los rangos de datos. Si no existe una condición adecuada, lanza una excepción. Sin embargo, no comprueba si la condición reduce la cantidad de datos que se deben leer. Para obtener más información sobre los rangos de datos en las tablas MergeTree, consulte MergeTree.
force_remove_data_recursively_on_drop
Elimina los datos de forma recursiva en la consulta DROP. Evita el error ‘El directorio no está vacío’, pero puede eliminar silenciosamente datos detached
El especificador de formato ‘%e’ de la función ‘formatDateTime’ imprime los días de un solo dígito con un espacio delante, por ejemplo, ’ 2’ en lugar de ‘2’.
El formateador ‘%f’ de la función ‘formatDateTime’ imprime solo la cantidad de dígitos correspondiente a la escala de un DateTime64, en lugar de 6 dígitos fijos.
El formateador ‘%f’ de la función ‘formatDateTime’ imprime un único cero en lugar de seis ceros si el valor formateado no tiene fracciones de segundo.
Los formateadores ‘%c’, ‘%l’ y ‘%k’ de la función ‘formatDateTime’ muestran los meses y las horas sin ceros a la izquierda.
El especificador de formato ‘%M’ en las funciones ‘formatDateTime’ y ‘parseDateTime’ imprime/analiza el nombre del mes en lugar de los minutos.
Habilita o deshabilita fsync al escribir archivos .sql. Está habilitado de forma predeterminada.
Tiene sentido deshabilitarlo si el server tiene millones de tablas pequeñas que se crean y destruyen constantemente.
function_date_trunc_return_type_behavior
Permite cambiar el comportamiento del tipo de resultado de la función dateTrunc.
Valores posibles:
- 0 - Cuando el segundo argumento es
DateTime64/Date32, el tipo de retorno será DateTime64/Date32 independientemente de la unidad de tiempo del primer argumento.
- 1 - Para
Date32, el resultado siempre es Date. Para DateTime64, el resultado es DateTime para las unidades de tiempo second y superiores.
Elija la implementación de la función para un destino específico o Variant (experimental). Si se deja vacío, se habilitan todas.
function_json_value_return_type_allow_complex
Controla si se permite devolver tipos complejos (como struct, array y map) en la función json_value.
SELECT JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true
┌─JSON_VALUE('{"hello":{"world":"!"}}', '$.hello')─┐
│ {"world":"!"} │
└──────────────────────────────────────────────────┘
1 row in set. Elapsed: 0.001 sec.
Valores posibles:
- true — Se permite.
- false — No se permite.
function_json_value_return_type_allow_nullable
Controla si se permite devolver NULL cuando no existe ningún valor para la función JSON_VALUE.
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
│ ᴺᵁᴸᴸ │
└────────────────────────────────────────┘
1 row in set. Elapsed: 0.001 sec.
Valores posibles:
- true — Se permite.
- false — No se permite.
function_locate_has_mysql_compatible_argument_order
Controla el orden de los argumentos de la función locate.
Valores posibles:
- 0 — La función
locate acepta los argumentos (haystack, needle[, start_pos]).
- 1 — La función
locate acepta los argumentos (needle, haystack, [, start_pos]) (comportamiento compatible con MySQL)
function_range_max_elements_in_block
Establece el umbral de seguridad para el volumen de datos generado por la función range. Define el número máximo de valores que la función puede generar por bloque de datos (la suma de los tamaños de los arrays para cada fila de un bloque).
Valores posibles:
Véase también
function_sleep_max_microseconds_per_block
Número máximo de microsegundos durante los que la función sleep puede suspenderse por cada bloque. Si un usuario la llama con un valor mayor, lanza una excepción. Es un umbral de seguridad.
function_visible_width_behavior
Versión del comportamiento de visibleWidth. 0: solo cuenta el número de puntos de código; 1: cuenta correctamente los caracteres de ancho cero y los caracteres combinantes, cuenta los caracteres de ancho completo como dos, estima el ancho de las tabulaciones y cuenta los caracteres de supresión.
functions_h3_default_if_invalid
Si es false, las funciones h3, por ejemplo h3CellAreaM2, generan una excepción si la entrada no es válida. Si es true, devuelven 0 o el valor predeterminado.
geo_distance_returns_float64_on_float64_arguments
Si los cuatro argumentos de las funciones geoDistance, greatCircleDistance y greatCircleAngle son Float64, estas devuelven Float64 y usan precisión doble para los cálculos internos. En versiones anteriores de ClickHouse, estas funciones siempre devolvían Float32.
La función geoToH3 acepta (lon, lat) si está configurada como ‘lon_lat’ y (lat, lon) si está configurada como ‘lat_lon’.
glob_expansion_max_elements
Número máximo de direcciones permitidas (para sistemas de almacenamiento externos, funciones de tabla, etc.).
grace_hash_join_initial_buckets
Número inicial de buckets de grace hash join
grace_hash_join_max_buckets
Límite en el número de buckets de grace hash join
Establece qué ocurre cuando el número de claves únicas para la agregación supera el límite:
throw: lanzar una excepción
break: detener la ejecución de la consulta y devolver el resultado parcial
any: continuar la agregación para las claves que entraron en el conjunto, pero sin añadir nuevas claves al conjunto.
Usar el valor any permite ejecutar una aproximación de GROUP BY. La calidad de
esta aproximación depende de la naturaleza estadística de los datos.
group_by_two_level_threshold
A partir de cuántas claves comienza una agregación en dos niveles. 0: el umbral no está establecido.
group_by_two_level_threshold_bytes
A partir de qué tamaño del estado de agregación, en bytes, se empieza a usar una agregación en dos niveles. 0: el umbral no está establecido. La agregación en dos niveles se utiliza cuando se alcanza al menos uno de los umbrales.
Cambia la forma en que la cláusula GROUP BY trata los tipos de las claves de agregación.
Cuando se usan los especificadores ROLLUP, CUBE o GROUPING SETS, es posible que algunas claves de agregación no se utilicen para generar algunas filas de resultados.
Las columnas de estas claves se rellenan con el valor predeterminado o con NULL en las filas correspondientes, según esta configuración.
Valores posibles:
- 0 — Se utiliza el valor predeterminado del tipo de clave de agregación para generar los valores faltantes.
- 1 — ClickHouse ejecuta
GROUP BY de la misma forma que indica el estándar SQL. Los tipos de las claves de agregación se convierten a Nullable. Las columnas de las claves de agregación correspondientes se rellenan con NULL en las filas donde no se usaron.
Véase también:
h3togeo_lon_lat_result_order
La función ‘h3ToGeo’ devuelve (lon, lat) si es true; de lo contrario, (lat, lon).
Tiempo de espera, en milisegundos, para recibir el paquete Hello de las réplicas durante el handshake.
hdfs_create_new_file_on_insert
Habilita o deshabilita la creación de un archivo nuevo en cada insert en las tablas del motor HDFS. Si está habilitado, en cada insert se creará un nuevo archivo HDFS con un nombre similar a este patrón:
inicial: data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz, etc.
Valores posibles:
- 0 — la consulta
INSERT añade nuevos datos al final del archivo.
- 1 — la consulta
INSERT crea un archivo nuevo.
hdfs_ignore_file_doesnt_exist
Ignora la ausencia de un archivo si este no existe al leer determinadas claves.
Valores posibles:
- 1 —
SELECT devuelve un resultado vacío.
- 0 —
SELECT lanza una excepción.
El número real de réplicas puede especificarse al crear el archivo hdfs.
Habilita o deshabilita la omisión de archivos vacíos en las tablas con motor HDFS.
Valores posibles:
- 0 —
SELECT lanza una excepción si el archivo vacío no es compatible con el formato solicitado.
- 1 —
SELECT devuelve un resultado vacío para un archivo vacío.
hdfs_throw_on_zero_files_match
Genera un error si no se encuentra ningún archivo que coincida según las reglas de expansión de glob.
Valores posibles:
- 1 —
SELECT lanza una excepción.
- 0 —
SELECT devuelve un resultado vacío.
Habilita o deshabilita el truncado antes de un insert en tablas con el engine HDFS. Si está deshabilitado, se lanzará una excepción al intentar hacer un insert si el archivo ya existe en HDFS.
Valores posibles:
- 0 — la consulta
INSERT agrega datos nuevos al final del archivo.
- 1 — la consulta
INSERT reemplaza el contenido existente del archivo por los datos nuevos.
hedged_connection_timeout_ms
Tiempo de espera para establecer una conexión con una réplica en solicitudes hedged
highlight_max_matches_per_row
Establece el número máximo de coincidencias de resaltado por fila en la función highlight. Úselo para evitar un uso excesivo de memoria al resaltar patrones muy repetitivos en textos grandes.
Valores posibles:
hnsw_candidate_list_size_for_search
El tamaño de la lista dinámica de candidatos al buscar en el índice de similitud vectorial, también conocido como ‘ef_search’.
Tiempo de expiración de HSTS. 0 significa deshabilitar HSTS.
Tiempo de espera de la conexión HTTP (en segundos).
Valores posibles:
- Cualquier número entero positivo.
- 0 - Desactivado (tiempo de espera infinito).
No envíe la cabecera HTTP X-ClickHouse-Progress con una frecuencia superior al intervalo especificado.
Tiempo máximo, en segundos, para leer todas las cabeceras de la solicitud HTTP. Es un plazo total para toda la fase de análisis de cabeceras, no un timeout por lectura. Protege frente a ataques de tipo slowloris, en los que un cliente envía lentamente los datos de las cabeceras para mantener abiertas las conexiones.
La configuración http_make_head_request permite ejecutar una solicitud HEAD al leer datos desde HTTP para obtener información sobre el archivo que se va a leer, como su tamaño. Dado que está habilitada de forma predeterminada, puede ser conveniente desactivar esta configuración cuando el server no admita solicitudes HEAD.
Longitud máxima del nombre del campo del encabezado HTTP
http_max_field_value_size
Longitud máxima del valor de un campo en el encabezado HTTP
Número máximo de campos en el encabezado HTTP
Límite del tamaño del contenido multipart/form-data. Esta configuración no puede analizarse a partir de los parámetros de URL y debe establecerse en un perfil de usuario. Tenga en cuenta que el contenido se analiza y las tablas externas se crean en memoria antes de que comience la ejecución de la consulta. Además, este es el único límite que surte efecto en esa etapa (los límites de uso máximo de memoria y de tiempo máximo de ejecución no tienen efecto durante la lectura de form data de HTTP).
Tamaño máximo total de todos los encabezados de la solicitud HTTP (nombres y valores combinados), en bytes.
http_max_request_param_data_size
Límite del tamaño de los datos de la solicitud utilizados como parámetro de consulta en solicitudes HTTP predefinidas.
Número máximo de intentos de lectura a través de HTTP.
Establece la longitud máxima del URI de una solicitud HTTP.
Valores posibles:
http_native_compression_disable_checksumming_on_decompress
Habilita o deshabilita la verificación de la suma de comprobación al descomprimir los datos de HTTP POST del cliente. Se usa solo para el formato de compresión nativo de ClickHouse (no se utiliza con gzip ni deflate).
Para obtener más información, consulte la descripción de la interfaz HTTP.
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
Tiempo de espera de recepción de HTTP (en segundos).
Valores posibles:
- Cualquier entero positivo.
- 0 - Deshabilitado (tiempo de espera infinito).
http_response_buffer_size
La cantidad de bytes que se almacenan en búfer en la memoria del servidor antes de enviar una respuesta HTTP al cliente o volcarlos al disco (cuando http_wait_end_of_query está habilitado).
Permite añadir o sobrescribir cabeceras HTTP que el servidor devolverá en la respuesta cuando el resultado de la consulta sea correcto.
Esto solo afecta a la interfaz HTTP.
Si la cabecera ya está establecida de forma predeterminada, el valor proporcionado la sobrescribirá.
Si la cabecera no estaba establecida de forma predeterminada, se añadirá a la lista de cabeceras.
Las cabeceras que el servidor establece de forma predeterminada y que esta configuración no sobrescribe permanecerán.
Esta configuración permite establecer una cabecera con un valor constante. Actualmente no hay forma de establecer una cabecera con un valor calculado dinámicamente.
Ni los nombres ni los valores pueden contener caracteres de control ASCII.
Si implementa una aplicación con UI que permite a los usuarios modificar la configuración, pero al mismo tiempo toma decisiones en función de las cabeceras devueltas, se recomienda restringir esta configuración a readonly.
Ejemplo: SET http_response_headers = '{"Content-Type": "image/png"}'
http_retry_initial_backoff_ms
Milisegundos mínimos de backoff al reintentar la lectura mediante HTTP
http_retry_max_backoff_ms
Número máximo de milisegundos de backoff al reintentar una lectura mediante http
Tiempo de espera de envío HTTP (en segundos).
Valores posibles:
- Cualquier entero positivo.
- 0 - Deshabilitado (timeout infinito).
Se aplica solo al perfil predeterminado. Es necesario reiniciar el servidor para que los cambios surtan efecto.
http_skip_not_found_url_for_globs
Omitir las URL de los globs que devuelvan el error HTTP_NOT_FOUND
Activa el almacenamiento en búfer de la respuesta HTTP en el servidor.
Escribe la excepción en el formato de salida para que la salida sea válida. Funciona con los formatos JSON y XML.
http_zlib_compression_level
Establece el nivel de compresión de los datos en la respuesta a una solicitud HTTP si enable_http_compression = 1.
Valores posibles: números del 1 al 9.
iceberg_compaction_data_cleanup
Tiempo tras el cual se eliminarán los datos.
iceberg_compaction_delay_bias
Tiempo mínimo de espera entre 2 operaciones de compactación en segundo plano.
iceberg_data_file_size_lower_threshold_compaction
Umbral de compactación para archivos de datos en Iceberg.
iceberg_data_file_size_upper_threshold_compaction
Umbral para los archivos de datos de compactación en Iceberg.
iceberg_delete_data_on_drop
Indica si se deben eliminar todos los archivos de Iceberg al hacer drop.
iceberg_expire_default_max_ref_age_ms
Valor predeterminado de la propiedad history.expire.max-ref-age-ms de la tabla Iceberg que utiliza expire_snapshots cuando dicha propiedad no está definida.
iceberg_expire_default_max_snapshot_age_ms
Valor predeterminado de la propiedad de tabla Iceberg history.expire.max-snapshot-age-ms que usa expire_snapshots cuando dicha propiedad no está presente.
iceberg_expire_default_min_snapshots_to_keep
Valor predeterminado de la propiedad history.expire.min-snapshots-to-keep de la tabla Iceberg que expire_snapshots utiliza cuando dicha propiedad no está definida.
iceberg_insert_max_bytes_in_data_file
Número máximo de bytes del archivo de datos Parquet de Iceberg en una operación de inserción.
iceberg_insert_max_partitions
Número máximo de particiones permitido por operación de inserción para el motor de tabla Iceberg.
iceberg_insert_max_rows_in_data_file
Número máximo de filas en el archivo de datos Parquet de Iceberg durante una operación de inserción.
iceberg_max_number_datafiles_to_compact
Umbral de compactación de archivos de datos en Iceberg.
Método de compresión del archivo .metadata.json.
Controla el nivel de registro de metadatos de las tablas Iceberg en system.iceberg_metadata_log.
Normalmente, esta configuración puede modificarse con fines de depuración.
Valores posibles:
- none - Sin registro de metadatos.
- metadata - Archivo raíz metadata.json.
- manifest_list_metadata - Todo lo anterior + metadatos de la lista de manifiestos Avro correspondiente a una instantánea.
- manifest_list_entry - Todo lo anterior + entradas de la lista de manifiestos Avro.
- manifest_file_metadata - Todo lo anterior + metadatos de los archivos de manifiesto Avro recorridos.
- manifest_file_entry - Todo lo anterior + entradas de los archivos de manifiesto Avro recorridos.
Si no es cero, omite la obtención de metadatos de Iceberg desde el catálogo remoto si existe una instantánea de metadatos en caché más reciente que la ventana de antigüedad especificada. Un valor de cero significa que siempre se obtiene la versión más reciente de los metadatos desde el catálogo remoto. Configurar este valor con un valor distinto de cero implica aceptar cierta antigüedad a cambio de una menor latencia en las operaciones de lectura.
iceberg_orphan_files_older_than_seconds
Umbral de antigüedad predeterminado, en segundos, para eliminar archivos huérfanos en tablas Iceberg. Los archivos más recientes que este umbral no se consideran huérfanos. Se usa cuando se omite el argumento older_than en la llamada al procedimiento remove_orphan_files(). El valor predeterminado es 259200 (3 días).
Consulta la tabla Iceberg con el ID de snapshot especificado.
Consulta la tabla Iceberg usando la instantánea vigente en una marca de tiempo determinada.
Tiempo de espera para cerrar las conexiones TCP inactivas tras el número de segundos especificado.
Valores posibles:
- Entero positivo (0: cerrar inmediatamente, tras 0 segundos).
ignore_cold_parts_seconds
Solo tiene efecto en ClickHouse Cloud. Excluye las partes de datos nuevas de las consultas SELECT hasta que se precalienten (consulta cache_populated_by_fetch) o alcancen esta antigüedad en segundos. Solo para Replicated-/SharedMergeTree.
ignore_data_skipping_indices
Ignora los índices de omisión de datos especificados si la consulta los utiliza.
Considere el siguiente ejemplo:
CREATE TABLE data
(
key Int,
x Int,
y Int,
INDEX x_idx x TYPE minmax GRANULARITY 1,
INDEX y_idx y TYPE minmax GRANULARITY 1,
INDEX xy_idx (x,y) TYPE minmax GRANULARITY 1
)
Engine=MergeTree()
ORDER BY key;
INSERT INTO data VALUES (1, 2, 3);
SELECT * FROM data;
SELECT * FROM data SETTINGS ignore_data_skipping_indices=''; -- la consulta producirá el error CANNOT_PARSE_TEXT.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='x_idx'; -- Ok.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='na_idx'; -- Ok.
SELECT * FROM data WHERE x = 1 AND y = 1 SETTINGS ignore_data_skipping_indices='xy_idx',force_data_skipping_indices='xy_idx' ; -- la consulta producirá el error INDEX_NOT_USED, ya que xy_idx está explícitamente ignorado.
SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';
La consulta sin ignorar ningún índice:
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2;
Expression ((Projection + Before ORDER BY))
Filter (WHERE)
ReadFromMergeTree (default.data)
Indexes:
PrimaryKey
Condition: true
Parts: 1/1
Granules: 1/1
Skip
Name: x_idx
Description: minmax GRANULARITY 1
Parts: 0/1
Granules: 0/1
Skip
Name: y_idx
Description: minmax GRANULARITY 1
Parts: 0/0
Granules: 0/0
Skip
Name: xy_idx
Description: minmax GRANULARITY 1
Parts: 0/0
Granules: 0/0
Al ignorar el índice xy_idx:
EXPLAIN indexes = 1 SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';
Expression ((Projection + Before ORDER BY))
Filter (WHERE)
ReadFromMergeTree (default.data)
Indexes:
PrimaryKey
Condition: true
Parts: 1/1
Granules: 1/1
Skip
Name: x_idx
Description: minmax GRANULARITY 1
Parts: 0/1
Granules: 0/1
Skip
Name: y_idx
Description: minmax GRANULARITY 1
Parts: 0/0
Granules: 0/0
Se aplica a las tablas de la familia MergeTree.
ignore_drop_queries_probability
Si está habilitado, el servidor ignorará todas las consultas DROP TABLE con la probabilidad especificada (para los motores Memory y JOIN, sustituirá DROP por TRUNCATE). Se utiliza con fines de prueba
Si está habilitado, FORMAT Null se ignorará en las consultas EXPLAIN y se usará en su lugar el formato de salida predeterminado.
Si está deshabilitado, las consultas EXPLAIN con FORMAT Null no producirán ninguna salida (comportamiento compatible con versiones anteriores).
ignore_materialized_views_with_dropped_target_table
Ignora las vistas materializadas cuya tabla de destino se ha eliminado al enviar a las vistas
ignore_on_cluster_for_replicated_access_entities_queries
Omite la cláusula ON CLUSTER en las consultas de gestión de entidades de acceso replicadas.
ignore_on_cluster_for_replicated_database
Ignora siempre la cláusula ON CLUSTER en las consultas DDL con bases de datos Replicated.
ignore_on_cluster_for_replicated_named_collections_queries
Ignora la cláusula ON CLUSTER en las consultas de gestión de colecciones con nombre replicadas.
ignore_on_cluster_for_replicated_udf_queries
Omite la cláusula ON CLUSTER en las consultas de gestión de UDF replicadas.
Permite escribir consultas SELECT simples sin la palabra clave SELECT al principio, lo que facilita su uso como calculadora; por ejemplo, 1 + 2 se convierte en una consulta válida.
En clickhouse-local está habilitado de forma predeterminada y puede deshabilitarse explícitamente.
implicit_table_at_top_level
Si no está vacía, las consultas sin FROM en el nivel superior leerán de esta tabla en lugar de system.one.
Se usa en clickhouse-local para procesar datos de entrada.
Un usuario puede establecer esta configuración explícitamente, pero no está pensada para ese tipo de uso.
Las subconsultas no se ven afectadas por esta configuración (ni las escalares ni las subconsultas de FROM o IN).
Las sentencias SELECT en el nivel superior de cadenas UNION, INTERSECT y EXCEPT se tratan de forma uniforme y se ven afectadas por esta configuración, independientemente de cómo se agrupen entre paréntesis.
No está especificado cómo afecta esta configuración a las vistas y a las consultas distribuidas.
La configuración acepta un nombre de tabla (en ese caso, la tabla se resuelve en la base de datos actual) o un nombre cualificado con el formato ‘database.table’.
Tanto los nombres de la base de datos como los de la tabla deben ir sin comillas; solo se permiten identificadores simples.
Si está habilitado y aún no se está dentro de una transacción, encapsula la consulta en una transacción completa (begin + commit o rollback)
inject_random_order_for_select_without_order_by
Si está habilitada, inserta ‘ORDER BY rand()’ en las consultas SELECT sin cláusula ORDER BY.
Se aplica solo cuando la profundidad de la subconsulta es 0. Las subconsultas e INSERT INTO … SELECT no se ven afectados.
Si la construcción de nivel superior es UNION, se inserta ‘ORDER BY rand()’ en todos los elementos secundarios de forma independiente.
Solo es útil para pruebas y desarrollo (la ausencia de ORDER BY es una fuente de resultados de consultas no deterministas).
insert_allow_materialized_columns
Si esta configuración está habilitada, permite usar columnas materializadas en INSERT.
Activa o desactiva la deduplicación de bloques de INSERT (para tablas Replicated*).
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
De forma predeterminada, los bloques insertados en tablas replicadas mediante la instrucción INSERT se deduplican (consulte Replicación de datos).
De forma predeterminada, en las tablas replicadas solo se deduplican los 100 bloques más recientes de cada partición (consulte replicated_deduplication_window, replicated_deduplication_window_seconds).
Para las tablas no replicadas, consulte non_replicated_deduplication_window.
insert_deduplication_token
Esta configuración permite que un usuario defina su propia semántica de deduplicación en MergeTree/ReplicatedMergeTree.
Por ejemplo, si proporciona un valor único para esta configuración en cada sentencia INSERT,
el usuario puede evitar que se deduzcan como duplicados los mismos datos insertados.
Valores posibles:
insert_deduplication_token se usa para la deduplicación solo cuando no está vacío.
En las tablas replicadas, de forma predeterminada, solo se deduplican las 100 inserciones más recientes de cada partición (consulte replicated_deduplication_window, replicated_deduplication_window_seconds).
Para las tablas no replicadas, consulte non_replicated_deduplication_window.
insert_deduplication_token funciona a nivel de partición (igual que el checksum de insert_deduplication). Varias particiones pueden tener el mismo insert_deduplication_token.
Ejemplo:
CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);
-- el siguiente insert no se deduplicará porque insert_deduplication_token es diferente
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);
-- el siguiente insert se deduplicará porque insert_deduplication_token
-- es igual a uno de los anteriores
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);
SELECT * FROM test_table
┌─A─┐
│ 1 │
└───┘
┌─A─┐
│ 1 │
└───┘
insert_keeper_fault_injection_probability
Probabilidad aproximada de fallo de una solicitud a Keeper durante la inserción. El valor válido debe estar en el intervalo [0.0f, 1.0f]
insert_keeper_fault_injection_seed
0 - semilla aleatoria; de lo contrario, el valor de la configuración
insert_keeper_max_retries
Esta configuración establece el número máximo de reintentos para las solicitudes a ClickHouse Keeper (o ZooKeeper) durante la inserción en MergeTree replicado. Solo se reintentan las solicitudes a Keeper que fallan debido a un error de red, un timeout de sesión de Keeper o un timeout de solicitud.
Valores posibles:
- Entero positivo.
- 0 — Los reintentos están deshabilitados
Valor predeterminado de Cloud: 20.
Los reintentos de solicitudes a Keeper se realizan tras un cierto timeout. El timeout está controlado por las siguientes configuraciones: insert_keeper_retry_initial_backoff_ms, insert_keeper_retry_max_backoff_ms.
El primer reintento se realiza tras el timeout de insert_keeper_retry_initial_backoff_ms. Los timeouts posteriores se calculan de la siguiente manera:
timeout = min(insert_keeper_retry_max_backoff_ms, latest_timeout * 2)
Por ejemplo, si insert_keeper_retry_initial_backoff_ms=100, insert_keeper_retry_max_backoff_ms=10000 y insert_keeper_max_retries=8, los tiempos de espera serán 100, 200, 400, 800, 1600, 3200, 6400, 10000.
Además de la tolerancia a fallos, los reintentos también buscan ofrecer una mejor experiencia de usuario: permiten evitar que se devuelva un error durante la ejecución de INSERT si Keeper se reinicia, por ejemplo, a causa de una actualización.
insert_keeper_retry_initial_backoff_ms
Tiempo de espera inicial (en milisegundos) para reintentar una solicitud fallida a Keeper durante la ejecución de la consulta INSERT
Valores posibles:
- Entero positivo.
- 0 — Sin tiempo de espera
insert_keeper_retry_max_backoff_ms
Tiempo de espera máximo (en milisegundos) para reintentar una solicitud de Keeper fallida durante la ejecución de una consulta INSERT
Valores posibles:
- Entero positivo.
- 0 — El tiempo de espera máximo no está limitado
Habilita o deshabilita la inserción de valores predeterminados en lugar de NULL en columnas con un tipo de datos no Nullable.
Si el tipo de la columna no es Nullable y esta configuración está deshabilitada, al insertar NULL se produce una excepción. Si el tipo de la columna es Nullable, los valores NULL se insertan tal cual, independientemente de esta configuración.
Esta configuración se aplica a las consultas INSERT … SELECT. Ten en cuenta que las subconsultas SELECT pueden concatenarse con la cláusula UNION ALL.
Valores posibles:
- 0 — Insertar
NULL en una columna no Nullable produce una excepción.
- 1 — Se inserta el valor predeterminado de la columna en lugar de
NULL.
Habilita las escrituras con quorum.
- Si
insert_quorum < 2, las escrituras con quorum están deshabilitadas.
- Si
insert_quorum >= 2, las escrituras con quorum están habilitadas.
- Si
insert_quorum = 'auto', usa la mayoría (number_of_replicas / 2 + 1) como número de quorum.
Escrituras con quorum
INSERT solo se realiza correctamente cuando ClickHouse logra escribir correctamente los datos en insert_quorum réplicas dentro de insert_quorum_timeout. Si, por cualquier motivo, el número de réplicas con escrituras correctas no alcanza insert_quorum, la escritura se considera fallida y ClickHouse eliminará el bloque insertado de todas las réplicas en las que ya se hayan escrito datos.
Cuando insert_quorum_parallel está deshabilitado, todas las réplicas del quorum son consistentes; es decir, contienen datos de todas las consultas INSERT anteriores (la secuencia de INSERT se lineariza). Al leer datos escritos mediante insert_quorum y con insert_quorum_parallel deshabilitado, puedes activar la consistencia secuencial para las consultas SELECT mediante select_sequential_consistency.
ClickHouse genera una excepción:
- Si el número de réplicas disponibles en el momento de la consulta es menor que
insert_quorum.
- Cuando
insert_quorum_parallel está deshabilitado y se intenta escribir datos mientras el bloque anterior aún no se ha insertado en insert_quorum réplicas. Esta situación puede darse si el usuario intenta realizar otra consulta INSERT en la misma tabla antes de que se complete la anterior con insert_quorum.
Véase también:
Habilita o deshabilita el paralelismo para las consultas INSERT con cuórum. Si está habilitado, se pueden enviar consultas INSERT adicionales mientras las consultas anteriores aún no hayan finalizado. Si está deshabilitado, se rechazarán escrituras adicionales en la misma tabla.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Véase también:
Tiempo de espera, en milisegundos, para escribir en un quórum. Si el tiempo de espera ha transcurrido y todavía no se ha realizado ninguna escritura, ClickHouse generará una excepción y el cliente deberá repetir la consulta para escribir el mismo bloque en la misma o en cualquier otra réplica.
Véase también:
Si no es 0, especifica el segmento de la tabla Distributed en el que se insertarán los datos de forma síncrona.
Si el valor de insert_shard_id es incorrecto, el servidor lanzará una excepción.
Para obtener el número de segmentos en requested_cluster, puede consultar la configuración del servidor o usar esta consulta:
SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';
Valores posibles:
- 0 — Desactivado.
- Cualquier número entre
1 y shards_num de la tabla Distributed correspondiente.
Ejemplo
Consulta:
CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;
Resultado:
┌─number─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
│ 3 │
│ 3 │
│ 4 │
│ 4 │
└────────┘
El intervalo, en microsegundos, para comprobar si se ha cancelado la ejecución de la petición y enviar el progreso.
Establece el modo predeterminado de la consulta INTERSECT. Valores posibles: cadena vacía, ‘ALL’, ‘DISTINCT’. Si está vacío, una consulta sin modo generará una excepción.
jemalloc_collect_profile_samples_in_trace_log
Recopila muestras de asignación y liberación de memoria de jemalloc en el registro de trazas.
Habilita el perfilador de jemalloc para la consulta. Jemalloc tomará muestras de las asignaciones y de todas las liberaciones de memoria de las asignaciones muestreadas.
Los perfiles se pueden vaciar con SYSTEM JEMALLOC FLUSH PROFILE para analizarlos.
Las muestras también se pueden almacenar en system.trace_log usando la configuración jemalloc_collect_global_profile_samples_in_trace_log o la configuración de consulta jemalloc_collect_profile_samples_in_trace_log.
Consulta Perfilado de asignaciones
jemalloc_profile_text_collapsed_use_count
Al usar el formato de salida ‘collapsed’ para el perfil de heap de jemalloc, se agrega por número de asignaciones en lugar de por bytes. Cuando es false (predeterminado), cada pila se pondera por bytes activos; cuando es true, por el número de asignaciones activas.
jemalloc_profile_text_output_format
Formato de salida del perfil de heap de jemalloc en la tabla system.jemalloc_profile_text. Puede ser: ‘raw’ (perfil sin procesar), ‘symbolized’ (formato jeprof con símbolos) o ‘collapsed’ (formato FlameGraph).
jemalloc_profile_text_symbolize_with_inline
Si se deben incluir frames inline al simbolizar el perfil del heap de jemalloc. Cuando está habilitada, los frames inline se incluyen, lo que puede ralentizar drásticamente el proceso de simbolización; cuando está deshabilitada, se omiten. Solo afecta a los formatos de salida ‘symbolized’ y ‘collapsed’.
Especifica qué algoritmo de JOIN se usa.
Se pueden especificar varios algoritmos, y se elegirá uno disponible para una consulta concreta según el tipo/la strictness y el motor de tabla.
Posibles valores:
Se usa Grace hash join. Grace hash ofrece una opción de algoritmo para realizar joins complejos con buen rendimiento, limitando al mismo tiempo el uso de memoria.
La primera fase de un grace join lee la tabla derecha y la divide en N buckets según el hash de las columnas clave (inicialmente, N es grace_hash_join_initial_buckets). Esto se hace de forma que cada bucket pueda procesarse de manera independiente. Las filas del primer bucket se añaden a una tabla hash en memoria, mientras que las demás se guardan en disco. Si la tabla hash supera el límite de memoria (por ejemplo, el definido por max_bytes_in_join), se incrementa el número de buckets y se vuelve a asignar el bucket correspondiente a cada fila. Las filas que no pertenezcan al bucket actual se vacían y se reasignan.
Admite INNER/LEFT/RIGHT/FULL ALL/ANY JOIN.
Se usa Hash join algorithm. Es la implementación más genérica: admite todas las combinaciones de tipo y strictness, así como múltiples claves de join combinadas con OR en la sección JOIN ON.
Al usar el algoritmo hash, la parte derecha de JOIN se carga en RAM.
Una variación de hash join que divide los datos en buckets y construye varias tablas hash en lugar de una, de forma concurrente, para acelerar este proceso.
Al usar el algoritmo parallel_hash, la parte derecha de JOIN se carga en RAM.
Una variación del algoritmo sort-merge, donde solo la tabla derecha se ordena por completo.
RIGHT JOIN y FULL JOIN solo se admiten con strictness ALL (SEMI, ANTI, ANY y ASOF no son compatibles).
Al usar el algoritmo partial_merge, ClickHouse ordena los datos y los vuelca a disco. El algoritmo partial_merge en ClickHouse difiere ligeramente de la implementación clásica. Primero, ClickHouse ordena la tabla derecha por las claves de join en bloques y crea un índice min-max para los bloques ordenados. Luego ordena partes de la tabla izquierda por la join key y las une con la tabla derecha. El índice min-max también se usa para omitir bloques innecesarios de la tabla derecha.
El algoritmo direct (también conocido como nested loop) realiza una búsqueda en la tabla derecha usando como claves las filas de la tabla izquierda.
Es compatible con motores especiales como Dictionary, EmbeddedRocksDB y tablas MergeTree.
Para las tablas MergeTree, el algoritmo aplica filtros de join key directamente a la capa de almacenamiento. Esto puede ser más eficiente cuando la clave puede usar el índice de primary key de la tabla para las búsquedas; de lo contrario, realiza escaneos completos de la tabla derecha para cada bloque de la tabla izquierda.
Admite joins INNER y LEFT, y solo claves de join de igualdad de una sola columna, sin otras condiciones.
Cuando se establece en auto, primero se prueba hash join, y el algoritmo cambia dinámicamente a otro si se supera el límite de memoria.
Algoritmo sort-merge con ordenación completa de las tablas antes de realizar el join.
ClickHouse siempre intenta usar partial_merge join si es posible; de lo contrario, usa hash. Obsoleto, igual que partial_merge,hash.
Valor heredado; no lo use.
Igual que direct,hash, es decir, intenta usar direct join y hash join (en este orden).
Cambia el comportamiento de las operaciones JOIN con strictness ANY.
Esta configuración se aplica solo a las operaciones JOIN con tablas del motor Join.
Valores posibles:
- 0 — Si la tabla de la derecha tiene más de una fila coincidente, solo se une la primera encontrada.
- 1 — Si la tabla de la derecha tiene más de una fila coincidente, solo se une la última encontrada.
Véase también:
Establece la estrictez predeterminada para las cláusulas JOIN.
Valores posibles:
ALL — Si la tabla de la derecha tiene varias filas coincidentes, ClickHouse crea un producto cartesiano a partir de las filas coincidentes. Este es el comportamiento normal de JOIN en SQL estándar.
ANY — Si la tabla de la derecha tiene varias filas coincidentes, solo se une la primera que se encuentra. Si la tabla de la derecha tiene solo una fila coincidente, los resultados de ANY y ALL son los mismos.
ASOF — Para unir secuencias con una coincidencia incierta.
Cadena vacía — Si no se especifica ALL o ANY en la consulta, ClickHouse lanza una excepción.
join_on_disk_max_files_to_merge
Limita el número de archivos permitidos para la ordenación paralela en operaciones MergeJoin cuando se ejecutan en disco.
Cuanto mayor sea el valor de la configuración, más RAM se utiliza y menos operaciones de E/S en disco se necesitan.
Posibles valores:
- Cualquier número entero positivo a partir de 2.
join_output_by_rowlist_perkey_rows_threshold
El límite inferior del promedio de filas por clave en la tabla de la derecha para determinar si la salida debe generarse mediante una lista de filas en hash join.
Define qué acción realiza ClickHouse cuando se alcanza alguno de los siguientes límites de join:
Valores posibles:
THROW — ClickHouse genera una excepción e interrumpe la operación.
BREAK — ClickHouse interrumpe la operación y no genera una excepción.
Valor predeterminado: THROW.
Vea también
join_runtime_bloom_filter_bytes
Tamaño en bytes de un filtro de Bloom utilizado como filtro de tiempo de ejecución de JOIN (consulte la configuración enable_join_runtime_filters).
join_runtime_bloom_filter_hash_functions
Número de funciones hash de un bloom filter utilizado como filtro runtime para JOIN (consulte la configuración enable_join_runtime_filters).
join_runtime_bloom_filter_max_ratio_of_set_bits
Si la cantidad de bits activados en un bloom filter en tiempo de ejecución supera esta proporción, el filtro se desactiva por completo para reducir la sobrecarga.
join_runtime_filter_blocks_to_skip_before_reenabling
Número de bloques que se omiten antes de intentar volver a habilitar dinámicamente un filtro de runtime que se había deshabilitado previamente debido a una tasa de filtrado deficiente.
join_runtime_filter_exact_values_limit
Número máximo de elementos del runtime filter que se almacenan tal cual en un conjunto; cuando se supera este umbral, se cambia a bloom filter.
join_runtime_filter_pass_ratio_threshold_for_disabling
Si la proporción entre las filas que pasan el filtro y las filas comprobadas supera este umbral, el filtro de tiempo de ejecución se considera poco eficaz y se desactiva durante los siguientes join_runtime_filter_blocks_to_skip_before_reenabling bloques para reducir la sobrecarga.
join_to_sort_maximum_table_rows
El número máximo de filas de la tabla derecha para determinar si se debe reordenar por clave en un left o inner join.
join_to_sort_minimum_perkey_rows
El límite inferior del promedio de filas por clave en la tabla de la derecha para determinar si se debe volver a ordenar la tabla de la derecha por clave en un left o inner join. Esta configuración garantiza que la optimización no se aplique a claves dispersas de la tabla
Establece el comportamiento de JOIN. Al unir tablas, pueden aparecer celdas vacías. ClickHouse las rellena de forma distinta según esta configuración.
Posibles valores:
- 0 — Las celdas vacías se rellenan con el valor predeterminado del tipo de campo correspondiente.
- 1 —
JOIN se comporta igual que en el SQL estándar. El tipo del campo correspondiente se convierte en Nullable, y las celdas vacías se rellenan con NULL.
joined_block_split_single_row
Permite dividir en fragmentos el resultado de un hash join por las filas correspondientes a una única fila de la tabla izquierda.
Esto puede reducir el uso de memoria en el caso de una fila con muchas coincidencias en la tabla derecha, pero puede aumentar el uso de CPU.
Ten en cuenta que max_joined_block_size_rows != 0 es obligatorio para que esta configuración surta efecto.
max_joined_block_size_bytes, combinado con esta configuración, ayuda a evitar un uso excesivo de memoria en casos de datos sesgados, con algunas filas grandes que tienen muchas coincidencias en la tabla derecha.
joined_subquery_requires_alias
Obliga a que las subconsultas incluidas en JOIN y las funciones de tabla tengan alias para que la calificación de nombres sea correcta.
kafka_disable_num_consumers_limit
Desactiva el límite de kafka_num_consumers que depende del número de núcleos de CPU disponibles.
El tiempo de espera, en milisegundos, para leer mensajes de Kafka antes de reintentar.
Valores posibles:
- Entero positivo.
- 0 — Tiempo de espera infinito.
Véase también:
Aplica comprobaciones adicionales durante las operaciones en KeeperMap. Por ejemplo, lanzar una excepción al insertar una clave que ya existe
Número máximo de reintentos para operaciones generales de Keeper
keeper_retry_initial_backoff_ms
Tiempo de espera del backoff inicial para las operaciones generales de Keeper
keeper_retry_max_backoff_ms
Tiempo máximo de backoff para las operaciones generales de Keeper
least_greatest_legacy_null_behavior
Si está activada, las funciones ‘least’ y ‘greatest’ devuelven NULL si uno de sus argumentos es NULL.
legacy_column_name_of_tuple_literal
Muestra en los nombres de columna todos los nombres de los elementos de los literales Tuple grandes en lugar del hash. Esta configuración existe solo por motivos de compatibilidad. Tiene sentido establecerla en ‘true’ mientras se realiza una actualización gradual del clúster desde una versión anterior a la 21.7 a una posterior.
Modo de consulta de actualización interna que se ejecuta como parte de la eliminación ligera.
Valores posibles:
alter_update - ejecuta la consulta ALTER UPDATE, que crea una mutación pesada.
lightweight_update - ejecuta la actualización ligera si es posible; de lo contrario, ejecuta ALTER UPDATE.
lightweight_update_force - ejecuta la actualización ligera si es posible; de lo contrario, genera una excepción.
Lo mismo que mutations_sync, pero solo controla la ejecución de eliminaciones ligeras.
Valores posibles:
| Valor | Descripción |
|---|
0 | Las mutaciones se ejecutan de forma asíncrona. |
1 | La consulta espera a que las eliminaciones ligeras finalicen en el servidor actual. |
2 | La consulta espera a que las eliminaciones ligeras finalicen en todas las réplicas (si existen). |
3 | La consulta espera solo a las réplicas activas. Solo compatible con SharedMergeTree. Para ReplicatedMergeTree, se comporta igual que mutations_sync = 2. |
Véase también
Valor predeterminado en Cloud: 1.
Establece el número máximo de filas que se pueden obtener del resultado de la consulta. Ajusta el valor establecido por la cláusula LIMIT, de modo que el límite especificado en la consulta no pueda superar el límite establecido por esta opción de configuración.
Posibles valores:
- 0 — El número de filas no está limitado.
- Entero positivo.
Especifica el algoritmo de selección de réplicas utilizado para el procesamiento distribuido de consultas.
ClickHouse admite los siguientes algoritmos de selección de réplicas:
Véase también:
Se cuenta el número de errores de cada réplica. La consulta se envía a la réplica con menos errores y, si hay varias en esa situación, a cualquiera de ellas.
Desventajas: no se tiene en cuenta la proximidad del servidor; si las réplicas tienen datos distintos, también obtendrá datos distintos.
load_balancing = nearest_hostname
Se cuenta el número de errores de cada réplica. Cada 5 minutos, el número de errores se divide entre 2 mediante división entera. Así, el número de errores se calcula para un periodo reciente con suavizado exponencial. Si hay una réplica con el menor número de errores (es decir, si recientemente se produjeron errores en las otras réplicas), la consulta se envía a esa réplica. Si hay varias réplicas con el mismo número mínimo de errores, la consulta se envía a la réplica cuyo hostname más se parezca al hostname del servidor en el archivo de configuración (según el número de caracteres distintos en posiciones idénticas, hasta la longitud mínima de ambos hostnames).
Por ejemplo, example01-01-1 y example01-01-2 difieren en una posición, mientras que example01-01-1 y example01-02-2 difieren en dos posiciones.
Este método puede parecer primitivo, pero no requiere datos externos sobre la topología de la red y no compara direcciones IP, lo cual sería complicado en el caso de nuestras direcciones IPv6.
Así, si hay réplicas equivalentes, se da preferencia a la que tenga el nombre más parecido.
También podemos suponer que, al enviar una consulta al mismo servidor, si no hay fallos, una consulta distribuida también irá a los mismos servidores. Por lo tanto, aunque en las réplicas haya datos distintos, la consulta devolverá prácticamente los mismos resultados.
Distancia de Levenshtein del nombre de host
load_balancing = hostname_levenshtein_distance
Al igual que nearest_hostname, pero compara el hostname según la distancia de Levenshtein. Por ejemplo:
example-clickhouse-0-0 ample-clickhouse-0-0
1
example-clickhouse-0-0 example-clickhouse-1-10
2
example-clickhouse-0-0 example-clickhouse-12-0
3
load_balancing = in_order
Se accede a las réplicas con el mismo número de errores en el mismo orden en que se especifican en la configuración.
Este método es apropiado cuando se sabe exactamente qué réplica es preferible.
load_balancing = first_or_random
Este algoritmo elige la primera réplica del conjunto o una réplica aleatoria si la primera no está disponible. Es eficaz en topologías de replicación cruzada, pero no resulta útil en otras configuraciones.
El algoritmo first_or_random resuelve el problema del algoritmo in_order. Con in_order, si una réplica deja de estar disponible, la siguiente recibe el doble de carga, mientras que las demás réplicas manejan la cantidad habitual de tráfico. Al usar el algoritmo first_or_random, la carga se distribuye uniformemente entre las réplicas que siguen disponibles.
Es posible definir explícitamente cuál es la primera réplica mediante la configuración load_balancing_first_offset. Esto ofrece un mayor control para redistribuir las cargas de trabajo de las consultas entre réplicas.
load_balancing = round_robin
Este algoritmo utiliza una política de round robin entre las réplicas con el mismo número de errores (solo se tienen en cuenta las consultas con la política round_robin).
load_balancing_first_offset
A qué réplica enviar preferentemente una consulta cuando se usa la estrategia de balanceo de carga FIRST_OR_RANDOM.
load_marks_asynchronously
Cargar las marcas de MergeTree de forma asíncrona
Valor predeterminado en Cloud: 1.
local_filesystem_read_method
Método para leer datos del sistema de archivos local; puede ser uno de los siguientes: read, pread, mmap, io_uring, pread_threadpool.
El método ‘io_uring’ es experimental y no funciona con Log, TinyLog, StripeLog, File, Set y Join, ni con otras tablas cuyos archivos permiten anexar datos cuando hay lecturas y escrituras concurrentes.
Si lees varios artículos sobre ‘io_uring’ en Internet, no te dejes impresionar por ellos. No es un método mejor para leer archivos, salvo en el caso de una gran cantidad de solicitudes de IO pequeñas, que no es el caso de ClickHouse. No hay motivos para habilitar ‘io_uring’.
local_filesystem_read_prefetch
Debe usarse la precarga al leer datos del sistema de archivos local.
Define cuántos segundos espera una solicitud de bloqueo antes de fallar.
El tiempo de espera de bloqueo se usa para evitar interbloqueos al ejecutar operaciones de lectura y escritura en tablas. Cuando vence el tiempo de espera y la solicitud de bloqueo falla, el servidor ClickHouse lanza la excepción “Locking attempt timed out! Possible deadlock avoided. Client should retry.” con el código de error DEADLOCK_AVOIDED.
Valores posibles:
- Entero positivo (en segundos).
- 0 — Sin tiempo de espera de bloqueo.
Especifica el valor del campo log_comment de la tabla system.query_log y el texto del comentario para el registro del servidor.
Puede utilizarse para mejorar la legibilidad de los registros del servidor. Además, ayuda a seleccionar las consultas relacionadas con la prueba en system.query_log después de ejecutar clickhouse-test.
Valores posibles:
- Cualquier cadena de longitud no superior a max_query_size. Si se supera
max_query_size, el servidor lanza una excepción.
Ejemplo
Consulta:
SET log_comment = 'log_comment test', log_queries = 1;
SELECT 1;
SYSTEM FLUSH LOGS;
SELECT type, query FROM system.query_log WHERE log_comment = 'log_comment test' AND event_date >= yesterday() ORDER BY event_time DESC LIMIT 2;
Resultado:
┌─type────────┬─query─────┐
│ QueryStart │ SELECT 1; │
│ QueryFinish │ SELECT 1; │
└─────────────┴───────────┘
Permite registrar consultas con formato en la tabla del sistema system.query_log (rellena la columna formatted_query de system.query_log).
Valores posibles:
- 0 — Las consultas con formato no se registran en la tabla del sistema.
- 1 — Las consultas con formato se registran en la tabla del sistema.
Escribe en la tabla system.processors_profile_log el tiempo que el procesador dedicó a la ejecución o a esperar datos.
Véase también:
Registra estadísticas de rendimiento de consultas en query_log, query_thread_log y query_views_log.
Habilita el registro de consultas.
Las consultas enviadas a ClickHouse con esta configuración se registran según las reglas del parámetro de configuración del servidor query_log.
Ejemplo:
log_queries_cut_to_length
Si la longitud de la consulta supera un umbral especificado (en bytes), la consulta se recorta al escribirla en el registro de consultas. También se limita la longitud de la consulta impresa en el registro de texto normal.
log_queries_min_query_duration_ms
Si está habilitado (distinto de cero), no se registrarán las consultas cuya duración sea inferior al valor de esta configuración (puede considerarlo como un long_query_time para MySQL Slow Query Log), lo que básicamente significa que no las encontrará en las siguientes tablas:
system.query_log
system.query_thread_log
Solo se registrarán en el log las consultas con el siguiente tipo:
-
QUERY_FINISH
-
EXCEPTION_WHILE_PROCESSING
-
Tipo: milisegundos
-
Valor predeterminado: 0 (cualquier consulta)
Tipo mínimo que se registrará en query_log.
Valores posibles:
QUERY_START (=1)
QUERY_FINISH (=2)
EXCEPTION_BEFORE_START (=3)
EXCEPTION_WHILE_PROCESSING (=4)
Puede usarse para limitar qué eventos se escribirán en query_log; por ejemplo, si solo le interesan los errores, puede usar EXCEPTION_WHILE_PROCESSING:
log_queries_min_type='EXCEPTION_WHILE_PROCESSING'
Permite que un usuario escriba en las tablas del sistema query_log, query_thread_log y query_views_log solo una muestra de consultas seleccionadas aleatoriamente con la probabilidad especificada. Esto ayuda a reducir la carga cuando hay un gran volumen de consultas por segundo.
Valores posibles:
- 0 — Las consultas no se registran en las tablas del sistema.
- Número de coma flotante positivo en el intervalo [0..1]. Por ejemplo, si el valor de la configuración es
0.5, aproximadamente la mitad de las consultas se registran en las tablas del sistema.
- 1 — Todas las consultas se registran en las tablas del sistema.
Registra la configuración de la consulta en query_log y en el registro de spans de OpenTelemetry.
Configura el registro de los hilos de consulta.
Los hilos de consulta se registran en la tabla system.query_thread_log. Esta configuración solo surte efecto cuando log_queries es true. Los hilos de las consultas ejecutadas por ClickHouse con esta configuración se registran según las reglas del parámetro de configuración del servidor query_thread_log.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Ejemplo
Configura el registro de las vistas de consulta.
Cuando una consulta ejecutada por ClickHouse con este ajuste habilitado tiene vistas asociadas (materializadas o live views), estas se registran en el parámetro de configuración del servidor query_views_log.
Ejemplo:
Permite o restringe el uso del tipo de dato LowCardinality con el formato Native.
Si el uso de LowCardinality está restringido, ClickHouse server convierte las columnas LowCardinality en columnas normales para las consultas SELECT y las columnas normales en columnas LowCardinality para las consultas INSERT.
Esta configuración es necesaria principalmente para clientes de terceros que no admiten el tipo de dato LowCardinality.
Valores posibles:
- 1 — El uso de
LowCardinality no está restringido.
- 0 — El uso de
LowCardinality está restringido.
low_cardinality_max_dictionary_size
Establece el tamaño máximo, en filas, de un diccionario global compartido para el tipo de datos LowCardinality que puede escribirse en el sistema de archivos de almacenamiento. Esta configuración evita problemas de RAM en caso de que el diccionario crezca sin límite. ClickHouse escribe por el método habitual todos los datos que no pueden codificarse debido a la limitación del tamaño máximo del diccionario.
Valores posibles:
- Cualquier entero positivo.
low_cardinality_use_single_dictionary_for_part
Activa o desactiva el uso de un único diccionario para la parte de datos.
De forma predeterminada, el servidor de ClickHouse supervisa el tamaño de los diccionarios y, si un diccionario supera el límite, el servidor comienza a escribir el siguiente. Para impedir la creación de varios diccionarios, establezca low_cardinality_use_single_dictionary_for_part = 1.
Valores posibles:
- 1 — Se prohíbe crear varios diccionarios para la parte de datos.
- 0 — No se prohíbe crear varios diccionarios para la parte de datos.
low_priority_query_wait_time_ms
Cuando se utiliza el mecanismo de priorización de consultas (consulte la configuración priority), las consultas de baja prioridad esperan a que terminen las consultas de mayor prioridad. Esta configuración especifica el tiempo de espera.
Crea el plan de consulta distribuida.
materialize_skip_indexes_on_insert
Indica si las operaciones INSERT crean y almacenan índices de salto. Si está deshabilitado, los índices de salto solo se crearán y almacenarán durante las fusiones o mediante MATERIALIZE INDEX explícito.
Véase también exclude_materialize_skip_indexes_on_insert.
materialize_statistics_on_insert
Indica si los INSERT generan e insertan estadísticas. Si está desactivado, las estadísticas se crearán y almacenarán durante los merges o mediante MATERIALIZE STATISTICS explícito
materialize_ttl_after_modify
Aplica TTL a los datos antiguos después de la consulta ALTER MODIFY TTL
materialized_views_ignore_errors
Permite ignorar los errores de MATERIALIZED VIEW y enviar el bloque original a la tabla independientemente de las MV
materialized_views_squash_parallel_inserts
Combina las inserciones de una única consulta INSERT en la tabla de destino de las vistas materializadas a partir de inserciones paralelas para reducir la cantidad de partes generadas.
Si se establece en false y parallel_view_processing está habilitado, la consulta INSERT generará una parte en la tabla de destino por cada max_insert_thread.
Número máximo de análisis que realiza el intérprete.
La profundidad máxima de anidamiento del árbol sintáctico de una consulta. Si se supera, se lanza una excepción.
En este momento, no se comprueba durante el análisis sintáctico, sino solo después de analizar la consulta.
Esto significa que durante el análisis sintáctico se puede crear un árbol sintáctico demasiado profundo,
pero la consulta fallará.
El número máximo de elementos en el árbol sintáctico de una consulta. Si se supera, se lanza una excepción.
Actualmente, no se comprueba durante el análisis, sino solo después de analizar la consulta.
Esto significa que durante el análisis puede crearse un árbol sintáctico demasiado profundo,
pero la consulta fallará.
El límite de la cantidad de series creadas por la función generateSerialID.
Como cada serie representa un nodo en Keeper, se recomienda no tener más de un par de millones.
La velocidad máxima de lectura, en bytes por segundo, para una copia de seguridad concreta en el server. Cero significa que no hay límite.
En ClickHouse, los datos se procesan en bloques, que son conjuntos de partes de columnas. Los ciclos internos de procesamiento de un solo bloque son eficientes, pero procesar cada bloque conlleva costos perceptibles.
La configuración max_block_size indica el número máximo recomendado de filas que se deben incluir en un solo bloque al cargar datos desde tablas. No siempre se cargan de la tabla bloques del tamaño de max_block_size: si ClickHouse determina que es necesario recuperar menos datos, se procesa un bloque más pequeño.
El tamaño del bloque no debe ser demasiado pequeño, para evitar costos perceptibles al procesar cada bloque. Tampoco debe ser demasiado grande, para garantizar que las consultas con una cláusula LIMIT se ejecuten rápidamente después de procesar el primer bloque. Al configurar max_block_size, el objetivo debe ser evitar consumir demasiada memoria al extraer una gran cantidad de columnas en varios hilos y preservar al menos cierta localidad de caché.
max_bytes_before_external_group_by
Valor predeterminado de Cloud: la mitad de la memoria por réplica.
Habilita o deshabilita la ejecución de cláusulas GROUP BY en memoria externa.
(Consulte GROUP BY en memoria externa)
Valores posibles:
- Volumen máximo de RAM (en bytes) que puede usar una sola operación GROUP BY.
0 — GROUP BY en memoria externa deshabilitado.
Si el uso de memoria durante las operaciones GROUP BY supera este umbral en bytes,
active el modo de ‘agregación externa’ (volcado de datos a disco).El valor recomendado es la mitad de la memoria disponible del sistema.
max_bytes_before_external_join
Si se establece en un valor distinto de cero y join_algorithm es hash, parallel_hash, default o auto, el hash join se convertirá automáticamente en grace hash join para permitir el volcado a disco cuando los datos del lado derecho superen esta cantidad de bytes. Cuando se establece en 0 (valor predeterminado), este umbral absoluto de bytes se desactiva, pero el volcado automático aún puede producirse mediante max_bytes_ratio_before_external_join (cuyo valor predeterminado es 0.5); establezca ambos en 0 para desactivar por completo el volcado automático. Esto impide la optimización de lectura en orden mediante join.
max_bytes_before_external_sort
Valor predeterminado de Cloud: la mitad de la memoria por réplica.
Habilita o deshabilita la ejecución de cláusulas ORDER BY en memoria externa. Consulte Detalles de implementación de ORDER BY
Si el uso de memoria durante una operación ORDER BY supera este umbral en bytes, se activa el modo de «ordenación externa» (volcado de datos a disco).
Valores posibles:
- Volumen máximo de RAM (en bytes) que puede usar una única operación ORDER BY.
El valor recomendado es la mitad de la memoria del sistema disponible
0 — ORDER BY en memoria externa desactivado.
max_bytes_before_remerge_sort
En el caso de ORDER BY con LIMIT, cuando el uso de memoria supera el umbral especificado, se realizan pasos adicionales de fusión de bloques antes de la fusión final para conservar solo las primeras filas de LIMIT.
Número máximo de bytes del conjunto usado en la optimización lazy de FINAL. Si se supera, se recurre al FINAL normal.
La cantidad máxima de bytes del estado (en bytes sin comprimir) en memoria que
utiliza una tabla hash al usar DISTINCT.
El tamaño máximo, en número de bytes, de la tabla hash utilizada para unir tablas.
Esta configuración se aplica a las operaciones SELECT … JOIN
y al Join table engine.
Si la consulta contiene joins, ClickHouse comprueba esta configuración para cada resultado intermedio.
Cuando se alcanza el límite, ClickHouse puede realizar distintas acciones. Use
la configuración join_overflow_mode para elegir la acción.
Valores posibles:
- Entero positivo.
- 0 — El control de memoria está desactivado.
El número máximo de bytes (de datos sin comprimir) utilizado por un conjunto en la cláusula IN
creado a partir de una subconsulta.
max_bytes_ratio_before_external_group_by
La proporción de la memoria disponible que puede usarse para GROUP BY. Una vez alcanzado este valor,
se utiliza memoria externa para la agregación.
Por ejemplo, si se establece en 0.6, GROUP BY permitirá usar el 60% de la memoria disponible
(para servidor/usuario/fusiones) al inicio de la ejecución; a partir de ese momento,
comenzará a usar agregación externa.
max_bytes_ratio_before_external_join
La proporción de memoria disponible permitida para JOIN. Una vez alcanzada, el hash join se convertirá en grace hash join para volcar al disco los datos del lado derecho.
Por ejemplo, si se establece en 0.6, JOIN permitirá usar el 60% de la memoria disponible (para server/user/merges) para la hash table del lado derecho al comienzo de la ejecución; después de eso, comenzará el volcado a disco.
Si se establecen tanto max_bytes_before_external_join como max_bytes_ratio_before_external_join, se utiliza el umbral resultante menor. Si la proporción es 0, solo se aplica la configuración absoluta.
Solo tiene efecto cuando join_algorithm es hash, parallel_hash, default o auto y hay una ruta de datos temporal configurada.
max_bytes_ratio_before_external_sort
La proporción de memoria disponible que puede usar ORDER BY. Una vez alcanzado este valor, se utiliza la ordenación externa.
Por ejemplo, si se establece en 0.6, ORDER BY permitirá usar el 60% de la memoria disponible (para server/user/merges) al inicio de la ejecución; después, empezará a usar la ordenación externa.
Tenga en cuenta que max_bytes_before_external_sort sigue respetándose; el volcado a disco solo se realizará si el bloque de ordenación es mayor que max_bytes_before_external_sort.
La cantidad máxima de bytes (de datos sin comprimir) que se pueden leer de una tabla al ejecutar una consulta.
La restricción se comprueba para cada fragmento de datos procesado, se aplica solo a la
expresión de tabla más interna y, al leer desde un servidor remoto, solo se comprueba en
el servidor remoto.
La cantidad máxima de bytes (de datos sin comprimir) que se puede leer desde una
tabla local en un nodo hoja al ejecutar una consulta distribuida. Aunque las consultas distribuidas
pueden emitir varias subconsultas a cada segmento (hoja), este límite
solo se comprobará en la fase de lectura en los nodos hoja y se ignorará en la
fase de fusión de resultados en el nodo raíz.
Por ejemplo, un clúster consta de 2 segmentos y cada segmento contiene una tabla con
100 bytes de datos. Una consulta distribuida que deba leer todos los datos
de ambas tablas con la configuración max_bytes_to_read=150 fallará, ya que en total
serán 200 bytes. Una consulta con max_bytes_to_read_leaf=150 se ejecutará correctamente, ya que
los nodos hoja leerán como máximo 100 bytes.
La restricción se comprueba para cada fragmento de datos procesado.
Esta configuración es inestable con prefer_localhost_replica=1.
El número máximo de bytes antes de ordenar. Si para la operación ORDER BY
deben procesarse más bytes sin comprimir que la cantidad especificada, el comportamiento
lo determinará sort_overflow_mode, que de forma predeterminada está establecido en throw.
El número máximo de bytes (datos sin comprimir) que pueden pasarse a un
servidor remoto o guardarse en una tabla temporal cuando se ejecuta la sección GLOBAL IN/JOIN.
El número máximo de columnas que se pueden leer de una tabla en una sola consulta.
Si una consulta requiere leer un número de columnas superior al especificado, se
genera una excepción.
Esta configuración es útil para evitar consultas demasiado complejas.
El valor 0 significa que no hay límite.
El tamaño máximo de los bloques de datos sin comprimir antes de comprimirlos para escribirlos en una tabla. El valor predeterminado es 1.048.576 (1 MiB). Especificar un tamaño de bloque menor suele dar como resultado un ratio de compresión ligeramente inferior; la velocidad de compresión y descompresión aumenta ligeramente debido a la localidad de la caché, y se reduce el consumo de memoria.
Esta es una configuración de nivel experto, y no debería cambiarla si está empezando con ClickHouse.
No confunda los bloques de compresión (un fragmento de memoria compuesto por bytes) con los bloques de procesamiento de consultas (un conjunto de filas de una tabla).
max_concurrent_queries_for_all_users
Lanza una excepción si el valor de esta configuración es menor o igual que el número actual de consultas que se procesan simultáneamente.
Ejemplo: max_concurrent_queries_for_all_users se puede establecer en 99 para todos los usuarios, y el administrador de la base de datos puede establecerlo en 100 para sí mismo a fin de ejecutar consultas de investigación incluso cuando el servidor está sobrecargado.
Modificar la configuración para una consulta o un usuario no afecta a las demás consultas.
Valores posibles:
- Entero positivo.
- 0 — Sin límite.
Ejemplo
<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>
Véase también
Valor predeterminado en Cloud: 1000.
max_concurrent_queries_for_user
El número máximo de consultas que se pueden procesar simultáneamente por usuario.
Valores posibles:
- Entero positivo.
- 0 — Sin límite.
Ejemplo
<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>
Número máximo de instantáneas de Paimon que se pueden consumir en cada lectura incremental. 0 significa que no hay límite.
max_distributed_connections
El número máximo de conexiones simultáneas con servidores remotos para el procesamiento distribuido de una única consulta sobre una única tabla Distributed. Recomendamos establecer un valor no inferior al número de servidores del clúster.
Los siguientes parámetros solo se usan al crear tablas Distributed (y al iniciar un servidor), por lo que no tiene sentido cambiarlos en tiempo de ejecución.
Limita la profundidad máxima de las consultas recursivas para las tablas Distributed.
Si se supera este valor, el servidor lanza una excepción.
Valores posibles:
- Entero positivo.
- 0 — Profundidad ilimitada.
El tamaño máximo del búfer para la descarga en paralelo (p. ej., para URL engine) en cada thread.
El número máximo de hilos para la descarga de datos (p. ej., para URL engine).
max_estimated_execution_time
Tiempo máximo estimado de ejecución de la consulta, en segundos. Se comprueba en cada bloque de datos
cuando vence timeout_before_checking_execution_speed.
El número máximo de filas procesadas por segundo. Se comprueba en cada bloque de datos cuando
timeout_before_checking_execution_speed
vence. Si la velocidad de ejecución es demasiado alta, se reducirá.
max_execution_speed_bytes
El número máximo de bytes de ejecución por segundo. Se comprueba en cada bloque de datos cuando
timeout_before_checking_execution_speed
expira. Si la velocidad de ejecución es alta, se reducirá.
El tiempo máximo de ejecución de la consulta, en segundos.
El parámetro max_execution_time puede ser algo difícil de entender.
Funciona a partir de una interpolación relativa a la velocidad actual de ejecución de la consulta
(este comportamiento está controlado por timeout_before_checking_execution_speed).
ClickHouse interrumpirá una consulta si el tiempo de ejecución estimado supera el
max_execution_time especificado. De forma predeterminada, timeout_before_checking_execution_speed
está establecido en 10 segundos. Esto significa que, tras 10 segundos de ejecución de la consulta, ClickHouse
comenzará a estimar el tiempo total de ejecución. Si, por ejemplo, max_execution_time
está establecido en 3600 segundos (1 hora), ClickHouse finalizará la consulta si el tiempo estimado
supera este límite de 3600 segundos. Si establece timeout_before_checking_execution_speed
en 0, ClickHouse usará el tiempo de reloj como base para max_execution_time.
Si el tiempo de ejecución de la consulta supera el número de segundos especificado, el comportamiento
vendrá determinado por timeout_overflow_mode, que de forma predeterminada está establecido en throw.
El tiempo de espera se comprueba y la consulta solo puede detenerse en puntos determinados durante el procesamiento de datos.
Actualmente no puede detenerse durante la fusión de estados de agregación ni durante el análisis de la consulta,
y el tiempo real de ejecución será mayor que el valor de esta configuración.
Semánticamente es similar a max_execution_time, pero solo
se aplica a los nodos hoja en consultas distribuidas o remotas.
Por ejemplo, si queremos limitar a 10s el tiempo de ejecución en un nodo hoja, pero
no establecer ningún límite en el nodo inicial, en lugar de incluir max_execution_time en la
configuración de la subconsulta anidada:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));
Podemos usar max_execution_time_leaf como parámetro de configuración de la consulta:
SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;
max_expanded_ast_elements
Tamaño máximo del árbol de sintaxis de la consulta, medido en número de nodos, tras expandir los alias y el asterisco.
max_fetch_partition_retries_count
Número de reintentos al obtener una partición desde otro host.
Establece el número máximo de hilos paralelos para la fase de lectura de datos de la consulta SELECT con el modificador FINAL.
Valores posibles:
- Entero positivo.
- 0 o 1 — Deshabilitado. Las consultas
SELECT se ejecutan en un solo hilo.
Número máximo de saltos de redirección HTTP GET permitidos. Garantiza medidas de seguridad adicionales para evitar que un servidor malicioso redirija sus solicitudes a servicios inesperados.\n\nEsto ocurre cuando un servidor externo redirige a otra dirección, pero esa dirección parece pertenecer a la infraestructura interna de la empresa y, al enviar una solicitud HTTP a un servidor interno, podría solicitar una API interna desde la red interna, eludir la autenticación o incluso consultar otros servicios, como Redis o Memcached. Cuando no tiene una infraestructura interna (incluido algo que se esté ejecutando en su localhost), o si confía en el servidor, es seguro permitir redirecciones. Sin embargo, tenga en cuenta que, si la URL usa HTTP en lugar de HTTPS, tendrá que confiar no solo en el servidor remoto, sino también en su ISP y en cada una de las redes intermedias.
Valor predeterminado de Cloud: 10.
max_hyperscan_regexp_length
Define la longitud máxima de cada expresión regular en las funciones hyperscan multi-match.
Valores posibles:
- Entero positivo.
- 0 - La longitud no está limitada.
Ejemplo
Consulta:
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 3;
Resultado:
┌─multiMatchAny('abcd', ['ab', 'bcd', 'c', 'd'])─┐
│ 1 │
└────────────────────────────────────────────────┘
Consulta:
SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 2;
Resultado:
Exception: Regexp length too large.
Véase también
max_hyperscan_regexp_total_length
Establece la longitud total máxima de todas las expresiones regulares en cada función hyperscan multi-match.
Valores posibles:
- Entero positivo.
- 0: la longitud no está limitada.
Ejemplo
Consulta:
SELECT multiMatchAny('abcd', ['a','b','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
Resultado:
┌─multiMatchAny('abcd', ['a', 'b', 'c', 'd'])─┐
│ 1 │
└─────────────────────────────────────────────┘
Consulta:
SELECT multiMatchAny('abcd', ['ab','bc','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;
Resultado:
Exception: Total regexp lengths too large.
Véase también
Alias: max_insert_block_size_rows
El tamaño máximo de los bloques (medido en número de filas) que se forman para insertar en una tabla.
Esta configuración controla la formación de bloques en dos contextos:
-
Análisis de formatos: Cuando el servidor analiza formatos de entrada basados en filas (CSV, TSV, JSONEachRow, etc.) desde cualquier interfaz (HTTP, clickhouse-client con datos en línea, gRPC, PostgreSQL wire protocol), los bloques se emiten cuando:
- Se alcanzan tanto min_insert_block_size_rows AND min_insert_block_size_bytes, OR
- Se alcanza cualquiera de max_insert_block_size_rows OR max_insert_block_size_bytes
Nota: Al usar clickhouse-client o clickhouse-local para leer desde un archivo, el propio cliente analiza los datos y esta configuración se aplica del lado del cliente.
-
Operaciones INSERT: Durante las consultas INSERT y cuando los datos fluyen a través de vistas materializadas, el comportamiento de esta configuración depende de
use_strict_insert_block_limits:
-
Cuando está habilitado: Los bloques se emiten cuando:
- Umbrales mínimos (AND): Se alcanzan tanto min_insert_block_size_rows AND min_insert_block_size_bytes
- Umbrales máximos (OR): Se alcanza cualquiera de max_insert_block_size_rows OR max_insert_block_size_bytes
-
Cuando está deshabilitado: Los bloques se emiten cuando se alcanza min_insert_block_size_rows OR min_insert_block_size_bytes. Los ajustes max_insert_block_size no se aplican.
Valores posibles:
max_insert_block_size_bytes
El tamaño máximo de los bloques (en bytes) que se deben formar para insertar en una tabla.
Esta configuración funciona junto con max_insert_block_size_rows y controla la formación de bloques en el mismo contexto. Consulte max_insert_block_size_rows para obtener información detallada sobre cuándo y cómo se aplican estas configuraciones.
Valores posibles:
- Entero positivo.
- 0 — la configuración no interviene en la formación de bloques.
max_insert_delayed_streams_for_parallel_write
El número máximo de streams (columnas) para retrasar el volcado final de la parte. Valor predeterminado: automático (100 si el almacenamiento subyacente admite escritura en paralelo, por ejemplo, S3, y deshabilitado en caso contrario)
Valor predeterminado de Cloud: 50.
El número máximo de hilos para ejecutar la consulta INSERT SELECT.
Valores posibles:
- 0 (o 1):
INSERT SELECT no se ejecuta en paralelo.
- Entero positivo. Mayor que 1.
Valor predeterminado en Cloud:
1 para nodos con 8 GiB de memoria
2 para nodos con 16 GiB de memoria
4 para nodos más grandes
INSERT SELECT en paralelo solo surte efecto si la parte SELECT se ejecuta en paralelo; consulta la configuración max_threads.
Los valores más altos darán lugar a un mayor uso de memoria.
max_insert_threads_min_free_memory_per_thread
Igual que max_threads_min_free_memory_per_thread, pero aplicado a max_insert_threads en vez de a max_threads. El valor predeterminado es mayor porque las canalizaciones de inserción suelen mantener búferes por hilo más grandes (partes de MergeTree, bloques de compresión) que las canalizaciones de lectura.
Si la cantidad de memoria libre es inferior a max_insert_threads multiplicado por este valor, max_insert_threads se reduce para ajustarse, hasta un mínimo de 1.
Establézcalo en 0 para desactivar este límite.
max_joined_block_size_bytes
Tamaño máximo del bloque, en bytes, para el resultado de JOIN (si el algoritmo de JOIN lo admite). 0 significa ilimitado.
max_joined_block_size_rows
Tamaño máximo del bloque para el resultado del JOIN (si el algoritmo de JOIN lo admite). 0 significa que no hay límite.
max_limit_for_vector_search_queries
Las consultas SELECT con un LIMIT superior a este ajuste no pueden usar índices de similitud vectorial. Ayuda a evitar desbordamientos de memoria en los índices de similitud vectorial.
La velocidad máxima de lectura local en bytes por segundo.
max_local_write_bandwidth
La velocidad máxima de escritura local en bytes por segundo.
Valor predeterminado de Cloud: depende de la cantidad de RAM en la réplica.
La cantidad máxima de RAM que se puede usar para ejecutar una consulta en un único servidor.
Un valor de 0 significa que no hay límite.
Esta configuración no tiene en cuenta la cantidad de memoria disponible ni la cantidad total
de memoria de la máquina. La restricción se aplica a una única consulta dentro de un
único servidor.
Puede usar SHOW PROCESSLIST para ver el consumo actual de memoria de cada consulta.
El consumo máximo de memoria se registra para cada consulta y se escribe en el log.
El uso de memoria no se rastrea por completo para los estados de las siguientes funciones de agregación
con argumentos String y Array:
min
max
any
anyLast
argMin
argMax
El consumo de memoria también está restringido por los parámetros max_memory_usage_for_user
y max_server_memory_usage.
max_memory_usage_for_user
La cantidad máxima de RAM que se puede usar para ejecutar las consultas de un usuario en un solo servidor. Cero significa sin límite.
De forma predeterminada, la cantidad no está restringida (max_memory_usage_for_user = 0).
Véase también la descripción de max_memory_usage.
Por ejemplo, si desea establecer max_memory_usage_for_user en 1000 bytes para un usuario llamado clickhouse_read, puede usar la instrucción
ALTER USER clickhouse_read SETTINGS max_memory_usage_for_user = 1000;
Puedes verificar que ha funcionado cerrando la sesión en tu cliente, volviendo a iniciarla y usando después la función getSetting:
SELECT getSetting('max_memory_usage_for_user');
Limita la velocidad del intercambio de datos por la red en bytes por segundo. Esta configuración se aplica a cada consulta.
Valores posibles:
- Entero positivo.
- 0 — El control del ancho de banda está deshabilitado.
max_network_bandwidth_for_all_users
Limita la velocidad a la que se intercambian los datos a través de la red, en bytes por segundo. Esta configuración se aplica a todas las consultas que se ejecutan de forma concurrente en el servidor.
Valores posibles:
- Entero positivo.
- 0 — El control de la velocidad de transferencia de datos está deshabilitado.
max_network_bandwidth_for_user
Limita la velocidad del intercambio de datos por la red en bytes por segundo. Esta configuración se aplica a todas las consultas ejecutadas de forma concurrente por un mismo usuario.
Valores posibles:
- Entero positivo.
- 0 — El control de la velocidad de transferencia de datos está deshabilitado.
Limita el volumen de datos (en bytes) que se recibe o transmite por la red al ejecutar una consulta. Esta configuración se aplica a cada consulta de forma individual.
Valores posibles:
- Entero positivo.
- 0 — El control del volumen de datos está desactivado.
max_number_of_partitions_for_independent_aggregation
Número máximo de particiones de la tabla para aplicar la optimización
max_os_cpu_wait_time_ratio_to_throw
Relación máxima entre los tiempos de espera de la CPU del SO (métrica OSCPUWaitMicroseconds) y de actividad (métrica OSCPUVirtualTimeMicroseconds) a partir de la cual se considera rechazar consultas. Se utiliza interpolación lineal entre la relación mínima y la máxima para calcular la probabilidad; en este punto, la probabilidad es 1.
El número máximo de réplicas para cada segmento al ejecutar una consulta.
Valores posibles:
Información adicional
Esta opción producirá resultados diferentes según la configuración utilizada.
Procesamiento en paralelo con la clave SAMPLE
Una consulta puede procesarse más rápido si se ejecuta en varios servidores en paralelo. Sin embargo, el rendimiento de la consulta puede empeorar en los siguientes casos:
- La posición de la clave de muestreo dentro de la clave de partición no permite realizar lecturas por rango de forma eficiente.
- Añadir una clave de muestreo a la tabla hace que el filtrado por otras columnas sea menos eficiente.
- La clave de muestreo es una expresión cuyo cálculo resulta costoso.
- La distribución de la latencia del clúster tiene una cola larga, por lo que consultar más servidores aumenta la latencia total de la consulta.
Esta configuración es útil para cualquier tabla replicada.
Número máximo de retrocesos del analizador sintáctico (cuántas veces intenta distintas alternativas en el proceso de análisis sintáctico por descenso recursivo).
Limita la profundidad máxima de recursión del analizador sintáctico descendente recursivo. Permite controlar el tamaño de la pila.
Valores posibles:
- Entero positivo.
- 0 — La profundidad de recursión es ilimitada.
El número máximo de hilos para analizar datos en formatos de entrada que admiten el análisis en paralelo. De forma predeterminada, se calcula automáticamente.
max_partition_size_to_drop
Restricción para eliminar particiones en tiempo de consulta. El valor 0 significa que se pueden eliminar particiones sin ninguna restricción.
Valor predeterminado de Cloud: 1 TB.
max_partitions_per_insert_block
Limita el número máximo de particiones en un único block insertado
y se lanza una excepción si el block contiene demasiadas particiones.
- Entero positivo.
0 — Número ilimitado de particiones.
Detalles
Al insertar datos, ClickHouse calcula el número de particiones en el
block insertado. Si el número de particiones es mayor que
max_partitions_per_insert_block, ClickHouse registra una advertencia o lanza una
excepción según throw_on_max_partitions_per_insert_block. Las excepciones tienen
el siguiente texto:
“Demasiadas particiones para un único bloque INSERT (partitions_count particiones; el límite es ” + toString(max_partitions) + ”).
El límite está controlado por la configuración ‘max_partitions_per_insert_block’.
Un gran número de particiones es un error conceptual frecuente. Esto provocará
un grave impacto negativo en el rendimiento, incluido un inicio lento del servidor, consultas INSERT lentas
y consultas SELECT lentas. El número total recomendado de particiones para una tabla es
inferior a 1000..10000. Tenga en cuenta que la partición no está pensada para acelerar
las consultas SELECT (la clave ORDER BY es suficiente para que las consultas por rango sean rápidas).
Las particiones están pensadas para la manipulación de datos (DROP PARTITION, etc.).”
Esta configuración es un umbral de seguridad porque usar un gran número de particiones es un error conceptual frecuente.
Limita el número máximo de particiones a las que se puede acceder en una sola consulta.
El valor de configuración especificado al crear la tabla puede sobrescribirse mediante una configuración a nivel de consulta.
Valores posibles:
- Entero positivo
-1 - ilimitado (predeterminado)
También puede especificar la configuración de MergeTree max_partitions_to_read en la configuración de la tabla.
Limita el número de partes que se pueden mover en una sola consulta. Cero significa que no hay límite.
max_projection_rows_to_use_projection_index
Si el número de filas que se leerán del índice de proyección es inferior o igual a este umbral, ClickHouse intentará aplicar el índice de proyección durante la ejecución de la consulta.
El número máximo de bytes de la cadena de consulta que analiza el parser SQL.
Los datos de la cláusula VALUES de las consultas INSERT se procesan mediante un parser de flujo independiente (que consume O(1) de RAM) y no se ven afectados por esta restricción.
max_query_size no puede establecerse dentro de una consulta SQL (por ejemplo, SELECT now() SETTINGS max_query_size=10000) porque ClickHouse necesita asignar un búfer para analizar la consulta, y el tamaño de este búfer lo determina la configuración max_query_size, que debe configurarse antes de ejecutar la consulta.
max_rand_distribution_parameter
Valor máximo de los parámetros de forma de las distribuciones en funciones de distribución aleatoria como randChiSquared, randStudentT y randFisherF. Esto evita tiempos de cálculo excesivamente largos con valores de parámetros extremos.
max_rand_distribution_trials
Número máximo de ensayos permitidos para funciones de distribución aleatoria como randBinomial y randNegativeBinomial. Esto evita tiempos de cálculo extremadamente largos cuando el número de ensayos es elevado.
El tamaño máximo del búfer de lectura desde el sistema de archivos.
max_read_buffer_size_local_fs
El tamaño máximo del búfer de lectura del sistema de archivos local. Si se establece en 0, se utilizará max_read_buffer_size.
max_read_buffer_size_remote_fs
El tamaño máximo del búfer de lectura desde un sistema de archivos remoto. Si se establece en 0, se usará max_read_buffer_size.
max_recursive_cte_evaluation_depth
Límite máximo de la profundidad de evaluación de las CTE recursivas
max_remote_read_network_bandwidth
La velocidad máxima de intercambio de datos a través de la red, en bytes por segundo, para la lectura.
max_remote_write_network_bandwidth
La velocidad máxima de intercambio de datos a través de la red, en bytes por segundo, para la escritura.
max_replica_delay_for_distributed_queries
Desactiva las réplicas con retraso para las consultas distribuidas. Consulte Replication.
Establece el tiempo en segundos. Si el retraso de una réplica es mayor o igual que el valor establecido, esa réplica no se utiliza.
Valores posibles:
- Entero positivo.
- 0 — No se comprueba el retraso de las réplicas.
Para evitar el uso de cualquier réplica con un retraso distinto de cero, establezca este parámetro en 1.
Se utiliza al ejecutar SELECT desde una tabla distribuida que apunta a tablas replicadas.
Limita el tamaño del resultado en bytes (sin comprimir). La consulta se detendrá después de procesar un bloque de datos si se alcanza el umbral,
pero no recortará el último bloque del resultado; por lo tanto, el tamaño del resultado puede ser mayor que el umbral.
Consideraciones
Para este umbral, se tiene en cuenta el tamaño del resultado en memoria.
Incluso si el tamaño del resultado es pequeño, puede hacer referencia a estructuras de datos más grandes en memoria,
como los diccionarios de columnas LowCardinality y las Arenas de columnas AggregateFunction,
por lo que el umbral puede superarse a pesar del pequeño tamaño del resultado.
Este ajuste es de un nivel bastante bajo y debe usarse con precaución
Valor predeterminado de Cloud: 0.
Limita el número de filas del resultado. También se comprueba en las subconsultas y en servidores remotos al ejecutar partes de una consulta distribuida.
No se aplica ningún límite cuando el valor es 0.
La consulta se detendrá después de procesar un bloque de datos si se alcanza el umbral, pero
no recortará el último bloque del resultado, por lo que el tamaño del resultado puede ser
mayor que el umbral.
max_reverse_dictionary_lookup_cache_size_bytes
Tamaño máximo en bytes de la caché de búsqueda inversa en diccionarios por consulta utilizada por la función dictGetKeys. La caché almacena tuplas de claves serializadas por valor de atributo para evitar volver a recorrer el diccionario dentro de la misma consulta. Cuando se alcanza el límite, las entradas se expulsan mediante LRU. Establezca 0 para desactivar la caché.
Número máximo de filas del conjunto para la optimización lazy FINAL. Si se supera, se recurre a FINAL normal.
El número máximo de filas distintas al usar DISTINCT.
Limita el número de filas de la tabla hash que se utiliza al combinar tablas.
Esta configuración se aplica a las operaciones SELECT … JOIN
y al motor de tabla Join.
Si una consulta contiene varios JOIN, ClickHouse comprueba esta configuración para cada resultado intermedio.
Cuando se alcanza el límite, ClickHouse puede seguir distintos cursos de acción. Use la
configuración join_overflow_mode para elegir la acción.
Valores posibles:
- Entero positivo.
0 — Número ilimitado de filas.
El número máximo de filas de un conjunto de datos en la cláusula IN creado a partir de una subconsulta.
max_rows_in_set_to_optimize_join
Tamaño máximo del conjunto usado para filtrar las tablas que se van a unir mediante los conjuntos de filas de cada una antes de realizar el join.
Valores posibles:
- 0 — Desactivar.
- Cualquier entero positivo.
El número máximo de claves únicas recibidas de la aggregación. Esta configuración permite
limitar el consumo de memoria durante la aggregación.
Si la aggregación durante GROUP BY genera más del número especificado de
filas (claves únicas de GROUP BY), el comportamiento vendrá determinado por
‘group_by_overflow_mode’, que de forma predeterminada es throw, aunque también puede cambiarse
a un modo aproximado de GROUP BY.
El número máximo de filas que se pueden leer desde una tabla al ejecutar una consulta.
La restricción se comprueba para cada fragmento de datos procesado, se aplica solo a la
expresión de tabla más profunda y, al leer desde un servidor remoto, se comprueba solo en
el servidor remoto.
El número máximo de filas que se pueden leer de una tabla local en un nodo hoja al
ejecutar una consulta distribuida. Aunque las consultas distribuidas pueden emitir múltiples subconsultas
a cada segmento (hoja), este límite solo se comprobará en la fase de lectura en los
nodos hoja y se ignorará en la fase de combinación de resultados en el nodo raíz.
Por ejemplo, un clúster consta de 2 segmentos y cada segmento contiene una tabla con
100 filas. La consulta distribuida que debe leer todos los datos de ambas
tablas con la configuración max_rows_to_read=150 fallará, ya que en total habrá
200 filas. Una consulta con max_rows_to_read_leaf=150 se ejecutará correctamente, ya que los nodos hoja
leerán como máximo 100 filas.
La restricción se comprueba para cada fragmento de datos procesado.
Esta configuración es inestable con prefer_localhost_replica=1.
El número máximo de filas antes de la ordenación. Esto permite limitar el consumo de memoria al ordenar.
Si es necesario procesar más registros que la cantidad especificada para la operación ORDER BY,
el comportamiento vendrá determinado por sort_overflow_mode, que de forma predeterminada está configurado como throw.
Tamaño máximo (en filas) que se puede transferir a un servidor remoto o guardar en una
tabla temporal cuando se ejecuta la sección GLOBAL IN/JOIN.
Número máximo de sesiones simultáneas por usuario autenticado en el servidor de ClickHouse.
Ejemplo:
<profiles>
<single_session_profile>
<max_sessions_for_user>1</max_sessions_for_user>
</single_session_profile>
<two_sessions_profile>
<max_sessions_for_user>2</max_sessions_for_user>
</two_sessions_profile>
<unlimited_sessions_profile>
<max_sessions_for_user>0</max_sessions_for_user>
</unlimited_sessions_profile>
</profiles>
<users>
<!-- El usuario Alice puede conectarse al servidor de ClickHouse como máximo una vez a la vez. -->
<Alice>
<profile>single_session_user</profile>
</Alice>
<!-- El usuario Bob puede usar 2 sesiones simultáneas. -->
<Bob>
<profile>two_sessions_profile</profile>
</Bob>
<!-- El usuario Charles puede usar un número ilimitado de sesiones simultáneas. -->
<Charles>
<profile>unlimited_sessions_profile</profile>
</Charles>
</users>
Valores posibles:
- Entero positivo
0: número infinito de sesiones simultáneas (valor predeterminado)
max_size_to_preallocate_for_aggregation
Número total de elementos para los que se permite preasignar espacio en todas las tablas hash antes de la agregació
max_size_to_preallocate_for_joins
Para cuántos elementos se permite preasignar espacio en total en todas las tablas hash antes de joi
max_skip_unavailable_shards_num
Cuando skip_unavailable_shards está habilitado, limita el número máximo de segmentos que pueden omitirse silenciosamente.
Si el número de segmentos no disponibles supera este valor, se lanza una excepción en lugar de omitirlos silenciosamente.
Un valor de 0 significa que no hay límite (comportamiento predeterminado: pueden omitirse todos los segmentos no disponibles).
max_skip_unavailable_shards_ratio
Cuando skip_unavailable_shards está habilitado, limita la proporción máxima (de 0 a 1) de segmentos que pueden omitirse silenciosamente.
Si la proporción de segmentos no disponibles respecto al total de segmentos supera este valor, se lanza una excepción en lugar de omitirlos silenciosamente.
Un valor de 0 significa que no hay límite (comportamiento predeterminado: se pueden omitir todos los segmentos no disponibles).
max_streams_for_files_processing_in_cluster_functions
Si no es cero, limita el número de hilos que leen datos de archivos en las funciones de tabla de clúster.
max_streams_for_merge_tree_reading
Si no es cero, limita el número de streams de lectura para la tabla MergeTree.
max_streams_for_union_step
Limita el número de streams de datos activos simultáneamente en un paso UNION (se aplica tanto a UNION ALL como a UNION DISTINCT, porque UNION DISTINCT se implementa mediante un paso UNION ALL seguido de un paso DISTINCT). Cuando una consulta UNION tiene muchas subconsultas, todas abren sus búferes de lectura al mismo tiempo, lo que hace que el uso de memoria sea proporcional al número de subconsultas. Esta configuración inserta procesadores Concat para estrechar la canalización, de modo que como máximo este número de streams esté activo a la vez, lo que reduce drásticamente el pico de memoria. El límite real es el menor entre este valor y max_threads * max_streams_for_union_step_to_max_threads_ratio (si cualquiera de los dos es 0, se ignora). Cuando ambos son 0, no se aplica ningún estrechamiento.
max_streams_for_union_step_to_max_threads_ratio
Esta proporción, multiplicada por max_threads, determina un límite de flujos activos simultáneamente en un paso UNION (se aplica tanto a UNION ALL como a UNION DISTINCT). El límite real es el mínimo entre este valor calculado y max_streams_for_union_step (si cualquiera de los dos es 0, se ignora). Por ejemplo, con max_threads = 8 y esta proporción establecida en 1, habrá como máximo 8 flujos activos. Establézcala en 0 para desactivar este límite basado en la proporción.
max_streams_multiplier_for_merge_tables
Solicita más flujos al leer de una tabla Merge. Los flujos se distribuirán entre las tablas que utiliza la tabla Merge. Esto permite repartir el trabajo de forma más uniforme entre los hilos y resulta especialmente útil cuando las tablas fusionadas difieren en tamaño.
max_streams_to_max_threads_ratio
Permite usar más flujos que hilos para distribuir el trabajo de forma más uniforme entre ellos. Se asume que esta es una solución temporal, ya que en el futuro será posible hacer que el número de flujos sea igual al número de hilos, pero que cada flujo seleccione dinámicamente el trabajo disponible por sí mismo.
Si una consulta tiene más subconsultas anidadas que el número especificado, se
genera una excepción.
Esto permite realizar una comprobación de cordura para evitar que los usuarios de su
cluster escriban consultas excesivamente complejas.
Restricción para eliminar tablas durante la ejecución de la consulta. El valor 0 significa que puede eliminar todas las tablas sin ninguna restricción.
Valor predeterminado de Cloud: 1 TB.
Esta configuración de consulta anula la configuración equivalente del servidor; consulte max_table_size_to_drop
El número máximo de columnas temporales que deben mantenerse simultáneamente en RAM
al ejecutar una consulta, incluidas las columnas constantes. Si una consulta genera en
memoria un número de columnas temporales superior al especificado como resultado de un
cálculo intermedio, se genera una excepción.
Esta configuración es útil para evitar consultas excesivamente complejas.
El valor 0 significa que no hay límite.
max_temporary_data_on_disk_size_for_query
La cantidad máxima de datos consumida por los archivos temporales en disco, en bytes, para todas
las consultas que se ejecutan de forma concurrente.
Valores posibles:
- Entero positivo.
0 — ilimitado (predeterminado)
max_temporary_data_on_disk_size_for_user
La cantidad máxima de datos, en bytes, consumidos por los archivos temporales en disco para todas
las consultas del usuario que se ejecutan de forma concurrente.
Valores posibles:
- Entero positivo.
0 — ilimitado (predeterminado)
max_temporary_non_const_columns
Al igual que max_temporary_columns, es el número máximo de columnas temporales que deben
mantenerse simultáneamente en RAM al ejecutar una consulta, sin contar las
columnas constantes.
Las columnas constantes se generan con bastante frecuencia al ejecutar una consulta, pero requieren
prácticamente cero recursos de cómputo.
El número máximo de hilos de procesamiento de consultas, excluidos los hilos para recuperar datos de servidores remotos (consulte el parámetro ‘max_distributed_connections’).
Este parámetro se aplica a los hilos que ejecutan las mismas etapas de la canalización de procesamiento de consultas en paralelo.
Por ejemplo, al leer de una tabla, si es posible evaluar expresiones con funciones, filtrar con WHERE y preagregar para GROUP BY en paralelo usando al menos ‘max_threads’ hilos, se usan ‘max_threads’.
Para las consultas que se completan rápidamente debido a un LIMIT, puede establecer un valor más bajo de ‘max_threads’.
Por ejemplo, si el número necesario de entradas se encuentra en cada bloque y max_threads = 8, se recuperan 8 bloques, aunque habría bastado con leer solo uno.
Cuanto menor sea el valor de max_threads, menos memoria se consume.
De forma predeterminada, la configuración max_threads coincide con el número de hilos de hardware (número de CPU cores) disponibles para ClickHouse.
Como caso especial, para procesadores x86 con menos de 32 CPU cores y SMT (por ejemplo, Intel HyperThreading), ClickHouse usa de forma predeterminada el número de núcleos lógicos (= 2 x número de núcleos físicos).
Sin SMT (por ejemplo, Intel HyperThreading), esto corresponde al número de CPU cores.
Para los usuarios de ClickHouse Cloud, el valor predeterminado se mostrará como auto(N), donde N coincide con el tamaño de vCPU de su servicio, por ejemplo, 2vCPU/8GiB, 4vCPU/16GiB, etc.
Consulte la pestaña de configuración en la consola de Cloud para ver una lista de todos los tamaños de servicio.
El número máximo de hilos para procesar índices.
max_threads_min_free_memory_per_thread
Reduce max_threads cuando el servidor está bajo presión de memoria, para evitar iniciar consultas con un alto nivel de paralelismo que probablemente alcancen el límite de memoria.
La memoria libre se calcula como max_server_memory_usage del servidor menos la memoria que actualmente registra el memory tracker global. Si esa memoria libre es inferior a max_threads multiplicado por este valor, max_threads se reduce al mayor valor de N tal que N * value <= free_memory, con un mínimo de 1.
Establézcalo en 0 para desactivar este límite.
Por ejemplo, con el valor predeterminado de 1 GiB y 32 GiB de memoria libre, max_threads queda limitado a 32; con 1 GiB de memoria libre, se reduce a 1.
Esta configuración se aplica al paralelismo del lado de lectura (SELECT, UNION, INTERSECT/EXCEPT y el lado SELECT de INSERT ... SELECT). Para el lado de escritura, consulte max_insert_threads_min_free_memory_per_thread.
Las asignaciones y liberaciones pequeñas se agrupan en una variable local del thread y solo se rastrean o perfilan cuando una cantidad (en valor absoluto) supera el valor especificado. Si el valor es mayor que ‘memory_profiler_step’, en la práctica se reducirá a ‘memory_profiler_step’.
max_wkb_geometry_elements
Número máximo de puntos, anillos o polígonos permitidos en un único elemento de geometría WKB durante el análisis por readWKB y funciones relacionadas. Esto protege frente a asignaciones excesivas de memoria causadas por datos WKB malformados. Establézcalo en 0 para usar el límite fijo en el código (100 millones).
memory_overcommit_ratio_denominator
Representa el límite de memoria blando cuando se alcanza el límite estricto a nivel global.
Este valor se usa para calcular el ratio de overcommit de la consulta.
Cero significa omitir la consulta.
Lea más sobre memory overcommit.
memory_overcommit_ratio_denominator_for_user
Representa el límite de memoria blando cuando se alcanza el límite estricto a nivel de usuario.
Este valor se usa para calcular el ratio de overcommit de la consulta.
Un valor de cero significa omitir la consulta.
Más información sobre memory overcommit.
memory_profiler_sample_max_allocation_size
Recopila allocations aleatorias de tamaño menor o igual que el valor especificado, con una probabilidad igual a memory_profiler_sample_probability. 0 significa que está deshabilitado. Es posible que quieras establecer max_untracked_memory en 0 para que este umbral funcione como se espera.
memory_profiler_sample_min_allocation_size
Recopila asignaciones de memoria aleatorias de tamaño mayor o igual que el valor especificado, con una probabilidad igual a memory_profiler_sample_probability. 0 significa que está deshabilitado. Puede que quieras establecer max_untracked_memory en 0 para que este umbral funcione como se espera.
memory_profiler_sample_probability
Recopila asignaciones y liberaciones aleatorias y las escribe en system.trace_log con el trace_type ‘MemorySample’. La probabilidad se aplica a cada operación de alloc/free, independientemente del tamaño de la asignación (puede cambiarse con memory_profiler_sample_min_allocation_size y memory_profiler_sample_max_allocation_size). Ten en cuenta que el muestreo solo se produce cuando la cantidad de memoria no registrada supera ‘max_untracked_memory’. Puede que te convenga establecer ‘max_untracked_memory’ en 0 para obtener un muestreo aún más detallado.
Establece el intervalo del perfilador de memoria. Cada vez que el uso de memoria de una consulta supere el siguiente intervalo en bytes, el perfilador de memoria recopilará el stacktrace de asignación y lo escribirá en trace_log.
Valores posibles:
-
Un número entero positivo de bytes.
-
0 para desactivar el perfilador de memoria.
memory_tracker_fault_probability
Para probar la seguridad ante excepciones, lanza una excepción cada vez que se asigne memoria con la probabilidad especificada.
memory_usage_overcommit_max_wait_microseconds
Tiempo máximo que el thread esperará a que se libere memoria en caso de overcommit de memoria a nivel de usuario.
Si se alcanza el timeout y no se libera memoria, se lanza una excepción.
Lea más sobre memory overcommit.
merge_table_max_tables_to_look_for_schema_inference
Al crear una tabla Merge sin un esquema explícito o al usar la función de tabla merge, el esquema se infiere como la unión de no más de la cantidad especificada de tablas coincidentes.
Si el número de tablas es mayor, el esquema se inferirá a partir de las primeras tablas hasta alcanzar la cantidad especificada.
merge_tree_coarse_index_granularity
Al buscar datos, ClickHouse comprueba las marcas de datos del archivo de índice. Si ClickHouse detecta que las claves necesarias están dentro de algún rango, divide ese rango en merge_tree_coarse_index_granularity subrangos y busca recursivamente las claves necesarias en ellos.
Valores posibles:
- Cualquier entero par positivo.
merge_tree_compact_parts_min_granules_to_multibuffer_read
Solo tiene efecto en ClickHouse Cloud. Número de gránulos en una franja de una parte compacta de las tablas MergeTree para usar el lector multibúfer, que admite lectura en paralelo y lectura anticipada. En caso de leer desde un sistema de archivos remoto, el uso del lector multibúfer aumenta el número de solicitudes de lectura.
merge_tree_determine_task_size_by_prewhere_columns
Si se debe usar solo el tamaño de las columnas de prewhere para determinar el tamaño de la tarea de lectura.
merge_tree_max_bytes_to_use_cache
Si ClickHouse necesita leer más de merge_tree_max_bytes_to_use_cache bytes en una consulta, no utiliza la caché de bloques sin comprimir.
La caché de bloques sin comprimir almacena los datos extraídos para las consultas. ClickHouse utiliza esta caché para acelerar las respuestas a consultas pequeñas repetidas. Esta configuración evita que la caché se vea afectada por consultas que leen una gran cantidad de datos. La configuración del servidor uncompressed_cache_size define el tamaño de la caché de bloques sin comprimir.
Valores posibles:
- Cualquier entero positivo.
merge_tree_max_rows_to_use_cache
Si ClickHouse tiene que leer más de merge_tree_max_rows_to_use_cache filas en una consulta, no utiliza la caché de bloques sin comprimir.
La caché de bloques sin comprimir almacena datos extraídos durante las consultas. ClickHouse utiliza esta caché para acelerar las respuestas a consultas pequeñas repetidas. Esta configuración evita que consultas que leen grandes volúmenes de datos degraden la caché. La configuración del servidor uncompressed_cache_size define el tamaño de la caché de bloques sin comprimir.
Valores posibles:
- Cualquier entero positivo.
merge_tree_min_bytes_for_concurrent_read
Si la cantidad de bytes que se va a leer de un archivo de una tabla con motor MergeTree supera merge_tree_min_bytes_for_concurrent_read, ClickHouse intenta leer este archivo de forma concurrente en varios hilos.
Valor posible:
merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem
La cantidad mínima de bytes que se deben leer de un archivo para que el motor MergeTree pueda paralelizar la lectura cuando se lee desde un sistema de archivos remoto. No recomendamos usar esta configuración.
Valores posibles:
merge_tree_min_bytes_for_seek
Si la distancia entre dos bloques de datos que deben leerse en un archivo es menor que merge_tree_min_bytes_for_seek bytes, ClickHouse lee secuencialmente un rango del archivo que contiene ambos bloques, evitando así una operación de búsqueda adicional.
Valores posibles:
- Cualquier entero positivo.
merge_tree_min_bytes_per_task_for_remote_reading
Aliases: filesystem_prefetch_min_bytes_for_single_read_task
Cantidad mínima de bytes que se deben leer por tarea.
merge_tree_min_read_task_size
Límite inferior estricto del tamaño de la tarea (incluso cuando el número de gránulos es bajo y el número de hilos disponibles es alto, no asignaremos tareas más pequeñas
merge_tree_min_rows_for_concurrent_read
Si el número de filas que se va a leer desde un archivo de una tabla MergeTree supera merge_tree_min_rows_for_concurrent_read, ClickHouse intenta realizar una lectura concurrente de ese archivo en varios hilos.
Valores posibles:
merge_tree_min_rows_for_concurrent_read_for_remote_filesystem
La cantidad mínima de filas que se deben leer de un archivo para que el motor MergeTree pueda paralelizar la lectura al leer desde un sistema de archivos remoto. No recomendamos usar esta configuración.
Valores posibles:
merge_tree_min_rows_for_seek
Si la distancia entre dos bloques de datos que deben leerse de un archivo es menor que merge_tree_min_rows_for_seek filas, ClickHouse no se desplaza por el archivo, sino que lee los datos secuencialmente.
Valores posibles:
- Cualquier entero positivo.
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability
Para probar PartsSplitter: divide los rangos de lectura en rangos que se intersecan y rangos que no se intersecan cada vez que se lee desde MergeTree con la probabilidad especificada.
merge_tree_storage_snapshot_sleep_ms
Introduce un retraso artificial (en milisegundos) al crear una instantánea de almacenamiento para tablas MergeTree.
Se usa únicamente con fines de prueba y depuración.
Valores posibles:
- 0 - Sin retraso (predeterminado)
- N - Retraso en milisegundos
merge_tree_use_const_size_tasks_for_remote_reading
Indica si se deben usar tareas de tamaño constante para leer desde una tabla remota.
merge_tree_use_deserialization_prefixes_cache
Habilita el almacenamiento en caché de los metadatos de las columnas desde los prefijos de archivo durante la lectura desde discos remotos en MergeTree.
merge_tree_use_prefixes_deserialization_thread_pool
Habilita el uso del pool de hilos para la lectura paralela de prefijos en partes Wide en MergeTree. El tamaño de ese pool de hilos se controla mediante la configuración del servidor max_prefixes_deserialization_thread_pool_size.
merge_tree_use_v1_object_and_dynamic_serialization
Cuando está habilitada, en MergeTree se usará la versión de serialización V1 de los tipos JSON y Dynamic en lugar de V2. Este cambio en la configuración solo surte efecto después de reiniciar el servidor.
metrics_perf_events_enabled
Si está habilitada, algunos de los eventos de perf se medirán durante la ejecución de las consultas.
Lista separada por comas de métricas de perf que se medirán durante la ejecución de las consultas. Si está vacío, significa que se medirán todos los eventos. Consulte PerfEventInfo en sources para ver los eventos disponibles.
min_bytes_to_use_direct_io
El volumen mínimo de datos necesario para usar acceso de E/S directa al disco de almacenamiento.
ClickHouse utiliza esta configuración al leer datos de las tablas. Si el volumen total de almacenamiento de todos los datos que se van a leer supera min_bytes_to_use_direct_io bytes, ClickHouse lee los datos del disco de almacenamiento con la opción O_DIRECT.
Valores posibles:
- 0 — La E/S directa está deshabilitada.
- Entero positivo.
Esta es una configuración experimental. Establece la cantidad mínima de memoria para leer archivos grandes sin copiar datos del kernel al espacio de usuario. El umbral recomendado es de aproximadamente 64 MB, porque mmap/munmap es lento. Solo tiene sentido para archivos grandes y solo resulta útil si los datos residen en la caché de páginas.
Valores posibles:
- Entero positivo.
- 0 — Los archivos grandes se leen únicamente copiando datos del kernel al espacio de usuario.
min_chunk_bytes_for_parallel_parsing
- Tipo: entero sin signo
- Valor predeterminado: 1 MiB
El tamaño mínimo del fragmento, en bytes, que cada hilo analizará en paralelo.
Para las tablas MergeTree. Para reducir la latencia al procesar consultas, un bloque se comprime al escribir la siguiente marca si su tamaño es de al menos min_compress_block_size. El valor predeterminado es 65,536.
El tamaño real del bloque, si los datos sin comprimir son inferiores a max_compress_block_size, no será menor que este valor ni menor que el volumen de datos correspondiente a una marca.
Veamos un ejemplo. Supongamos que index_granularity se estableció en 8192 durante la creación de la tabla.
Estamos escribiendo una columna de tipo UInt32 (4 bytes por valor). Al escribir 8192 filas, el total será de 32 KB de datos. Como min_compress_block_size = 65,536, se formará un bloque comprimido cada dos marcas.
Estamos escribiendo una columna URL de tipo String (con un tamaño medio de 60 bytes por valor). Al escribir 8192 filas, el total medio será de algo menos de 500 KB de datos. Como esto supera 65,536, se formará un bloque comprimido para cada marca. En este caso, al leer datos del disco dentro del rango de una sola marca, no habrá que descomprimir datos adicionales.
Esta es una configuración de nivel experto y no deberías cambiarla si apenas estás empezando con ClickHouse.
min_count_to_compile_aggregate_expression
El número mínimo de expresiones de agregación idénticas necesario para iniciar la compilación JIT. Solo funciona si la configuración compile_aggregate_expressions está habilitada.
Valores posibles:
- Entero positivo.
- 0 — Las expresiones de agregación idénticas siempre se compilan con JIT.
min_count_to_compile_expression
Número mínimo de ejecuciones de la misma expression antes de que se compile.
min_count_to_compile_sort_description
El número de descripciones de ordenación idénticas antes de compilarlas con JIT
Velocidad mínima de ejecución en filas por segundo. Se comprueba en cada bloque de datos cuando
timeout_before_checking_execution_speed
vence. Si la velocidad de ejecución es inferior, se lanza una excepción.
min_execution_speed_bytes
El número mínimo de bytes procesados por segundo. Se comprueba en cada bloque de datos cuando
timeout_before_checking_execution_speed
vence. Si la velocidad de ejecución es inferior, se produce una excepción.
min_external_table_block_size_bytes
Agrupa los bloques enviados a la tabla externa hasta alcanzar el tamaño especificado en bytes, si no son lo suficientemente grandes.
min_external_table_block_size_rows
Combina los bloques enviados a la tabla externa hasta alcanzar el tamaño especificado, medido en filas, si los bloques no son lo suficientemente grandes.
min_filtered_ratio_for_lazy_final
Proporción mínima de marcas filtradas por el análisis de índices para la optimización lazy FINAL. Si se filtra menos de esta fracción de marcas, se recurre al FINAL normal. El valor 0 desactiva esta comprobación.
Bytes mínimos de espacio libre en disco para realizar una inserción.
Proporción mínima de espacio libre en disco necesaria para realizar una inserción.
min_free_disk_space_for_temporary_data
El espacio mínimo en disco que debe mantenerse al escribir datos temporales utilizados en la ordenación externa y la agregación.
min_hit_rate_to_use_consecutive_keys_optimization
Tasa mínima de aciertos de una caché usada en la optimización de claves consecutivas en la agregación para mantenerla habilitada
min_insert_block_size_bytes
El tamaño mínimo de los bloques (en bytes) que deben formarse para insertarlos en una tabla.
Esta configuración funciona junto con min_insert_block_size_rows y controla la formación de bloques en los mismos contextos (análisis del formato y operaciones INSERT). Consulte min_insert_block_size_rows para obtener información detallada sobre cuándo y cómo se aplican estas configuraciones.
Valores posibles:
- Entero positivo.
- 0 — la configuración no interviene en la formación de bloques.
min_insert_block_size_bytes_for_materialized_views
Establece la cantidad mínima de bytes del bloque que puede insertarse en una tabla mediante una consulta INSERT. Los bloques más pequeños se compactan en bloques más grandes. Esta configuración se aplica solo a los bloques insertados en una vista materializada. Al ajustar esta configuración, puede controlarse la compactación de bloques al insertarlos en la vista materializada y evitar un uso excesivo de memoria.
Valores posibles:
- Cualquier entero positivo.
- 0 — Compactación deshabilitada.
Véase también
min_insert_block_size_rows
El tamaño mínimo de los bloques (en filas) que deben formarse para insertarlos en una tabla.
Esta configuración controla la formación de bloques en dos contextos:
-
Análisis de formatos: Cuando el servidor analiza formatos de entrada basados en filas (CSV, TSV, JSONEachRow, etc.) desde cualquier interfaz (HTTP, clickhouse-client con datos en línea, gRPC, protocolo wire de PostgreSQL), los bloques se generan cuando:
- Se alcanzan tanto min_insert_block_size_rows COMO min_insert_block_size_bytes, O
- Se alcanza max_insert_block_size_rows O max_insert_block_size_bytes
Nota: Al usar clickhouse-client o clickhouse-local para leer desde un archivo, el propio cliente analiza los datos y esta configuración se aplica del lado del cliente.
-
Operaciones INSERT: Durante las consultas INSERT y cuando los datos fluyen a través de vistas materializadas, el comportamiento de esta configuración depende de
use_strict_insert_block_limits:
-
Cuando está habilitada: Los bloques se generan cuando:
- Umbrales mínimos (AND): Se alcanzan tanto min_insert_block_size_rows COMO min_insert_block_size_bytes
- Umbrales máximos (OR): Se alcanza max_insert_block_size_rows O max_insert_block_size_bytes
-
Cuando está deshabilitada (valor predeterminado): Los bloques se generan cuando se alcanza min_insert_block_size_rows O min_insert_block_size_bytes. No se aplican las configuraciones max_insert_block_size.
Valores posibles:
- Entero positivo.
- 0 — la configuración no participa en la formación de bloques.
min_insert_block_size_rows_for_materialized_views
Establece el número mínimo de filas del bloque que pueden insertarse en una tabla mediante una consulta INSERT. Los bloques más pequeños se agrupan en otros más grandes. Esta configuración se aplica solo a los bloques insertados en una vista materializada. Al ajustar esta configuración, se controla la agrupación de bloques al enviarlos a la vista materializada y se evita un uso excesivo de memoria.
Valores posibles:
- Cualquier entero positivo.
- 0 — Agrupación deshabilitada.
Véase también
min_joined_block_size_bytes
Tamaño mínimo del bloque, en bytes, para los bloques de entrada y salida de JOIN (si el algoritmo JOIN lo admite). Los bloques pequeños se compactarán. 0 significa que no hay límite.
min_joined_block_size_rows
Tamaño mínimo de bloque, en filas, para los bloques de entrada y salida de JOIN (si el algoritmo de JOIN lo admite). Los bloques pequeños se compactan. 0 significa sin límite.
min_os_cpu_wait_time_ratio_to_throw
Relación mínima entre los tiempos de espera de CPU del SO (métrica OSCPUWaitMicroseconds) y de actividad (métrica OSCPUVirtualTimeMicroseconds) para empezar a considerar el rechazo de consultas. Se utiliza interpolación lineal entre la relación mínima y la máxima para calcular la probabilidad; en este punto, la probabilidad es 0.
min_outstreams_per_resize_after_split
Especifica el número mínimo de flujos de salida de un procesador Resize o StrictResize después de realizar la división durante la generación de la canalización. Si el número resultante de flujos es inferior a este valor, la operación de división no se realizará.
Un nodo Resize es un procesador del pipeline de consultas que ajusta la cantidad de flujos de datos que circulan por el pipeline. Puede aumentar o reducir la cantidad de flujos para equilibrar la carga de trabajo entre varios hilos o procesadores. Por ejemplo, si una consulta requiere más paralelismo, el nodo Resize puede dividir un único flujo en varios flujos. A la inversa, puede fusionar varios flujos en menos flujos para consolidar el procesamiento de los datos.
El nodo Resize garantiza que los datos se distribuyan uniformemente entre los flujos, manteniendo la estructura de los bloques de datos. Esto ayuda a optimizar el uso de los recursos y a mejorar el rendimiento de las consultas.
Por qué es necesario dividir el nodo Resize
Durante la ejecución del pipeline, ExecutingGraph::Node::status_mutex del nodo Resize, que actúa como concentrador central, sufre una fuerte contención, especialmente en entornos con muchos núcleos, y esta contención provoca:
- Un aumento de la latencia de
ExecutingGraph::updateNode, lo que afecta directamente al rendimiento de las consultas.
- Un desperdicio excesivo de ciclos de CPU por la contención del spin-lock (
native_queued_spin_lock_slowpath), lo que reduce la eficiencia.
- Una menor utilización de la CPU, lo que limita el paralelismo y la capacidad de procesamiento.
Cómo se divide el nodo Resize
- Se comprueba el número de flujos de salida para garantizar que la división pueda realizarse: los flujos de salida de cada procesador resultante de la división cumplen o superan el umbral
min_outstreams_per_resize_after_split.
- El nodo
Resize se divide en nodos Resize más pequeños con el mismo número de puertos, y cada uno gestiona un subconjunto de flujos de entrada y de salida.
- Cada grupo se procesa de forma independiente, lo que reduce la contención por bloqueos.
En algunos casos, cuando las entradas/salidas no son divisibles por el número de nodos Resize resultantes de la división, algunas entradas se conectan a NullSource y algunas salidas a NullSink. Esto permite realizar la división sin afectar al flujo general de datos.
Propósito de la configuración
La configuración min_outstreams_per_resize_after_split garantiza que la división de los nodos Resize tenga sentido y evita crear muy pocos flujos, lo que podría provocar un procesamiento paralelo ineficiente. Al imponer un número mínimo de flujos de salida, esta configuración ayuda a mantener un equilibrio entre el paralelismo y la sobrecarga, lo que optimiza la ejecución de consultas en escenarios que implican la división y la fusión de flujos.
Para desactivar la división de los nodos Resize, establezca este ajuste en 0. Esto evita que los nodos Resize se dividan durante la generación del pipeline, lo que les permite conservar su estructura original sin subdividirse en nodos más pequeños.
min_table_rows_to_use_projection_index
Si el número estimado de filas que se leerán de la tabla es igual o superior a este umbral, ClickHouse intentará usar el índice de proyección durante la ejecución de la consulta.
mongodb_throw_on_unsupported_query
Si está habilitada, las tablas de MongoDB devolverán un error cuando no se pueda generar una consulta de MongoDB. En caso contrario, ClickHouse lee la tabla completa y la procesa localmente. Esta opción no se aplica cuando ‘allow_experimental_analyzer=0’.
move_all_conditions_to_prewhere
Traslada todas las condiciones aplicables de WHERE a PREWHERE
move_primary_key_columns_to_end_of_prewhere
Mueve al final de la cadena AND las condiciones de PREWHERE que contienen columnas de la clave primaria. Es probable que estas condiciones ya se tengan en cuenta durante el análisis de la clave primaria y, por lo tanto, apenas contribuyan al filtrado de PREWHERE.
multiple_joins_try_to_keep_original_names
No añadir alias a la lista de expresiones de nivel superior al reescribir múltiples JOIN
mutations_execute_nondeterministic_on_initiator
Si es true, las funciones constantes no deterministas (p. ej., la función now()) se ejecutan en el iniciador y se reemplazan por literales en las consultas UPDATE y DELETE. Esto ayuda a mantener los datos sincronizados en las réplicas al ejecutar mutaciones con funciones constantes no deterministas. Valor predeterminado: false.
mutations_execute_subqueries_on_initiator
Si es true, las subconsultas escalares se ejecutan en el iniciador y se sustituyen por literales en las consultas UPDATE y DELETE. Valor predeterminado: false.
mutations_max_literal_size_to_replace
El tamaño máximo, en bytes, del literal serializado que se puede reemplazar en las consultas UPDATE y DELETE. Solo surte efecto si al menos una de las dos opciones anteriores está habilitada. Valor predeterminado: 16384 (16 KiB).
Permite ejecutar de forma síncrona las consultas ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS (mutations).
Valores posibles:
| Valor | Descripción |
|---|
0 | Las mutaciones se ejecutan de forma asíncrona. |
1 | La consulta espera a que todas las mutaciones finalicen en el servidor actual. |
2 | La consulta espera a que todas las mutaciones finalicen en todas las réplicas (si existen). |
3 | La consulta espera solo a las réplicas activas. Solo es compatible con SharedMergeTree. En ReplicatedMergeTree, se comporta igual que mutations_sync = 2. |
mysql_datatypes_support_level
Define cómo los tipos de MySQL se convierten a los tipos correspondientes de ClickHouse. Es una lista separada por comas con cualquier combinación de decimal, datetime64, date2Date32 o date2String. Todas las correspondencias modernas (decimal, datetime64, date2Date32) están habilitadas de forma predeterminada.
decimal: convierte los tipos NUMERIC y DECIMAL a Decimal cuando la precisión lo permite.
datetime64: convierte los tipos DATETIME y TIMESTAMP a DateTime64 en lugar de DateTime cuando la precisión no es 0.
date2Date32: convierte DATE a Date32 en lugar de Date. Tiene prioridad sobre date2String.
date2String: convierte DATE a String en lugar de Date. datetime64 lo sobrescribe.
mysql_map_fixed_string_to_text_in_show_columns
Cuando está habilitado, el tipo de dato FixedString de ClickHouse se mostrará como TEXT en SHOW COLUMNS.
Solo surte efecto cuando la conexión se realiza a través del MySQL wire protocol.
- 0 - Usar
BLOB.
- 1 - Usar
TEXT.
mysql_map_string_to_text_in_show_columns
Cuando está habilitado, el tipo de datos String de ClickHouse se mostrará como TEXT en SHOW COLUMNS.
Solo surte efecto cuando la conexión se realiza a través del MySQL wire protocol.
- 0 - Usar
BLOB.
- 1 - Usar
TEXT.
El número máximo de filas en la inserción por lotes del motor de almacenamiento MySQL
network_compression_method
El codec para comprimir la comunicación entre cliente y servidor, y entre servidores.
Valores posibles:
NONE — sin compresión.
LZ4 — usa el codec LZ4.
LZ4HC — usa el codec LZ4HC.
ZSTD — usa el codec ZSTD.
Véase también
network_zstd_compression_level
Ajusta el nivel de compresión de ZSTD. Se usa solo cuando network_compression_method está configurado como ZSTD.
Valores posibles:
- Entero positivo del 1 al 15.
Normaliza los nombres de las funciones a su forma canónica
number_of_mutations_to_delay
Si la tabla con mutaciones contiene al menos esa cantidad de mutaciones sin finalizar, ralentiza artificialmente las mutaciones de la tabla. 0: deshabilitado
number_of_mutations_to_throw
Si la tabla mutada contiene al menos esa cantidad de mutaciones sin finalizar, se genera la excepción ‘Too many mutations …’. 0 - deshabilitado
odbc_bridge_connection_pool_size
Tamaño del grupo de conexiones para cada cadena de configuración de conexión del ODBC bridge.
odbc_bridge_use_connection_pooling
Usa un pool de conexiones en ODBC bridge. Si se establece en false, se crea una nueva conexión cada vez.
Establece el número de filas que se omiten antes de empezar a devolver filas de la consulta. Ajusta el desplazamiento establecido por la cláusula OFFSET, de modo que ambos valores se sumen.
Valores posibles:
- 0 — No se omite ninguna fila.
- Entero positivo.
Ejemplo
Tabla de entrada:
CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);
Consulta:
SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;
Resultado:
┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘
opentelemetry_start_keeper_trace_probability
Probabilidad de iniciar una traza para una solicitud de ZooKeeper, tenga o no una traza principal.
Valores posibles:
- ‘auto’ - Equivale al ajuste opentelemetry_start_trace_probability
- 0 — El trazado está deshabilitado
- 0 a 1 — Probabilidad (p. ej., 1.0 = siempre habilitado)
opentelemetry_start_trace_probability
Establece la probabilidad de que ClickHouse pueda iniciar una traza para las consultas ejecutadas (si no se proporciona un trace context principal).
Valores posibles:
- 0 — La traza para todas las consultas ejecutadas está deshabilitada (si no se proporciona un trace context principal).
- Número de coma flotante positivo en el rango [0..1]. Por ejemplo, si el valor de la configuración es
0,5, ClickHouse puede iniciar una traza, en promedio, para la mitad de las consultas.
- 1 — La traza para todas las consultas ejecutadas está habilitada.
opentelemetry_trace_cpu_scheduling
Recopila spans de OpenTelemetry para la planificación preventiva de la CPU de la carga de trabajo.
opentelemetry_trace_processors
Recopila spans de OpenTelemetry para los procesadores.
optimize_aggregation_in_order
Habilita la optimización de GROUP BY en consultas SELECT para agregar datos en el orden correspondiente en tablas MergeTree.
Valores posibles:
- 0 — la optimización de
GROUP BY está deshabilitada.
- 1 — la optimización de
GROUP BY está habilitada.
Véase también
optimize_aggregators_of_group_by_keys
Elimina los agregadores min/max/any/anyLast de las claves de GROUP BY en la sección SELECT
optimize_and_compare_chain
Propaga las comparaciones con constantes en cadenas de AND para mejorar la capacidad de filtrado. Admite los operadores <, <=, >, >=, = y sus combinaciones. Por ejemplo, (a < b) AND (b < c) AND (c < 5) pasaría a ser (a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5).
Utilice restricciones para añadir la condición del índice. El valor predeterminado es false.
Valores posibles:
optimize_arithmetic_operations_in_aggregate_functions
Sacar las operaciones aritméticas de las funciones de agregación
Reemplazar por un valor escalar y usar un hash como nombre para constantes grandes (el tamaño se estima por la longitud del nombre).
Valores posibles:
- entero positivo - longitud máxima del nombre,
- 0 — siempre,
- entero negativo - nunca.
optimize_count_from_files
Habilita o deshabilita la optimización para contar el número de filas en archivos con distintos formatos de entrada. Se aplica a las funciones de tabla/motores file/s3/url/hdfs/azureBlobStorage.
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_dictget_tuple_element
Reescribe tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) como dictGet('dict', 'b', key) para evitar obtener atributos de diccionario innecesarios. Admite acceso posicional (.1, .2, …) y con nombre (.b), y también se aplica a dictGetOrDefault cuando el argumento por defecto es una tupla constante o una tuple(...) de constantes.
optimize_distinct_in_order
Habilita la optimización de DISTINCT si algunas de las columnas de DISTINCT constituyen un prefijo de ordenación. Por ejemplo, un prefijo de la clave de ordenación en MergeTree o de la cláusula ORDER BY
optimize_distributed_group_by_sharding_key
Optimiza las consultas GROUP BY sharding_key al evitar la costosa agregación en el servidor iniciador (lo que reduce el uso de memoria de la consulta en ese servidor).
Se admiten los siguientes tipos de consultas (y todas sus combinaciones):
SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist
SELECT ... FROM dist GROUP BY sharding_key[, ...]
SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x
SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1
SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
No se admiten los siguientes tipos de consultas (es posible que más adelante se añada compatibilidad para algunas de ellas):
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS
SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP
SELECT ... GROUP BY sharding_key[, ...] WITH CUBE
SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Ver también:
Por ahora, requiere optimize_skip_unused_shards (esto se debe a que en algún momento podría habilitarse de forma predeterminada, y solo funcionará correctamente si los datos se insertaron a través de una tabla Distributed; es decir, si los datos se distribuyen de acuerdo con sharding_key).
optimize_dry_run_check_part
Cuando está activado, OPTIMIZE ... DRY RUN valida la parte fusionada resultante con checkDataPart. Si la comprobación falla, se lanza una excepción.
optimize_empty_string_comparisons
Convierte expresiones como col = ” o ” = col en empty(col), y col != ” o ” != col en notEmpty(col),
solo cuando col es de tipo String o FixedString.
Permite extraer expresiones comunes de disyunciones en expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY. Una expresión lógica como (A AND B) OR (A AND C) se puede reescribir como A AND (B OR C), lo que puede ayudar a aprovechar:
- índices en expresiones de filtrado simples
- la optimización de CROSS JOIN a INNER JOIN
optimize_functions_to_subcolumns
Habilita o deshabilita la optimización convirtiendo algunas funciones para que lean subcolumnas. Esto reduce la cantidad de datos que se deben leer.
Estas funciones se pueden transformar:
Posibles valores:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_group_by_constant_keys
Optimiza GROUP BY cuando todas las claves del bloque son constantes
optimize_group_by_function_keys
Elimina las funciones de otras claves en la cláusula GROUP BY
optimize_if_chain_to_multiif
Reemplaza las cadenas de if(cond1, then1, if(cond2, ...)) por multiIf. Actualmente no resulta beneficioso para los tipos numéricos.
Reemplaza por enum los argumentos de tipo String en If y Transform. Está deshabilitado de forma predeterminada porque podría provocar un cambio inconsistente en una consulta distribuida, lo que haría que fallara.
optimize_injective_functions_in_group_by
Sustituye las funciones inyectivas por sus argumentos en la cláusula GROUP BY
optimize_injective_functions_inside_uniq
Elimina las funciones inyectivas de un solo argumento dentro de las funciones uniq*().
optimize_inverse_dictionary_lookup
Evita las búsquedas inversas repetidas en el diccionario mediante búsquedas más rápidas en un conjunto precalculado de posibles valores de clave.
optimize_min_equality_disjunction_chain_length
La longitud mínima de la expresión expr = x1 OR ... expr = xN para la optimización
optimize_min_inequality_conjunction_chain_length
La longitud mínima de la expresión expr <> x1 AND ... expr <> xN para la optimización
optimize_move_to_prewhere
Activa o desactiva la optimización automática de PREWHERE en las consultas SELECT.
Solo funciona con tablas *MergeTree.
Posibles valores:
- 0 — La optimización automática de
PREWHERE está desactivada.
- 1 — La optimización automática de
PREWHERE está activada.
optimize_move_to_prewhere_if_final
Habilita o deshabilita la optimización automática de PREWHERE en las consultas SELECT con el modificador FINAL.
Solo funciona con tablas *MergeTree.
Valores posibles:
- 0 — La optimización automática de
PREWHERE en las consultas SELECT con el modificador FINAL está deshabilitada.
- 1 — La optimización automática de
PREWHERE en las consultas SELECT con el modificador FINAL está habilitada.
Véase también
Sustituye ‘multiIf’ con una sola condición por ‘if’.
optimize_normalize_count_variants
Reescribe como count() las funciones de agregación semánticamente equivalentes a count().
Habilita o deshabilita la transformación de datos antes de la inserción, como si se hubiera realizado una combinación en este bloque (según el motor de tabla).
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Ejemplo
La diferencia entre habilitado y deshabilitado:
Consulta:
SET optimize_on_insert = 1;
CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;
INSERT INTO test1 SELECT number % 2 FROM numbers(5);
SELECT * FROM test1;
SET optimize_on_insert = 0;
CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;
INSERT INTO test2 SELECT number % 2 FROM numbers(5);
SELECT * FROM test2;
Resultado:
┌─FirstTable─┐
│ 0 │
│ 1 │
└────────────┘
┌─SecondTable─┐
│ 0 │
│ 0 │
│ 0 │
│ 1 │
│ 1 │
└─────────────┘
Ten en cuenta que esta configuración afecta al comportamiento de la vista materializada.
Optimiza varias expresiones OR LIKE en multiMatchAny. Esta optimización no debería estar habilitada de forma predeterminada, porque en algunos casos dificulta el análisis de índices.
optimize_qbit_distance_function_reads
Reemplaza las funciones de distancia del tipo de datos QBit por otras equivalentes que solo leen del almacenamiento las columnas necesarias para el cálculo.
Habilita la optimización de ORDER BY en las consultas SELECT para la lectura de datos de tablas MergeTree.
Valores posibles:
- 0 — la optimización de
ORDER BY está deshabilitada.
- 1 — la optimización de
ORDER BY está habilitada.
Véase también
optimize_redundant_functions_in_order_by
Elimina las funciones de ORDER BY si su argumento también aparece en ORDER BY
Si se establece en true, respetará los alias en WHERE/GROUP BY/ORDER BY, lo que ayudará a la poda de particiones/índices secundarios/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count
optimize_rewrite_aggregate_function_with_if
Reescribe las funciones de agregación cuyo argumento es una expresión if cuando sean lógicamente equivalentes.
Por ejemplo, avg(if(cond, col, null)) se puede reescribir como avgOrNullIf(cond, col). Esto puede mejorar el rendimiento.
Solo se admite con el analizador (enable_analyzer = 1).
optimize_rewrite_array_exists_to_has
Reescribe las funciones arrayExists() como has() cuando sean lógicamente equivalentes. Por ejemplo, arrayExists(x -> x = 1, arr) puede reescribirse como has(arr, 1)
optimize_rewrite_like_perfect_affix
Reescribe las expresiones LIKE con un prefijo o sufijo exacto (p. ej., col LIKE 'ClickHouse%') como funciones startsWith o endsWith (p. ej., startsWith(col, 'ClickHouse')).
optimize_rewrite_regexp_functions
Reescribe las funciones relacionadas con expresiones regulares para convertirlas en formas más simples y eficientes
optimize_rewrite_sum_if_to_count_if
Reescribe las funciones sumIf() y sum(if()) como countIf() cuando son lógicamente equivalentes
optimize_skip_merged_partitions
Habilita o deshabilita la optimización para la consulta OPTIMIZE TABLE … FINAL si solo hay una parte con nivel > 0 y no tiene un TTL vencido.
OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1
De forma predeterminada, la consulta OPTIMIZE TABLE ... FINAL reescribe esa parte aunque solo haya una única parte.
Posibles valores:
- 1 - Habilita la optimización.
- 0 - Deshabilita la optimización.
optimize_skip_unused_shards
Habilita o deshabilita la omisión de segmentos no utilizados para las consultas SELECT que tienen una condición sobre la clave de segmentación en WHERE/PREWHERE, y activa optimizaciones relacionadas para las consultas distribuidas (por ejemplo, la agregación por clave de segmentación).
Se asume que los datos se distribuyen por la clave de segmentación; de lo contrario, una consulta devuelve un resultado incorrecto.
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
optimize_skip_unused_shards_limit
Límite del número de valores de la clave de sharding; desactiva optimize_skip_unused_shards si se alcanza este límite.
Demasiados valores pueden requerir un procesamiento considerable, mientras que el beneficio es dudoso, ya que, si tienes una gran cantidad de valores en IN (...), lo más probable es que la consulta se envíe a todos los segmentos de todos modos.
optimize_skip_unused_shards_nesting
Controla el nivel de anidamiento de la consulta distribuida en el que depende optimize_skip_unused_shards (por lo tanto, sigue requiriendo optimize_skip_unused_shards); es el caso en el que una tabla Distributed consulta otra tabla Distributed.
Valores posibles:
- 0 — Deshabilitado;
optimize_skip_unused_shards funciona siempre.
- 1 — Habilita
optimize_skip_unused_shards solo para el primer nivel.
- 2 — Habilita
optimize_skip_unused_shards hasta el segundo nivel.
optimize_skip_unused_shards_rewrite_in
Reescribe IN en la consulta para los segmentos remotos a fin de excluir los valores que no pertenecen al segmento (requiere optimize_skip_unused_shards).
Valores posibles:
- 0 — Desactivado.
- 1 — Activado.
Optimiza la ordenación en función de las propiedades de ordenación del flujo de entrada
optimize_substitute_columns
Use restricciones para sustituir columnas. El valor predeterminado es false.
Valores posibles:
optimize_syntax_fuse_functions
Permite fusionar funciones de agregación con el mismo argumento. Reescribe una consulta que contiene al menos dos funciones de agregación, sum, count o avg, con el mismo argumento, como sumCount.
Valores posibles:
- 0 — Las funciones con el mismo argumento no se fusionan.
- 1 — Las funciones con el mismo argumento se fusionan.
Ejemplo
Consulta:
CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSV;
Resultado:
SELECT
sum(__table1.a) AS `sum(a)`,
tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1
Habilita o deshabilita el lanzamiento de una excepción si una consulta OPTIMIZE no realizó ningún merge.
De forma predeterminada, OPTIMIZE finaliza correctamente aunque no haga nada. Esta configuración permite distinguir estas situaciones y obtener el motivo en un mensaje de excepción.
Valores posibles:
- 1 — El lanzamiento de una excepción está habilitado.
- 0 — El lanzamiento de una excepción está deshabilitado.
optimize_time_filter_with_preimage
Optimiza los predicados de Date y DateTime convirtiendo las funciones en comparaciones equivalentes sin necesidad de conversiones (p. ej., toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_trivial_approximate_count_query
Usa un valor aproximado para la optimización del recuento trivial en almacenamientos que admiten este tipo de estimación, por ejemplo, EmbeddedRocksDB.
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_trivial_count_query
Habilita o deshabilita la optimización de la consulta trivial SELECT count() FROM table a partir de los metadatos de MergeTree. Si necesita usar seguridad a nivel de fila, deshabilite este ajuste.
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
Véase también:
optimize_trivial_group_by_limit_query
Habilita o deshabilita la optimización de una consulta trivial SELECT key_expr FROM table GROUP BY key_expr LIMIT n (sin funciones de agregación en la proyección, sin cláusulas HAVING/ORDER BY/LIMIT BY/window y sin modificadores de GROUP BY) estableciendo max_rows_to_group_by = n + offset con group_by_overflow_mode = 'any'. La agregación se detiene en cuanto se obtienen n + offset claves distintas.
La optimización se omite cuando el usuario ha establecido explícitamente group_by_overflow_mode en un valor distinto de any (para preservar la semántica explícita de throw/break) y cuando el usuario ya ha establecido un max_rows_to_group_by más restrictivo (la optimización sería un no-op).
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_trivial_insert_select
Optimiza la consulta trivial ‘INSERT INTO table SELECT … FROM TABLES’
optimize_truncate_order_by_after_group_by_keys
Elimina los elementos finales de ORDER BY una vez que todas las claves de GROUP BY queden cubiertas por el prefijo de ORDER BY.
Reescribe uniq y sus variantes (excepto uniqUpTo) como count si la subconsulta incluye distinct o una cláusula group by.
optimize_use_implicit_projections
Elegir automáticamente proyecciones implícitas para ejecutar la consulta SELECT
optimize_use_projection_filtering
Permite usar proyecciones para filtrar rangos de partes incluso cuando no se seleccionan proyecciones para ejecutar una consulta SELECT.
Alias: allow_experimental_projection_optimization
Activa o desactiva la optimización de proyecciones al procesar consultas SELECT.
Valores posibles:
- 0 — Optimización de proyecciones desactivada.
- 1 — Optimización de proyecciones activada.
optimize_using_constraints
Utilice restricciones para optimizar las consultas. El valor predeterminado es false.
Valores posibles:
os_threads_nice_value_materialized_view
Valor nice de Linux para los hilos de la vista materializada. Los valores más bajos implican una mayor prioridad de CPU.
Requiere la capacidad CAP_SYS_NICE; de lo contrario, no hace nada.
Posibles valores: -20 a 19.
os_threads_nice_value_query
Alias: os_thread_priority
Valor nice de Linux para los hilos de procesamiento de consultas. Los valores más bajos implican una mayor prioridad de CPU.
Requiere la capability CAP_SYS_NICE; de lo contrario, no tiene efecto.
Valores posibles: -20 a 19.
Tamaño de los fragmentos de archivo que se almacenan en la caché de páginas en espacio de usuario, en bytes. Todas las lecturas que pasen por la caché se redondearán hacia arriba al múltiplo más próximo de este tamaño.
Esta configuración puede ajustarse por consulta, pero las entradas de caché con distintos tamaños de bloque no pueden reutilizarse. Cambiar esta configuración invalida en la práctica las entradas existentes en la caché.
Un valor más alto, como 1 MiB, es adecuado para consultas de alto rendimiento, y un valor más bajo, como 64 KiB, es adecuado para consultas puntuales de baja latencia.
page_cache_inject_eviction
La caché de páginas en espacio de usuario a veces invalidará algunas páginas de forma aleatoria. Está pensado para pruebas.
page_cache_lookahead_blocks
Si se produce un fallo en la caché de páginas en espacio de usuario, lee de una sola vez hasta esta cantidad de bloques consecutivos desde el almacenamiento subyacente, siempre que tampoco estén en la caché. Cada bloque tiene page_cache_block_size bytes.
Un valor más alto es beneficioso para consultas de alto rendimiento, mientras que las consultas puntuales de baja latencia funcionan mejor sin lectura anticipada.
page_cache_max_coalesced_bytes
Cuando readBigAt puebla la caché de páginas en espacio de usuario, los fallos de caché consecutivos se combinan en una sola lectura desde el almacenamiento subyacente. Esta configuración limita en bytes el tamaño de una lectura combinada; las secuencias de fallos más largas se dividen en varias lecturas. Limita el uso transitorio de memoria del búfer temporal durante lecturas en frío en paralelo.
Un valor más alto reduce el número de solicitudes HTTP en los escaneos en frío sobre almacenamiento de objetos; un valor más bajo reduce el pico de memoria transitoria.
paimon_target_snapshot_id
Lectura dirigida de snapshots a nivel de consulta para el modo incremental de Paimon. Cuando es >0, el lector solo recuperará el delta
del snapshot_id especificado sin avanzar el watermark confirmado.
Predeterminado: -1 (deshabilitado)
parallel_distributed_insert_select
Habilita la consulta distribuida INSERT ... SELECT en paralelo.
Si ejecutamos consultas INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b, y ambas tablas usan el mismo clúster, y ambas tablas son replicadas o no replicadas, esta consulta se procesa localmente en cada segmento.
Posibles valores:
0 — Deshabilitado.
1 — SELECT se ejecutará en cada segmento desde la tabla subyacente del motor Distributed.
2 — SELECT e INSERT se ejecutarán en cada segmento desde/hacia la tabla subyacente del motor Distributed.
Desde la versión 25.4, INSERT ... SELECT desde un origen ReplicatedMergeTree o SharedMergeTree también puede paralelizarse entre réplicas. Para habilitarlo:
parallel_distributed_insert_select = 2
enable_parallel_replicas = 1
parallel_hash_join_threshold
Cuando se aplica un algoritmo de join basado en hash, este umbral ayuda a decidir entre usar hash y parallel_hash (solo si se dispone de una estimación del tamaño de la tabla de la derecha).
El primero se usa cuando sabemos que el tamaño de la tabla de la derecha está por debajo del umbral.
parallel_non_joined_rows_processing
Permite que varios hilos procesen en paralelo las filas no emparejadas de la tabla derecha durante los JOIN RIGHT y FULL.
Esto puede acelerar la fase de filas no emparejadas al usar el algoritmo de join parallel_hash con tablas grandes.
Cuando está deshabilitado, las filas no emparejadas se procesan con un solo hilo.
Esta configuración es interna, no debe usarse directamente y representa un detalle de implementación del modo de ‘réplicas paralelas’. El servidor iniciador establecerá automáticamente esta configuración, para las consultas distribuidas, con el índice de la réplica que participa en el procesamiento de la consulta entre las réplicas paralelas.
parallel_replicas_allow_in_with_subquery
Si es true, la subconsulta de IN se ejecutará en cada réplica follower.
parallel_replicas_allow_materialized_views
Permitir el uso de vistas materializadas con réplicas paralelas
parallel_replicas_allow_view_over_mergetree
Permite que las réplicas paralelas ejecuten la consulta externa de una vista simple sobre tablas MergeTree (en lugar de la consulta interna de la vista), lo que mejora la paralelización entre nodos. También se aplica a las vistas UNION ALL cuyas ramas leen cada una de una tabla MergeTree distinta.
parallel_replicas_connect_timeout_ms
El tiempo de espera en milisegundos para conectarse a una réplica remota durante la ejecución de consultas con réplicas paralelas. Si el tiempo de espera vence, la réplica correspondiente no se utiliza para la ejecució
Esta es una configuración interna que no debe usarse directamente y representa un detalle de implementación del modo de ‘réplicas en paralelo’. El servidor iniciador configurará automáticamente esta opción para las consultas distribuidas con el número de réplicas en paralelo que participan en el procesamiento de la consulta.
parallel_replicas_custom_key
Una expresión entera arbitraria que puede utilizarse para dividir el trabajo entre réplicas de una tabla específica.
El valor puede ser cualquier expresión entera.
Se prefieren las expresiones simples que usan claves primarias.
Si la configuración se utiliza en un clúster que consta de un solo segmento con varias réplicas, esas réplicas se convertirán en segmentos virtuales.
De lo contrario, se comportará igual que con la clave SAMPLE: usará varias réplicas de cada segmento.
parallel_replicas_custom_key_range_lower
Permite que el tipo de filtro range divida el trabajo de manera uniforme entre las réplicas según el rango personalizado [parallel_replicas_custom_key_range_lower, INT_MAX].
Cuando se usa junto con parallel_replicas_custom_key_range_upper, permite que el filtro divida de manera uniforme el trabajo entre las réplicas para el rango [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper].
Nota: Esta configuración no hace que se filtren datos adicionales durante el procesamiento de consultas; más bien, cambia los puntos en los que el filtro de rango divide el rango [0, INT_MAX] para su procesamiento en paralelo.
parallel_replicas_custom_key_range_upper
Permite que el tipo de filtro range divida el trabajo de manera uniforme entre las réplicas en función del rango personalizado [0, parallel_replicas_custom_key_range_upper]. Un valor de 0 desactiva el límite superior y lo establece en el valor máximo de la expresión de clave personalizada.
Cuando se usa junto con parallel_replicas_custom_key_range_lower, permite que el filtro divida uniformemente el trabajo entre las réplicas para el rango [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper].
Nota: esta configuración no hará que se filtren datos adicionales durante el procesamiento de consultas; más bien, cambia los puntos en los que el filtro de rango divide el intervalo [0, INT_MAX] para el procesamiento paralelo
parallel_replicas_filter_pushdown
Permite aplicar pushdown de filtros en la parte de la consulta que ejecutan las réplicas paralelas
parallel_replicas_for_cluster_engines
Reemplaza los motores de las funciones de tabla por sus alternativas -Cluster
parallel_replicas_for_non_replicated_merge_tree
Si es true, ClickHouse también usará el algoritmo de réplicas paralelas para las tablas MergeTree no replicadas
parallel_replicas_index_analysis_only_on_coordinator
El análisis del índice se realiza solo en la réplica coordinadora y se omite en las demás réplicas. Solo surte efecto con parallel_replicas_local_pla
parallel_replicas_insert_select_local_pipeline
Usar un pipeline local durante un INSERT SELECT distribuido con réplicas paralelas
parallel_replicas_local_plan
Construye el plan local para la réplica local
parallel_replicas_mark_segment_size
Las partes se dividen virtualmente en segmentos para distribuirlas entre las réplicas durante la lectura en paralelo. Esta configuración controla el tamaño de estos segmentos. No se recomienda cambiarla hasta estar absolutamente seguro de lo que se está haciendo. El valor debe estar en el rango [128; 16384]
parallel_replicas_min_number_of_rows_per_replica
Limita el número de réplicas utilizadas en una consulta a (filas estimadas que se van a leer / min_number_of_rows_per_replica). El máximo sigue estando limitado por ‘max_parallel_replicas’
Tipo de filtro que se usará con la clave personalizada para las réplicas paralelas. default - usa la operación de módulo sobre la clave personalizada, range - usa un filtro de rango sobre la clave personalizada utilizando todos los valores posibles del tipo de valor de la clave personalizada.
parallel_replicas_only_with_analyzer
El analizador debe estar habilitado para usar réplicas paralelas. Si el analizador está deshabilitado, la ejecución de la consulta recurre a la ejecución local, incluso si la lectura paralela desde réplicas está habilitada. No se admite usar réplicas paralelas sin el analizador habilitado
parallel_replicas_prefer_local_join
Si es true, JOIN puede ejecutarse con el algoritmo de réplicas paralelas y todos los motores de almacenamiento de la parte derecha del JOIN son *MergeTree, se usará JOIN local en lugar de GLOBAL JOIN.
parallel_replicas_prefer_local_replica
Cuando está habilitada (de forma predeterminada), la réplica local siempre se incluye en el conjunto de réplicas utilizadas para la lectura en paralelo.
Cuando está deshabilitada, no se da preferencia a la réplica local y las réplicas se seleccionan únicamente mediante el algoritmo de balanceo de carga.
Esto permite que las consultas con max_parallel_replicas = 1 se dirijan a otro host, lo que puede mejorar la localidad de la caché cuando muchas consultas cortas se distribuyen en un clúster.
parallel_replicas_support_projection
La optimización de las proyecciones puede aplicarse en réplicas paralelas. Solo surte efecto si parallel_replicas_local_plan está habilitado y aggregation_in_order está inactivo.
Habilita el envío concurrente a las vistas adjuntas en lugar de secuencial.
parallelize_output_from_storages
Paraleliza la salida en la etapa de lectura desde el almacenamiento. Permite paralelizar el procesamiento de consultas inmediatamente después de leer del almacenamiento, cuando sea posible
parsedatetime_e_requires_space_padding
El formateador ‘%e’ de la función ‘parseDateTime’ requiere que los días de un solo dígito estén rellenados con espacios; por ejemplo, se acepta ’ 2’, pero ‘2’ genera un error.
parsedatetime_parse_without_leading_zeros
Los formateadores ‘%c’, ‘%l’ y ‘%k’ de la función ‘parseDateTime’ interpretan meses y horas sin ceros a la izquierda.
partial_merge_join_left_table_buffer_bytes
Si no es 0, agrupa los bloques de la tabla izquierda en bloques más grandes para el lado izquierdo de partial merge join. Utiliza hasta 2 veces la memoria especificada por cada hilo de join.
partial_merge_join_rows_in_right_blocks
Limita el tamaño de los bloques de datos del lado derecho de JOIN en el algoritmo partial merge join para las consultas JOIN.
Servidor de ClickHouse:
- Divide los datos del lado derecho de JOIN en bloques de hasta el número de filas especificado.
- Indexa cada bloque con sus valores mínimo y máximo.
- Vuelca los bloques preparados a disco si es posible.
Valores posibles:
- Cualquier entero positivo. Rango de valores recomendado: [1000, 100000].
partial_result_on_first_cancel
Permite que la consulta devuelva un resultado parcial tras cancelarla.
Si la tabla de destino contiene al menos esa cantidad de partes activas en una sola partición, ralentiza artificialmente la inserción en la tabla.
Si el número de partes activas en una sola partición de la tabla de destino supera este valor, se lanza la excepción ‘Too many parts …‘.
Registra estadísticas del índice para cada parte
Bloquea el bucle de espera de la consulta en el servidor durante el número de segundos especificado.
Dialecto SQL de origen del transpilador políglota (p. ej., ‘sqlite’, ‘mysql’, ‘postgresql’, ‘snowflake’, ‘duckdb’).
postgresql_connection_attempt_timeout
Tiempo de espera de conexión, en segundos, para un único intento de conexión al endpoint de PostgreSQL.
El valor se pasa como parámetro connect_timeout en la URL de conexión.
postgresql_connection_pool_auto_close_connection
Cierra la conexión antes de devolverla al grupo.
postgresql_connection_pool_retries
Número de reintentos de push/pop del pool de conexiones para el motor de tabla PostgreSQL y el motor de base de datos.
postgresql_connection_pool_size
Tamaño del pool de conexiones para el motor de tabla PostgreSQL y el motor de base de datos.
postgresql_connection_pool_wait_timeout
Tiempo de espera de push/pop del pool de conexiones cuando el pool está vacío para el engine de tabla PostgreSQL y el engine de base de datos. De forma predeterminada, se bloqueará si el pool está vacío.
postgresql_fault_injection_probability
Probabilidad aproximada de fallo de las consultas internas de PostgreSQL (para la replicación). El valor válido está en el intervalo [0.0f, 1.0f]
predicate_statistics_sample_rate
Recopila estadísticas de selectividad de predicados en system.predicate_statistics_log. Cuando se establece en N > 0, se toma una muestra de aproximadamente 1/N de las consultas (según el ID de la consulta). 0 significa deshabilitado.
prefer_column_name_to_alias
Habilita o deshabilita el uso de los nombres de columna originales en lugar de alias en las expresiones y cláusulas de una consulta. Esto es especialmente importante cuando el alias coincide con el nombre de la columna; consulte Expression Aliases. Active esta configuración para que las reglas sintácticas de los alias en ClickHouse sean más compatibles con la mayoría de los demás motores de base de datos.
Valores posibles:
- 0 — El nombre de la columna se sustituye por el alias.
- 1 — El nombre de la columna no se sustituye por el alias.
Ejemplo
Diferencia entre habilitado y deshabilitado:
Consulta:
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);
Resultado:
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.
Consulta:
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);
Resultado:
┌─number─┬─max(number)─┐
│ 4.5 │ 9 │
└────────┴─────────────┘
prefer_external_sort_block_bytes
Prioriza el número máximo de bytes por bloque para la ordenación externa; reduce el uso de memoria durante la fusión.
prefer_global_in_and_join
Habilita el reemplazo de los operadores IN/JOIN por GLOBAL IN/GLOBAL JOIN.
Valores posibles:
- 0 — Deshabilitado. Los operadores
IN/JOIN no se reemplazan por GLOBAL IN/GLOBAL JOIN.
- 1 — Habilitado. Los operadores
IN/JOIN se reemplazan por GLOBAL IN/GLOBAL JOIN.
Uso
Aunque SET distributed_product_mode=global puede cambiar el comportamiento de las consultas para las tablas distribuidas, no resulta adecuado para las tablas locales ni para las tablas de fuentes externas. Aquí es donde entra en juego la configuración prefer_global_in_and_join.
Por ejemplo, podemos tener nodos que sirven consultas y contienen tablas locales que no son adecuadas para la distribución. Necesitamos distribuir sus datos sobre la marcha durante el procesamiento distribuido con la palabra clave GLOBAL: GLOBAL IN/GLOBAL JOIN.
Otro caso de uso de prefer_global_in_and_join es acceder a tablas creadas por motores externos. Esta configuración ayuda a reducir el número de llamadas a fuentes externas al unir esas tablas: solo una llamada por consulta.
Véase también:
Habilita o deshabilita el uso preferente de la réplica localhost al procesar consultas distribuidas.
Valores posibles:
- 1 — ClickHouse siempre envía una consulta a la réplica localhost si existe.
- 0 — ClickHouse usa la estrategia de balanceo especificada por el ajuste load_balancing.
prefer_warmed_unmerged_parts_seconds
Solo tiene efecto en ClickHouse Cloud. Si una parte fusionada tiene menos de esta cantidad de segundos de antigüedad y no está precalentada (véase cache_populated_by_fetch), pero todas sus partes de origen están disponibles y precalentadas, las consultas SELECT leerán de esas partes en su lugar. Solo para Replicated-/SharedMergeTree. Ten en cuenta que esto solo comprueba si CacheWarmer procesó la parte; si la parte se cargó en la caché por algún otro medio, seguirá considerándose fría hasta que CacheWarmer la procese; si se precalentó y luego fue expulsada de la caché, seguirá considerándose caliente.
preferred_block_size_bytes
Esta configuración ajusta el tamaño del bloque de datos para el procesamiento de consultas y supone un ajuste adicional más preciso de la configuración más general max_block_size. Si las columnas son grandes y, con max_block_size filas, es probable que el tamaño del bloque supere la cantidad de bytes especificada, se reducirá para mejorar la localidad de caché de la CPU.
preferred_max_column_in_block_size_bytes
Límite del tamaño máximo de una columna en un bloque durante la lectura. Ayuda a reducir la cantidad de fallos de caché. Debe ser cercano al tamaño de la caché L2.
preferred_optimize_projection_name
Si se establece en una cadena no vacía, ClickHouse intentará aplicar la proyección especificada en la consulta.
Valores posibles:
- string: nombre de la proyección preferida
El tamaño máximo del búfer de precarga para la lectura desde el sistema de archivos.
Permite mostrar nombres de tipos con anidamiento profundo de forma legible y con sangrías en la consulta DESCRIBE y en la función toTypeName().
Ejemplo:
CREATE TABLE test (a Tuple(b String, c Tuple(d Nullable(UInt64), e Array(UInt32), f Array(Tuple(g String, h Map(String, Array(Tuple(i String, j UInt64))))), k Date), l Nullable(String))) ENGINE=Memory;
DESCRIBE TABLE test FORMAT TSVRaw SETTINGS print_pretty_type_names=1;
a Tuple(
b String,
c Tuple(
d Nullable(UInt64),
e Array(UInt32),
f Array(Tuple(
g String,
h Map(
String,
Array(Tuple(
i String,
j UInt64
))
)
)),
k Date
),
l Nullable(String)
)
Prioridad de la consulta. 1: la más alta; cuanto mayor sea el valor, menor será la prioridad; 0: no se usan prioridades.
Especifica el nombre de la base de datos que utiliza el dialecto ‘promql’. Una cadena vacía indica la base de datos actual.
Aliases: evaluation_time
Establece el momento de evaluación que se usará con el dialecto promql. ‘auto’ significa la hora actual.
Especifica el nombre de la tabla TimeSeries utilizada por el dialecto ‘promql’.
push_external_roles_in_interserver_queries
Permite enviar roles de usuario desde el nodo de origen a otros nodos al ejecutar una consulta.
query_cache_compress_entries
Comprime las entradas de la caché de consultas. Reduce el consumo de memoria de la caché de consultas a costa de ralentizar las inserciones y lecturas.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
query_cache_for_subqueries
Si está activado, los resultados de las subconsultas pueden escribirse en la caché de consultas y leerse desde ella. Esto permite propagar use_query_cache a todas las subconsultas.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
La cantidad máxima de resultados de consulta que el usuario actual puede almacenar en la caché de consultas. 0 significa que no hay límite.
Valores posibles:
query_cache_max_size_in_bytes
La cantidad máxima de memoria (en bytes) que el usuario actual puede asignar a la caché de consultas. 0 significa que no hay límite.
Valores posibles:
- Entero mayor o igual que 0.
query_cache_min_query_duration
Duración mínima, en milisegundos, que debe tener una consulta para que su resultado se almacene en la caché de consultas.
Posibles valores:
query_cache_min_query_runs
Número mínimo de veces que debe ejecutarse una consulta SELECT antes de que su resultado se almacene en la caché de consultas.
Posibles valores:
- Entero mayor o igual que 0.
query_cache_nondeterministic_function_handling
Controla cómo la caché de consultas gestiona las consultas SELECT con funciones no deterministas como rand() o now().
Valores posibles:
'throw' - Lanza una excepción y no almacena en caché el resultado de la consulta.
'save' - Almacena en caché el resultado de la consulta.
'ignore' - No almacena en caché el resultado de la consulta y no lanza ninguna excepción.
query_cache_share_between_users
Si está activado, el resultado de las consultas SELECT almacenado en la query cache puede ser leído por otros usuarios.
No se recomienda habilitar esta configuración por motivos de seguridad.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
query_cache_squash_partial_results
Combina los bloques de resultados parciales en bloques del tamaño de max_block_size. Reduce el rendimiento de las inserciones en la query cache, pero mejora la capacidad de compresión de las entradas de caché (consulta query_cache_compress-entries).
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
query_cache_system_table_handling
Controla cómo la caché de consultas gestiona las consultas SELECT realizadas sobre tablas del sistema, es decir, tablas de las bases de datos system.* e information_schema.*.
Valores posibles:
'throw' - Lanza una excepción y no almacena el resultado de la consulta en caché.
'save' - Almacena el resultado de la consulta en caché.
'ignore' - No almacena el resultado de la consulta en caché ni lanza una excepción.
Una cadena que actúa como etiqueta para las entradas de la caché de consultas.
La caché de consultas considera distintas las mismas consultas con etiquetas diferentes.
Valores posibles:
Transcurrido este tiempo, en segundos, las entradas de la caché de consultas caducan.
Valores posibles:
- Número entero positivo >= 0.
query_metric_log_interval
El intervalo, en milisegundos, en el que se recopila query_metric_log para cada consulta.
Si se establece en cualquier valor negativo, tomará el valor collect_interval_milliseconds de la configuración de query_metric_log o, si no está presente, usará 1000 de forma predeterminada.
Para deshabilitar la recopilación de una sola consulta, establezca query_metric_log_interval en 0.
Valor predeterminado: -1
query_plan_aggregation_in_order
Activa la optimización de agregación en orden a nivel del plan de consulta.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para depuración. La configuración puede cambiar en el futuro de forma incompatible con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Desactivar
- 1 - Activar
query_plan_convert_any_join_to_semi_or_anti_join
Permite convertir ANY JOIN en SEMI o ANTI JOIN si el filtro posterior a JOIN siempre se evalúa como falso para las filas con coincidencia o sin coincidencia
query_plan_convert_join_to_in
Permite convertir JOIN en una subconsulta con IN si las columnas de salida están asociadas únicamente a la tabla izquierda. Puede producir resultados incorrectos con JOIN que no sean ANY (p. ej., ALL JOIN, que es el valor predeterminado).
query_plan_convert_outer_join_to_inner_join
Permite convertir OUTER JOIN en INNER JOIN si el filtro después de JOIN siempre descarta los valores por defecto
query_plan_direct_read_from_text_index
Permite aplicar el filtrado de búsqueda de texto completo usando únicamente el índice de texto invertido en el plan de consulta.
query_plan_display_internal_aliases
Muestra los alias internos (como __table1) en EXPLAIN PLAN en lugar de los especificados en la consulta original.
query_plan_enable_multithreading_after_window_functions
Habilita el procesamiento multihilo después de evaluar las funciones de ventana para permitir el procesamiento de flujo en paralelo
query_plan_enable_optimizations
Activa o desactiva la optimización de consultas a nivel del plan de consulta.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Desactiva todas las optimizaciones a nivel del plan de consulta
- 1 - Activa las optimizaciones a nivel del plan de consulta (pero las optimizaciones individuales aún pueden desactivarse mediante sus configuraciones específicas)
query_plan_execute_functions_after_sorting
Activa o desactiva una optimización a nivel del plan de consulta que desplaza las expresiones para que se ejecuten después de los pasos de ordenación.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de maneras incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
query_plan_filter_push_down
Activa o desactiva una optimización a nivel del plan de consulta que empuja los filtros hacia abajo en el plan de ejecución.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Desactivar
- 1 - Activar
query_plan_join_shard_by_pk_ranges
Aplica sharding a JOIN si las claves de JOIN contienen un prefijo de PRIMARY KEY en ambas tablas. Compatible con los algoritmos hash, parallel_hash y full_sorting_merge. Normalmente no acelera las consultas, pero puede reducir el consumo de memoria.
query_plan_join_swap_table
Determina qué lado del join debe ser la tabla de construcción (también llamada interna, la que se inserta en la tabla hash para un hash join) en el plan de consulta. Esta configuración solo es compatible con la strictness ALL de JOIN con la cláusula JOIN ON. Los valores posibles son:
- ‘auto’: Deja que el planificador decida qué tabla usar como tabla de construcción.
- ‘false’: No intercambiar nunca las tablas (la tabla derecha es la tabla de construcción).
- ‘true’: Intercambiar siempre las tablas (la tabla izquierda es la tabla de construcción).
query_plan_lift_up_array_join
Activa o desactiva una optimización a nivel del plan de consulta que mueve los ARRAY JOIN a una posición superior en el plan de ejecución.
Solo tiene efecto si el ajuste query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
Activa o desactiva una optimización a nivel del plan de consulta que mueve subárboles más grandes del plan de consulta a union para permitir optimizaciones adicionales.
Solo surte efecto si el ajuste query_plan_enable_optimizations es 1.
Este es un ajuste para expertos que los desarrolladores solo deben usar para depuración. El ajuste puede cambiar en el futuro de maneras incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
query_plan_max_limit_for_lazy_materialization
Controla el valor límite máximo que permite usar el plan de consulta para la optimización de materialización diferida. Si es cero, no hay límite.
query_plan_max_limit_for_top_k_optimization
Controla el valor máximo del límite que permite evaluar el plan de consulta para la optimización TopK usando el índice de omisión minmax y el filtrado dinámico por umbral. Si es cero, no hay límite.
query_plan_max_optimizations_to_apply
Limita el número total de optimizaciones aplicadas al plan de consulta; consulte la configuración query_plan_enable_optimizations.
Es útil para evitar tiempos de optimización excesivos en consultas complejas.
En la consulta EXPLAIN PLAN, se dejan de aplicar optimizaciones una vez alcanzado este límite y se devuelve el plan tal cual.
En la ejecución normal de consultas, si el número real de optimizaciones supera esta configuración, se lanza una excepción.
Esta es una configuración de nivel experto que solo deberían usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
query_plan_max_step_description_length
Longitud máxima de la descripción del paso en EXPLAIN PLAN.
query_plan_merge_expressions
Activa o desactiva una optimización a nivel del plan de consulta que fusiona filtros consecutivos.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que los desarrolladores solo deben usar para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
query_plan_merge_filter_into_join_condition
Permite integrar el filtro en la condición de JOIN y convertir CROSS JOIN en INNER.
Permite combinar filtros en el plan de consulta.
query_plan_optimize_join_order_algorithm
Especifica qué algoritmos de orden de JOIN se intentan durante la optimización del plan de consulta. Están disponibles los siguientes algoritmos:
- ‘greedy’ - algoritmo voraz básico - funciona rápido, pero puede que no produzca el mejor orden de JOIN
- ‘dpsize’ - implementa el algoritmo DPsize, actualmente solo para Inner joins - considera todos los órdenes de JOIN posibles y encuentra el más óptimo, pero puede ser lento para consultas con muchas tablas y predicados de JOIN.
Se pueden especificar varios algoritmos, por ejemplo, ‘dpsize,greedy’.
query_plan_optimize_join_order_limit
Optimiza el orden de los JOIN dentro de la misma subconsulta. Actualmente, solo se admite en casos muy limitados.
El valor es el número máximo de tablas que se pueden optimizar.
query_plan_optimize_join_order_randomize
Cuando es distinto de cero, el optimizador del orden de join utiliza cardinalidades y NDV generados aleatoriamente en lugar de estadísticas reales.
Cuando se establece en 1, se genera una semilla aleatoria; cuando se establece en un valor > 1, ese valor se usa directamente como semilla.
Su propósito es realizar pruebas para detectar errores provocados por distintos órdenes de join.
query_plan_optimize_lazy_final
Optimiza la lectura con FINAL en ReplacingMergeTree creando un conjunto de claves primarias y utilizándolo para el análisis de índices.
query_plan_optimize_lazy_materialization
Utiliza el plan de consulta en la optimización de la materialización diferida.
query_plan_optimize_prewhere
Permite trasladar el filtro a la expresión PREWHERE en los storages compatibles
query_plan_push_down_limit
Activa o desactiva una optimización a nivel del plan de consulta que desplaza las cláusulas LIMIT a niveles inferiores del plan de ejecución.
Solo tiene efecto si el ajuste query_plan_enable_optimizations es 1.
Este es un ajuste de nivel experto que solo deberían usar los desarrolladores para depuración. El ajuste puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
Activa o desactiva la optimización de lectura en orden a nivel del plan de consulta.
Solo surte efecto si el ajuste query_plan_enable_optimizations es 1.
Este es un ajuste de nivel experto que solo deben usar los desarrolladores para tareas de depuración. El ajuste puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Desactivar
- 1 - Activar
query_plan_read_in_order_through_join
Mantiene la lectura en orden desde la tabla izquierda en las operaciones JOIN, lo que pueden aprovechar los pasos posteriores.
query_plan_remove_redundant_distinct
Activa o desactiva una optimización a nivel del plan de consulta que elimina pasos DISTINCT redundantes.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deberían usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
query_plan_remove_redundant_sorting
Activa o desactiva una optimización a nivel del plan de consulta que elimina pasos de ordenación redundantes, por ejemplo, en subconsultas.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. Esta configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitar
- 1 - Habilitar
query_plan_remove_unused_columns
Activa o desactiva una optimización a nivel del plan de consulta que intenta eliminar las columnas no utilizadas (tanto de entrada como de salida) de los pasos del plan de consulta.
Solo tiene efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
query_plan_reuse_storage_ordering_for_window_functions
Alias: optimize_read_in_window_order
Activa o desactiva una optimización a nivel del plan de consulta que utiliza el ordenamiento del almacenamiento al ordenar para funciones de ventana.
Solo tiene efecto si el ajuste query_plan_enable_optimizations es 1.
Este es un ajuste de nivel experto que solo deben usar los desarrolladores para depuración. El ajuste puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Desactivar
- 1 - Activar
Esta es una configuración de nivel experto que solo los desarrolladores deberían usar para tareas de depuración. La configuración puede cambiar en el futuro de formas no compatibles con versiones anteriores o eliminarse.
Activa o desactiva una optimización a nivel del plan de consulta que divide los filtros en expresiones.
Solo surte efecto si la configuración query_plan_enable_optimizations es 1.
Posibles valores:
- 0 - Deshabilitar
- 1 - Habilitar
query_plan_text_index_add_hint
Permite añadir una sugerencia (un predicado adicional) al filtrado generado a partir del índice de texto invertido en el plan de consulta.
query_plan_top_k_through_join
Activa una optimización a nivel del plan de consulta que desplaza ORDER BY ... LIMIT n por debajo de un join cuando la clave de ordenación solo hace referencia a columnas del lado preservado por el join (LEFT/RIGHT). Restringe cuántas filas debe producir la entrada del lado preservado antes de hacer el join.
Solo tiene efecto si la configuración query_plan_enable_optimizations es 1.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
query_plan_try_use_vector_search
Activa o desactiva una optimización a nivel del plan de consulta que intenta utilizar el índice de similitud vectorial.
Solo tiene efecto si la configuración query_plan_enable_optimizations es 1.
Esta es una configuración de nivel experto que los desarrolladores solo deberían usar para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
Valores posibles:
- 0 - Desactivar
- 1 - Activar
query_profiler_cpu_time_period_ns
Establece el período de un temporizador del reloj de la CPU del perfilador de consultas. Este temporizador cuenta solo el tiempo de CPU.
Valores posibles:
-
Un número entero positivo de nanosegundos.
Valores recomendados:
- 10000000 (100 veces por segundo) nanosegundos o más para consultas individuales.
- 1000000000 (una vez por segundo) para el perfilado en todo el clúster.
-
0 para desactivar el temporizador.
Véase también:
query_profiler_real_time_period_ns
Establece el período de un temporizador de reloj real del perfilador de consultas. El temporizador de reloj real mide el tiempo real transcurrido.
Posibles valores:
-
Número entero positivo, en nanosegundos.
Valores recomendados:
- 10000000 (100 veces por segundo) nanosegundos o menos para consultas individuales.
- 1000000000 (una vez por segundo) para el perfilado de todo el clúster.
-
0 para desactivar el temporizador.
Véase también:
Valor predeterminado de Cloud: 3000000000.
El tiempo de espera en la cola de solicitudes si el número de solicitudes concurrentes supera el máximo.
El tiempo de espera para leer desde RabbitMQ antes de volver a intentarlo.
read_backoff_max_throughput
Ajuste para reducir el número de hilos en caso de lecturas lentas. Cuenta eventos cuando el ancho de banda de lectura es inferior a esa cantidad de bytes por segundo.
read_backoff_min_concurrency
Configuración para intentar mantener el número mínimo de hilos en caso de lecturas lentas.
Configuración para reducir la cantidad de hilos en caso de lecturas lentas. La cantidad de eventos tras la cual se reducirá la cantidad de hilos.
read_backoff_min_interval_between_events_ms
Configuración para reducir el número de hilos en caso de lecturas lentas. Ignore el evento si desde el anterior ha transcurrido menos de un determinado intervalo de tiempo.
read_backoff_min_latency_ms
Configuración para reducir el número de hilos en caso de lecturas lentas. Solo se tienen en cuenta las lecturas que hayan tardado al menos ese tiempo.
read_from_distributed_cache_if_exists_otherwise_bypass_cache
Solo tiene efecto en ClickHouse Cloud. Es igual que read_from_filesystem_cache_if_exists_otherwise_bypass_cache, pero para la caché distribuida.
read_from_filesystem_cache_if_exists_otherwise_bypass_cache
Permite usar la caché del sistema de archivos en modo pasivo: aprovechar las entradas de caché existentes, pero sin añadir más entradas a la caché. Si establece esta configuración para consultas ad hoc pesadas y la deja deshabilitada para consultas cortas en tiempo real, podrá evitar que las consultas demasiado pesadas saturen la caché y mejorar la eficiencia general del sistema.
read_from_page_cache_if_exists_otherwise_bypass_cache
Usa la caché de páginas en espacio de usuario en modo pasivo, de forma similar a read_from_filesystem_cache_if_exists_otherwise_bypass_cache.
read_in_order_two_level_merge_threshold
Número mínimo de partes que se deben leer para ejecutar el paso de fusión preliminar durante la lectura multihilo en el orden de la clave primaria.
read_in_order_use_buffering
Usa el búfer antes de la fusión al leer en orden de clave primaria. Aumenta el paralelismo de la ejecución de consultas
read_in_order_use_virtual_row
Usa una fila virtual al leer siguiendo el orden de la clave primaria o de su función monótona. Es útil al buscar entre múltiples partes, ya que solo se accede a las relevantes.
read_in_order_use_virtual_row_per_block
Cuando se habilita junto con read_in_order_use_virtual_row, emite una fila virtual después de leer cada bloque (no solo al principio de cada parte).
Esto permite que MergingSortedTransform repriorice las fuentes con más frecuencia, lo que resulta útil cuando los filtros posteriores descartan muchas filas y los datos se distribuyen de forma desigual entre las partes.
Ten en cuenta que deshabilita la optimización read_in_order_use_buffering y la fusión preliminar (read_in_order_two_level_merge_threshold) para la lectura.
Qué hacer si se supera el límite.
Establece lo que ocurre cuando el volumen de datos leídos supera uno de los límites de hoja.
Opciones posibles:
throw: lanzar una excepción (predeterminado).
break: detener la ejecución de la consulta y devolver el resultado parcial.
Prioridad para la lectura de datos desde el sistema de archivos local o remoto. Solo es compatible con el método ‘pread_threadpool’ para el sistema de archivos local y con el método threadpool para el sistema de archivos remoto.
read_through_distributed_cache
Solo tiene efecto en ClickHouse Cloud. Permite leer desde la caché distribuida
0: sin restricciones de solo lectura. 1: solo solicitudes de lectura, así como cambios en configuraciones permitidas explícitamente. 2: solo solicitudes de lectura, así como cambios en las configuraciones, excepto en la configuración ‘readonly’.
Tiempo de espera de la conexión para recibir el primer paquete de datos o un paquete con progreso positivo desde una réplica
Tiempo de espera para recibir datos de la red, en segundos. Si no se recibe ningún byte durante este intervalo, se lanza una excepción. Si establece esta configuración en el cliente, también se configurará send_timeout para el socket en el extremo correspondiente de la conexión en el servidor.
recursive_cte_max_steps_in_type_inference
Número máximo de iteraciones para inferir tipos de columna en CTE recursivas. Los tipos de columna se determinan aplicando getLeastSupertype de forma iterativa a las partes no recursiva y recursiva de UNION ALL hasta alcanzar la convergencia. Establézcalo en 0 para desactivar el ensanchamiento de tipos y usar solo los tipos de la parte no recursiva.
regexp_dict_allow_hyperscan
Permite que el diccionario regexp_tree use la biblioteca Hyperscan.
regexp_dict_flag_case_insensitive
Usa coincidencias sin distinción entre mayúsculas y minúsculas para un diccionario regexp_tree. Se puede sobrescribir en expresiones individuales con (?i) y (?-i).
Permite que ’.’ coincida con caracteres de salto de línea en un diccionario regexp_tree.
regexp_max_matches_per_row
Establece el número máximo de coincidencias de una sola expresión regular por fila. Úselo para protegerse frente a la sobrecarga de memoria al usar una expresión regular codiciosa en la función extractAllGroupsHorizontal.
Valores posibles:
reject_expensive_hyperscan_regexps
Rechaza los patrones cuya evaluación con hyperscan probablemente sea costosa (debido a la explosión de estados del NFA)
remerge_sort_lowered_memory_bytes_ratio
Si el uso de memoria después de la recombinación no se reduce en esta proporción, la recombinación se deshabilitará.
remote_filesystem_read_method
Método para leer datos desde el sistema de archivos remoto; puede ser uno de los siguientes: read, threadpool.
remote_filesystem_read_prefetch
Debe usar prefetching al leer datos de un sistema de archivos remoto.
remote_fs_read_backoff_max_tries
Número máximo de reintentos de lectura con backoff
remote_fs_read_max_backoff_ms
Tiempo máximo de espera al intentar leer datos de un disco remoto
remote_read_min_bytes_for_seek
Cantidad mínima de bytes necesaria para que una lectura remota (url, s3) realice seek, en lugar de leer con ignore.
rename_files_after_processing
-
Tipo: String
-
Valor predeterminado: Cadena vacía
Esta configuración permite especificar un patrón de cambio de nombre para los archivos procesados por la función de tabla file. Cuando esta opción está configurada, todos los archivos leídos por la función de tabla file se renombrarán según el patrón especificado con marcadores de posición, solo si el procesamiento de los archivos se completó correctamente.
%a — Nombre completo del archivo original (p. ej., “sample.csv”).
%f — Nombre del archivo original sin la extensión (p. ej., “sample”).
%e — Extensión del archivo original con el punto (p. ej., “.csv”).
%t — Marca de tiempo (en microsegundos).
%% — Signo de porcentaje (”%”).
-
Opción:
--rename_files_after_processing="processed_%f_%t%e"
-
Consulta:
SELECT * FROM file('sample.csv')
Si la lectura de sample.csv se realiza correctamente, el archivo pasará a llamarse processed_sample_1683473210851438.csv
Al usar la interfaz HTTP, se puede pasar el parámetro ‘query_id’. Puede ser cualquier cadena que sirva como identificador de la consulta.
Si en ese momento ya existe una consulta del mismo usuario con el mismo ‘query_id’, el comportamiento depende del parámetro ‘replace_running_query’.
0 (predeterminado) – Lanzar una excepción (no permitir que la consulta se ejecute si ya hay una consulta con el mismo ‘query_id’ en ejecución).
1 – Cancelar la consulta anterior y empezar a ejecutar la nueva.
Establezca este parámetro en 1 para implementar sugerencias para condiciones de segmentación. Después de introducir el siguiente carácter, si la consulta anterior aún no ha terminado, debe cancelarse.
replace_running_query_max_wait_ms
El tiempo de espera para que finalice la consulta en ejecución con el mismo query_id cuando la configuración replace_running_query está activa.
Valores posibles:
- Entero positivo.
- 0 — Lanza una excepción y no permite ejecutar una nueva consulta si el servidor ya está ejecutando una consulta con el mismo
query_id.
replication_wait_for_inactive_replica_timeout
Especifica cuánto tiempo (en segundos) se debe esperar para que las réplicas inactivas ejecuten consultas ALTER, OPTIMIZE o TRUNCATE.
Posibles valores:
0 — No esperar.
- Entero negativo — Esperar indefinidamente.
- Entero positivo — Número de segundos que se debe esperar.
restore_replace_external_dictionary_source_to_null
Reemplaza las fuentes externas de diccionario por Null al restaurar. Útil para pruebas
restore_replace_external_engines_to_null
Con fines de prueba. Sustituye todos los motores externos por Null para evitar iniciar conexiones externas.
restore_replace_external_table_functions_to_null
Con fines de prueba. Sustituye todas las funciones de tabla externas por Null para no iniciar conexiones externas.
restore_replicated_merge_tree_to_shared_merge_tree
Reemplaza el motor de tabla ReplicatedMergeTree por SharedMergeTree durante RESTORE.
Valor predeterminado de Cloud: 1.
Valor predeterminado en Cloud: throw
Define qué hacer si el volumen del resultado supera uno de los límites.
Valores posibles:
throw: lanzar una excepción (predeterminado).
break: detener la ejecución de la consulta y devolver el resultado parcial, como si los
datos de origen se hubieran agotado.
Usar ‘break’ es similar a usar LIMIT. Break interrumpe la ejecución solo a nivel de
bloque. Esto significa que la cantidad de filas devueltas será mayor que
max_result_rows, será un múltiplo de max_block_size
y dependerá de max_threads.
Ejemplo
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';
SELECT *
FROM numbers_mt(100000)
FORMAT Null;
rewrite_count_distinct_if_with_count_distinct_implementation
Permite reescribir countDistcintIf mediante la configuración count_distinct_implementation.
Posibles valores:
- true — Se permite.
- false — No se permite.
Reescribe expresiones como ‘x IN subquery’ como JOIN. Esto puede ser útil para optimizar toda la consulta mediante la reordenación de JOIN.
Si está habilitado, ClickHouse proporcionará el valor exacto de la estadística rows_before_aggregation; representa el número de filas leídas antes de la agregación
Permite la copia multiparte en S3.
s3_allow_parallel_part_upload
Usa varios hilos para la carga multiparte en S3. Esto puede provocar un uso de memoria ligeramente mayor
s3_check_objects_after_upload
Comprueba cada objeto cargado en S3 con una solicitud HEAD para asegurarse de que la carga se haya completado correctamente
Tiempo de espera de conexión al host de los discos S3.
s3_create_new_file_on_insert
Habilita o deshabilita la creación de un archivo nuevo en cada inserción en tablas del motor S3. Si está habilitado, en cada inserción se creará un nuevo objeto de S3 con la clave, siguiendo un patrón similar a este:
inicial: data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz, etc.
Valores posibles:
- 0 — la consulta
INSERT crea un archivo nuevo o falla si el archivo ya existe y s3_truncate_on_insert no está establecido.
- 1 — la consulta
INSERT crea un archivo nuevo en cada inserción usando un sufijo (a partir del segundo) si s3_truncate_on_insert no está establecido.
Consulta más detalles aquí.
No calcule una suma de comprobación al enviar un archivo a S3. Esto acelera las escrituras al evitar pasadas de procesamiento excesivas sobre el archivo. En general, es seguro, ya que los datos de las tablas MergeTree de todos modos llevan sumas de comprobación en ClickHouse y, cuando se accede a S3 mediante HTTPS, la capa TLS ya proporciona integridad durante la transferencia por la red. Aun así, las sumas de comprobación adicionales en S3 aportan una defensa en profundidad.
s3_ignore_file_doesnt_exist
Ignora la ausencia de un archivo si no existe al leer ciertas claves.
Valores posibles:
- 1 —
SELECT devuelve un resultado vacío.
- 0 —
SELECT lanza una excepción.
Número máximo de archivos que puede devolver por lote la solicitud ListObject
El número máximo de conexiones por servidor.
Número máximo de solicitudes que se pueden emitir simultáneamente antes de alcanzar el límite de solicitudes por segundo. De forma predeterminada (0), equivale a s3_max_get_rps
Límite de solicitudes GET por segundo a S3 antes de aplicar throttling. Cero significa sin límite.
s3_max_inflight_parts_for_one_file
El número máximo de partes cargadas simultáneamente en una solicitud de carga multiparte. 0 significa ilimitado.
Número máximo de parte para la carga de partes en S3.
Número máximo de solicitudes que pueden emitirse simultáneamente antes de alcanzar el límite de solicitudes por segundo. De forma predeterminada, (0) es igual a s3_max_put_rps
Límite de solicitudes PUT a S3 por segundo antes de aplicar throttling. Cero significa sin límite.
s3_max_single_operation_copy_size
Tamaño máximo para una única operación de copia en S3. Esta configuración solo se utiliza si s3_allow_multipart_copy es true.
s3_max_single_part_upload_size
El tamaño máximo del objeto que se puede subir a S3 mediante una carga de una sola parte.
s3_max_single_read_retries
El número máximo de reintentos durante una lectura única de S3.
s3_max_unexpected_write_error_retries
El número máximo de reintentos en caso de errores inesperados durante la escritura en S3.
El tamaño máximo de cada parte durante una subida multiparte a S3.
El tamaño mínimo de la parte que se va a subir durante una carga multiparte a S3.
Número máximo de valores de _path que pueden extraerse de los filtros de la consulta para utilizarlos en la iteración de archivos
en lugar del listado con glob. 0 significa deshabilitado.
Tiempo de espera por inactividad para enviar y recibir datos hacia/desde S3. Se produce un error si una única llamada TCP de lectura o escritura queda bloqueada durante este tiempo.
Activa o desactiva la omisión de archivos vacíos en las tablas del motor S3.
Valores posibles:
- 0 —
SELECT lanza una excepción si el archivo vacío no es compatible con el formato solicitado.
- 1 —
SELECT devuelve un resultado vacío para un archivo vacío.
s3_slow_all_threads_after_network_error
Cuando se establece en true, todos los hilos que ejecutan solicitudes a S3 hacia el mismo endpoint de copia de seguridad se ralentizan
después de que una sola solicitud a S3 encuentre un error de red que permita reintento, como un timeout de socket.
Cuando se establece en false, cada hilo gestiona el backoff de las solicitudes a S3 de forma independiente de los demás.
s3_strict_upload_part_size
El tamaño exacto de la parte que se va a subir durante la subida multiparte a S3 (algunas implementaciones no admiten partes de tamaño variable).
s3_throw_on_zero_files_match
Genera un error cuando la solicitud ListObjects no encuentra ningún archivo
Activa o desactiva el truncado antes de las inserciones en tablas con el motor S3. Si está desactivado, se lanzará una excepción al intentar insertar si ya existe un objeto en S3.
Valores posibles:
- 0 — la consulta
INSERT crea un archivo nuevo o falla si el archivo ya existe y no se ha establecido s3_create_new_file_on_insert.
- 1 — la consulta
INSERT reemplaza el contenido existente del archivo con los datos nuevos.
Consulta más detalles aquí.
s3_upload_part_size_multiply_factor
Multiplica s3_min_upload_part_size por este factor cada vez que se hayan subido s3_multiply_parts_count_threshold partes en una sola escritura en S3.
s3_upload_part_size_multiply_parts_count_threshold
Cada vez que se haya subido este número de partes a S3, s3_min_upload_part_size se multiplica por s3_upload_part_size_multiply_factor.
Obliga a usar el estilo de endpoint de S3. Valores posibles: auto, virtual_hosted, path.
Cuando se establece en true, en todas las solicitudes a S3 los dos primeros intentos se realizan con tiempos de espera de envío y recepción reducidos.
Cuando se establece en false, todos los intentos se realizan con los mismos tiempos de espera.
s3_validate_request_settings
Habilita la validación de la configuración de solicitudes de S3.
Valores posibles:
- 1 — validar la configuración.
- 0 — no validar la configuración.
s3queue_default_zookeeper_path
Prefijo de ruta de ZooKeeper predeterminado para el motor S3Queue
s3queue_enable_logging_to_s3queue_log
Habilita la escritura en system.s3queue_log. El valor puede sobrescribirse para cada tabla mediante la configuración de la tabla
s3queue_keeper_fault_injection_probability
Probabilidad de inyección de fallos en Keeper para S3Queue.
Migra la estructura antigua de metadatos de la tabla S3Queue a una nueva estructura
schema_inference_cache_require_modification_time_for_url
Usa el esquema de la caché para URL con validación de la hora de la última modificación (para URL con el encabezado Last-Modified)
schema_inference_use_cache_for_azure
Usa la caché durante la inferencia de esquemas al usar la función de tabla de Azure
schema_inference_use_cache_for_file
Usa caché en la inferencia de esquemas al utilizar la función de tabla File
schema_inference_use_cache_for_hdfs
Usa la caché en la inferencia de esquemas al utilizar la función de tabla hdfs
schema_inference_use_cache_for_s3
Usa la caché durante la inferencia de esquema al usar la función de tabla S3
schema_inference_use_cache_for_url
Utiliza la caché en la inferencia de esquemas al usar la función de tabla url
secondary_indices_enable_bulk_filtering
Habilita el algoritmo de filtrado masivo para índices. Se espera que siempre sea mejor, pero mantenemos esta configuración por compatibilidad y control.
select_sequential_consistency
Esta configuración se comporta de forma distinta en SharedMergeTree y ReplicatedMergeTree; consulta SharedMergeTree consistency para obtener más información sobre el comportamiento de select_sequential_consistency en SharedMergeTree.
Habilita o deshabilita la consistencia secuencial para las consultas SELECT. Requiere que insert_quorum_parallel esté deshabilitado (está habilitado de forma predeterminada).
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
Uso
Cuando la consistencia secuencial está habilitada, ClickHouse permite al cliente ejecutar la consulta SELECT solo en aquellas réplicas que contienen los datos de todas las consultas INSERT anteriores ejecutadas con insert_quorum. Si el cliente apunta a una réplica parcial, ClickHouse generará una excepción. La consulta SELECT no incluirá datos que aún no se hayan escrito en el quórum de réplicas.
Cuando insert_quorum_parallel está habilitado (valor predeterminado), select_sequential_consistency no funciona. Esto se debe a que las consultas paralelas INSERT pueden escribirse en distintos conjuntos de réplicas del quórum, por lo que no hay garantía de que una sola réplica haya recibido todas las escrituras.
Vea también:
Envía los logs de texto del servidor al cliente con el nivel mínimo especificado. Valores válidos: ‘trace’, ‘debug’, ‘information’, ‘warning’, ‘error’, ‘fatal’, ‘none’
Envía los logs de texto del servidor cuya fuente coincida con la expresión regular especificada. Si está vacío, se incluyen todas las fuentes.
Habilita o deshabilita el envío de paquetes de ProfileEvents al cliente.
Esto se puede deshabilitar para reducir el tráfico de red para los clientes que no requieren eventos de perfil.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Activa o desactiva las cabeceras de respuesta HTTP X-ClickHouse-Progress en las respuestas de clickhouse-server.
Para obtener más información, lea la descripción de la interfaz HTTP.
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
send_table_structure_on_insert_with_inline_data
Si está deshabilitada y la consulta INSERT contiene datos incluidos en la propia consulta, el servidor no enviará al cliente la estructura de la tabla ni los valores predeterminados de las columnas a través del protocolo nativo. En su lugar, el servidor analizará por sí mismo esos datos. Esto puede mejorar el rendimiento de muchas inserciones pequeñas a través del protocolo nativo.
Tiempo de espera para enviar datos por la red, en segundos. Si un cliente necesita enviar datos pero no puede enviar ningún byte durante este intervalo, se produce una excepción. Si configura este ajuste en el cliente, también se establecerá receive_timeout para el socket en el extremo correspondiente de la conexión en el servidor.
Serializa el plan de ejecución de la consulta para el procesamiento distribuido
serialize_string_in_memory_with_zero_byte
Serializa los valores String durante la agregación con un byte nulo al final. Actívela para mantener la compatibilidad al consultar un clúster con versiones incompatibles.
Establece la zona horaria implícita de la sesión o consulta actual.
La zona horaria implícita es la que se aplica a los valores de tipo DateTime/DateTime64 que no tienen una zona horaria especificada explícitamente.
Este ajuste tiene prioridad sobre la zona horaria implícita configurada globalmente (a nivel del servidor).
Un valor de ” (cadena vacía) significa que la zona horaria implícita de la sesión o consulta actual es igual a la zona horaria del servidor.
Puede usar las funciones timeZone() y serverTimeZone() para obtener la zona horaria de la sesión y la del servidor.
Valores posibles:
- Cualquier nombre de zona horaria de
system.time_zones, por ejemplo, Europe/Berlin, UTC o Zulu
Ejemplos:
SELECT timeZone(), serverTimeZone() FORMAT CSV
"Europe/Berlin","Europe/Berlin"
SELECT timeZone(), serverTimeZone() SETTINGS session_timezone = 'Asia/Novosibirsk' FORMAT CSV
"Asia/Novosibirsk","Europe/Berlin"
Asigne la zona horaria de la sesión ‘America/Denver’ al DateTime interno sin especificar explícitamente una zona horaria:
SELECT toDateTime64(toDateTime64('1999-12-12 23:23:23.123', 3), 3, 'Europe/Zurich') SETTINGS session_timezone = 'America/Denver' FORMAT TSV
1999-12-13 07:23:23.123
No todas las funciones que analizan DateTime/DateTime64 respetan session_timezone. Esto puede dar lugar a errores sutiles.
Consulte el siguiente ejemplo y su explicación.
CREATE TABLE test_tz (`d` DateTime('UTC')) ENGINE = Memory AS SELECT toDateTime('2000-01-01 00:00:00', 'UTC');
SELECT *, timeZone() FROM test_tz WHERE d = toDateTime('2000-01-01 00:00:00') SETTINGS session_timezone = 'Asia/Novosibirsk'
0 rows in set.
SELECT *, timeZone() FROM test_tz WHERE d = '2000-01-01 00:00:00' SETTINGS session_timezone = 'Asia/Novosibirsk'
┌───────────────────d─┬─timeZone()───────┐
│ 2000-01-01 00:00:00 │ Asia/Novosibirsk │
└─────────────────────┴──────────────────┘
Esto sucede debido a distintos procesos de análisis:
toDateTime(), sin una zona horaria especificada explícitamente, usado en la primera consulta SELECT, respeta la configuración session_timezone y la zona horaria global.
- En la segunda consulta, un DateTime se interpreta a partir de un String y hereda el tipo y la zona horaria de la columna existente
d. Por lo tanto, no se respetan la configuración session_timezone ni la zona horaria global.
Véase también
Establece qué ocurre cuando la cantidad de datos supera uno de los límites.
Valores posibles:
throw: lanzar una excepción (valor predeterminado).
break: detener la ejecución de la consulta y devolver el resultado parcial, como si se hubieran agotado los datos de origen.
shared_merge_tree_sequential_consistency_initial_parts_update_backoff_ms
Retardo inicial, en milisegundos, para la actualización de partes al usar select_sequential_consistency con SharedMergeTree. Solo disponible en ClickHouse Cloud.
shared_merge_tree_sequential_consistency_max_parts_update_backoff_ms
Tiempo máximo de backoff, en milisegundos, para la actualización de partes al usar select_sequential_consistency con SharedMergeTree. Solo está disponible en ClickHouse Cloud.
shared_merge_tree_sequential_consistency_parts_update_max_retries
Número máximo de reintentos para actualizar las partes al usar select_sequential_consistency con SharedMergeTree. Solo disponible en ClickHouse Cloud.
shared_merge_tree_sync_parts_on_partition_operations
Sincroniza automáticamente el conjunto de partes de datos tras las operaciones de partición MOVE|REPLACE|ATTACH en tablas SMT. Solo en Cloud
short_circuit_function_evaluation
Permite evaluar las funciones if, multiIf, and y or mediante evaluación de cortocircuito. Esto ayuda a optimizar la ejecución de expresiones complejas en estas funciones y a evitar posibles excepciones (como una división por cero cuando no se esperaba).
Valores posibles:
enable — Habilita la evaluación de cortocircuito para las funciones en las que resulta adecuada (pueden generar una excepción o tener un coste computacional elevado).
force_enable — Habilita la evaluación de cortocircuito para todas las funciones.
disable — Deshabilita la evaluación de cortocircuito.
short_circuit_function_evaluation_for_nulls
Optimiza la evaluación de funciones que devuelven NULL cuando cualquiera de sus argumentos es NULL. Cuando el porcentaje de valores NULL en los argumentos de la función supera el umbral short_circuit_function_evaluation_for_nulls_threshold, el sistema omite evaluar la función fila por fila. En su lugar, devuelve NULL de inmediato para todas las filas, evitando cálculos innecesarios.
short_circuit_function_evaluation_for_nulls_threshold
Umbral de la proporción de valores NULL para ejecutar funciones con argumentos Nullable solo en filas en las que todos los argumentos tienen valores distintos de NULL. Se aplica cuando la configuración short_circuit_function_evaluation_for_nulls está habilitada.
Cuando la proporción de filas que contienen valores NULL con respecto al número total de filas supera este umbral, esas filas con valores NULL no se evaluarán.
show_data_lake_catalogs_in_system_tables
Permite mostrar catálogos de lago de datos en las tablas del sistema.
show_processlist_include_internal
Muestra los procesos auxiliares internos en la salida de la consulta SHOW PROCESSLIST.
Los procesos internos incluyen recargas de diccionarios, recargas de vistas materializadas actualizables, consultas SELECT auxiliares ejecutadas en consultas SHOW ..., y consultas auxiliares CREATE DATABASE ... ejecutadas internamente para gestionar tablas dañadas, entre otros.
show_table_uuid_in_table_create_query_if_not_nil
Configura cómo se muestra la consulta SHOW TABLE.
Valores posibles:
- 0 — La consulta se mostrará sin el UUID de la tabla.
- 1 — La consulta se mostrará con el UUID de la tabla.
single_join_prefer_left_table
Para un único JOIN, en caso de ambigüedad entre identificadores, se prefiere la tabla de la izquierda
skip_redundant_aliases_in_udf
Los alias redundantes se omiten (se sustituyen) en las funciones definidas por el usuario para simplificar su uso.
Posibles valores:
- 1 — Los alias se omiten (se sustituyen) en las UDF.
- 0 — Los alias no se omiten (se sustituyen) en las UDF.
Ejemplo
La diferencia entre tenerlo habilitado o deshabilitado:
Consulta:
SET skip_redundant_aliases_in_udf = 0;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));
EXPLAIN SYNTAX SELECT test_03274(4 + 2);
Resultado:
SELECT ((4 + 2) + 1 AS y, y + 2)
Consulta:
SET skip_redundant_aliases_in_udf = 1;
CREATE FUNCTION IF NOT EXISTS test_03274 AS ( x ) -> ((x + 1 as y, y + 2));
EXPLAIN SYNTAX SELECT test_03274(4 + 2);
Resultado:
SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)
Habilita o deshabilita la omisión silenciosa de segmentos no disponibles.
Un segmento se considera no disponible si ninguna de sus réplicas está disponible. Una réplica no está disponible en los siguientes casos:
-
ClickHouse no puede conectarse a la réplica por cualquier motivo.
Al conectarse a una réplica, ClickHouse realiza varios intentos. Si todos ellos fallan, la réplica se considera no disponible.
-
La réplica no puede resolverse mediante DNS.
Si el hostname de la réplica no puede resolverse mediante DNS, esto puede indicar las siguientes situaciones:
-
El host de la réplica no tiene un registro DNS. Esto puede ocurrir en sistemas con DNS dinámico, por ejemplo, Kubernetes, donde los nodos pueden no resolverse durante una caída, y esto no es un error.
-
Error de configuración. El archivo de configuración de ClickHouse contiene un hostname incorrecto.
Valores posibles:
-
1 — omisión habilitada.
Si un segmento no está disponible, ClickHouse devuelve un resultado basado en datos parciales y no informa de problemas de disponibilidad de nodos.
-
0 — omisión deshabilitada.
Si un segmento no está disponible, ClickHouse lanza una excepción.
sleep_after_receiving_query_ms
Tiempo de espera después de recibir una consulta en TCPHandler
Tiempo de espera durante el envío de datos en TCPHandler
sleep_in_send_tables_status_ms
Tiempo de espera antes de enviar la respuesta de estado de las tablas en TCPHandler
Establece qué ocurre si el número de filas recibidas antes de la ordenación supera uno de los límites.
Valores posibles:
throw: lanzar una excepción.
break: detener la ejecución de la consulta y devolver el resultado parcial.
split_intersecting_parts_ranges_into_layers_final
Divide en capas los rangos de partes superpuestas durante la optimización FINAL
dividir_rangos_de_partes_en_intersectantes_y_no_intersectantes_final
Dividir los rangos de partes en intersectantes y no intersectantes durante la optimización FINAL
splitby_max_substrings_includes_remaining_string
Controla si la función splitBy*() con el argumento max_substrings > 0 incluirá la cadena restante en el último elemento del array de resultados.
Valores posibles:
0 - La cadena restante no se incluirá en el último elemento del array de resultados.
1 - La cadena restante se incluirá en el último elemento del array de resultados. Este es el comportamiento de la función split() de Spark y del método ‘string.split()’ de Python.
stop_refreshable_materialized_views_on_startup
Al iniciar el servidor, evita la programación de las vistas materializadas actualizables, como si se hubiera ejecutado SYSTEM STOP VIEWS. Después, puede iniciarlas manualmente con SYSTEM START VIEWS o SYSTEM START VIEW <name>. También se aplica a las vistas recién creadas. No tiene efecto sobre las vistas materializadas no actualizables.
Método de lectura de datos del archivo de almacenamiento; uno de los siguientes: read, pread, mmap. El método mmap no se aplica a clickhouse-server (está destinado a clickhouse-local).
storage_system_stack_trace_pipe_read_timeout_ms
Tiempo máximo para leer de una tubería y recibir información de los hilos al consultar la tabla system.stack_trace. Esta configuración se utiliza con fines de prueba y no está pensada para que los usuarios la cambien.
Funciona para tablas con streaming en caso de timeout, o cuando un hilo genera max_insert_block_size filas.
El valor predeterminado es 7500.
Cuanto menor sea el valor, con mayor frecuencia se vacían los datos en la tabla. Establecer un valor demasiado bajo provoca un rendimiento deficiente.
stream_like_engine_allow_direct_select
Permite realizar una consulta SELECT directa en los motores Kafka, RabbitMQ, FileLog, Redis Streams, S3Queue, AzureQueue y NATS. Si hay vistas materializadas asociadas, la consulta SELECT no está permitida aunque esta opción esté habilitada.
Si no hay vistas materializadas asociadas, habilitar esta opción permite leer datos. Ten en cuenta que, por lo general, los datos leídos se eliminan de la cola. Para evitarlo, los ajustes relacionados del motor deben configurarse correctamente.
stream_like_engine_insert_queue
Cuando un motor de tipo stream lee de varias colas, el usuario deberá seleccionar una cola en la que insertar al escribir. Se usa en Redis Streams y NATS.
Tiempo de espera al consultar datos desde/hacia almacenamientos de streaming.
system_events_show_zero_values
Permite seleccionar eventos con valor cero de system.events.
Algunos sistemas de monitorización requieren que se les envíen todos los valores de las métricas en cada punto de control, incluso cuando el valor de la métrica es cero.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Ejemplos
Consulta
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
Resultado
Consulta
SET system_events_show_zero_values = 1;
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
Resultado
┌─event────────────────────┬─value─┬─description───────────────────────────────────────────┐
│ QueryMemoryLimitExceeded │ 0 │ Number of times when memory limit exceeded for query. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘
system_metric_log_show_zero_values_in_histograms
Controla si los datos de histogramas con valor cero se escriben en la columna anidada histograms de system.metric_log.
De forma predeterminada, se omiten los histogramas cuyo count total de observaciones es cero y, dentro de cada histograma emitido, también se omiten del map histogram las entradas de bucket sin observaciones. Habilite esta opción para escribir todos los histogramas y todos los buckets independientemente del recuento; es útil para sistemas de monitorización que requieren que cada métrica aparezca en cada punto de control.
Posibles valores:
- 0 — Deshabilitado. Los histogramas con
count = 0 no se emiten; los histogramas emitidos incluyen solo los buckets que recibieron al menos una observación.
- 1 — Habilitado. Se escriben todos los histogramas y cada límite de bucket aparece en
histogram.
table_engine_read_through_distributed_cache
Solo tiene efecto en ClickHouse Cloud. Permite leer desde la caché distribuida mediante motores de tabla / funciones de tabla (s3, azure, etc.)
table_function_remote_max_addresses
Establece el número máximo de direcciones generadas a partir de patrones para la función remote.
Valores posibles:
El tiempo, en segundos, que la conexión debe permanecer inactiva antes de que TCP comience a enviar sondas keepalive
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
Tiempo de espera para bloquear la caché al reservar espacio para datos temporales en la caché del sistema de archivos
temporary_files_buffer_size
Tamaño del búfer para la escritura de archivos temporales. Un tamaño de búfer mayor implica menos llamadas al sistema, pero un mayor consumo de memoria.
Establece el códec de compresión para los archivos temporales utilizados en operaciones de ordenación y join en disco.
Valores posibles:
- LZ4 — Se aplica compresión LZ4.
- NONE — No se aplica compresión.
text_index_hint_max_selectivity
Selectividad máxima del filtro para utilizar la sugerencia generada a partir del índice de texto invertido.
text_index_like_max_postings_to_read
Número máximo de listas de postings grandes que se pueden leer cuando está habilitada la evaluación de LIKE del índice de texto mediante dictionary scan.
Requiere que use_text_index_like_evaluation_by_dictionary_scan esté habilitado.
text_index_like_min_pattern_length
Longitud mínima de la cadena alfanumérica buscada en un patrón LIKE/ILIKE necesaria para usar la evaluación de LIKE del índice de texto mediante el escaneo del diccionario.
Los patrones más cortos que este umbral coinciden con demasiados tokens del diccionario y se omiten para evitar escaneos costosos.
Requiere que use_text_index_like_evaluation_by_dictionary_scan esté habilitado.
throw_if_no_data_to_insert
Permite o prohíbe los INSERT vacíos; está habilitado de forma predeterminada (genera un error si se realiza un insert vacío). Solo se aplica a los INSERT realizados con clickhouse-client o mediante la interfaz gRPC.
throw_on_error_from_cache_on_write_operations
Ignora los errores de la caché al escribir en caché durante las operaciones de escritura (INSERT, merges)
throw_on_max_partitions_per_insert_block
Permite controlar el comportamiento cuando se alcanza max_partitions_per_insert_block.
Valores posibles:
true - Cuando un bloque de inserción alcanza max_partitions_per_insert_block, se lanza una excepción.
false - Registra una advertencia cuando se alcanza max_partitions_per_insert_block.
throw_on_unsupported_query_inside_transaction
Lanza una excepción si se usa una consulta no compatible dentro de una transacció
timeout_before_checking_execution_speed
Comprueba que la velocidad de ejecución no sea demasiado baja (no inferior a min_execution_speed)
una vez transcurrido el tiempo especificado en segundos.
Establece qué hacer si la consulta se ejecuta durante más tiempo que max_execution_time o si el
tiempo de ejecución estimado supera max_estimated_execution_time.
Valores posibles:
throw: generar una excepción (por defecto).
break: detener la ejecución de la consulta y devolver el resultado parcial, como si los
datos de origen se hubieran agotado.
timeout_overflow_mode_leaf
Establece qué sucede cuando la consulta en el nodo hoja tarda más que max_execution_time_leaf.
Valores posibles:
throw: lanzar una excepción (predeterminado).
break: detener la ejecución de la consulta y devolver el resultado parcial, como si los
datos de origen se hubieran agotado.
El umbral para totals_mode = 'auto'.
Consulte la sección «modificador WITH TOTALS».
Cómo calcular TOTALS cuando se usa HAVING, así como cuando están presentes max_rows_to_group_by y group_by_overflow_mode = ‘any’.
Consulte la sección «modificador WITH TOTALS».
Habilita o deshabilita la recopilación de stacktraces en cada actualización de los profile events, junto con el nombre del profile event y el valor del incremento, y su envío a trace_log.
Valores posibles:
- 1 — Seguimiento de profile events habilitado.
- 0 — Seguimiento de profile events deshabilitado.
trace_profile_events_list
Cuando la configuración trace_profile_events está habilitada, limita los eventos rastreados a la lista especificada de nombres separados por comas.
Si trace_profile_events_list es una cadena vacía (valor predeterminado), rastrea todos los eventos de perfil.
Valor de ejemplo: ‘DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes’
Usar esta configuración permite recopilar datos con mayor precisión para un gran número de consultas, ya que, de lo contrario, la enorme cantidad de eventos puede desbordar la cola interna del registro del sistema y hacer que se descarte una parte de ellos.
Establece qué ocurre cuando la cantidad de datos supera uno de los límites.
Valores posibles:
throw: lanzar una excepción (predeterminado).
break: dejar de ejecutar la consulta y devolver el resultado parcial, como si los
datos de origen se hubieran agotado.
Habilita la igualdad entre valores NULL para el operador IN.
De forma predeterminada, los valores NULL no se pueden comparar porque NULL significa que el valor no está definido. Por lo tanto, la comparación expr = NULL siempre debe devolver false. Con esta configuración, NULL = NULL devuelve true para el operador IN.
Valores posibles:
- 0 — La comparación de valores
NULL en el operador IN devuelve false.
- 1 — La comparación de valores
NULL en el operador IN devuelve true.
Ejemplo
Considere la tabla null_in:
┌──idx─┬─────i─┐
│ 1 │ 1 │
│ 2 │ NULL │
│ 3 │ 3 │
└──────┴───────┘
Consulta:
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;
Resultado:
┌──idx─┬────i─┐
│ 1 │ 1 │
└──────┴──────┘
Consulta:
SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;
Resultado:
┌──idx─┬─────i─┐
│ 1 │ 1 │
│ 2 │ NULL │
└──────┴───────┘
Véase también
traverse_shadow_remote_data_paths
Recorre, además de los datos reales de la tabla, los datos congelados (directorio shadow) al consultar system.remote_data_paths
Establece un modo para combinar los resultados de las consultas SELECT. Esta configuración solo se utiliza con UNION cuando no se especifica explícitamente UNION ALL o UNION DISTINCT.
Valores posibles:
'DISTINCT' — ClickHouse devuelve las filas resultantes de combinar consultas, eliminando las filas duplicadas.
'ALL' — ClickHouse devuelve todas las filas resultantes de combinar consultas, incluidas las filas duplicadas.
'' — ClickHouse genera una excepción cuando se usa con UNION.
Consulte ejemplos en UNION.
unknown_packet_in_send_data
Enviar un paquete desconocido en lugar del enésimo paquete de datos
Determina el comportamiento de las consultas UPDATE concurrentes.
Valores posibles:
sync - ejecutar secuencialmente todas las consultas UPDATE.
auto - ejecutar secuencialmente solo las consultas UPDATE con dependencias entre las columnas actualizadas en una consulta y las columnas usadas en las expresiones de otra consulta.
async - no sincronizar las consultas UPDATE.
update_sequential_consistency
Si está activado, el conjunto de partes se actualiza a la versión más reciente antes de ejecutar la actualización.
La URL base que se utiliza para resolver URL relativas en la url table function y el motor de tabla URL.
Cuando se establece, las URL relativas se resuelven de la siguiente manera:
- URL relativa a la ruta (p. ej.,
data.csv): se combina con la ruta de la URL base según la RFC 3986. Todo lo que aparece después de la última / en la ruta base se sustituye por la URL relativa, por lo que la barra diagonal final importa: https://example.com/dir/ + data.csv = https://example.com/dir/data.csv, pero https://example.com/dir + data.csv = https://example.com/data.csv. Si la base no tiene ruta (p. ej., https://example.com), se inserta una /: https://example.com/data.csv. Los segmentos de punto (./ y ../) de la URL relativa se normalizan: https://example.com/dir/ + ../a.csv = https://example.com/a.csv.
- URL relativa al host (p. ej.,
/test/data.csv): se resuelve a partir del esquema y el host de la URL base.
- URL relativa al esquema (p. ej.,
//other.com/test/data.csv): se resuelve usando el esquema de la URL base.
- Referencia de solo consulta (p. ej.,
?x=1): se añade a la ruta de la URL base (sustituyendo cualquier consulta o fragmento existente).
- Referencia de solo fragmento (p. ej.,
#frag): se añade a la URL base, conservando cualquier query string (sustituyendo cualquier fragmento existente).
- Referencia vacía: devuelve la URL base sin fragmento.
Por ejemplo, si url_base es https://example.com/def/, entonces:
data.csv se resuelve en https://example.com/def/data.csv
/test/data.csv se resuelve en https://example.com/test/data.csv
//other.com/test/data.csv se resuelve en https://other.com/test/data.csv
use_async_executor_for_materialized_views
Usa la ejecución asíncrona y, potencialmente, multihilo de la consulta de la vista materializada; puede acelerar el procesamiento de las vistas durante INSERT, pero también consumir más memoria.
use_cache_for_count_from_files
Habilita el almacenamiento en caché del número de filas al contar desde archivos en las funciones de tabla file/s3/url/hdfs/azureBlobStorage.
Habilitado de forma predeterminada.
Utiliza la zona horaria del cliente para interpretar los valores de cadena DateTime, en lugar de usar la zona horaria del servidor.
Usa el formato compacto para almacenar bloques para INSERT en segundo plano (distributed_foreground_insert) en tablas con el engine Distributed.
Valores posibles:
- 0 — Usa el formato de directorio
user[:password]@host:port#default_database.
- 1 — Usa el formato de directorio
[shard{shard_index}[_replica{replica_index}]].
- con
use_compact_format_in_distributed_parts_names=0, los cambios en la definición del clúster no se aplicarán al INSERT en segundo plano.
- con
use_compact_format_in_distributed_parts_names=1, cambiar el orden de los nodos en la definición del clúster cambiará shard_index/replica_index, así que tenlo en cuenta.
Respeta el control de concurrencia del servidor (consulta las configuraciones globales del servidor concurrent_threads_soft_limit_num y concurrent_threads_soft_limit_ratio_to_cores). Si se deshabilita, permite usar un mayor número de hilos incluso si el servidor está sobrecargado (no se recomienda para un uso normal y se necesita principalmente para pruebas).
Valor predeterminado en Cloud: 0.
use_hash_table_stats_for_join_reordering
Habilita el uso de las estadísticas recopiladas de la tabla hash para estimar la cardinalidad durante la reordenación de JOIN
Habilita la lógica de Hedged Requests para consultas remotas. Permite establecer varias conexiones con distintas réplicas para una misma consulta.
Se habilita una nueva conexión si la(s) conexión(es) existente(s) con la(s) réplica(s) no se ha(n) establecido dentro de hedged_connection_timeout
o si no se han recibido datos dentro de receive_data_timeout. La consulta usa la primera conexión que envía un paquete de progreso no vacío (o un paquete de datos, si allow_changing_replica_until_first_data_packet);
las demás conexiones se cancelan. Se admiten consultas con max_parallel_replicas > 1.
Habilitado de forma predeterminada.
Valor predeterminado de Cloud: 0.
Cuando está habilitada, ClickHouse detectará el particionado de estilo Hive en la ruta (/name=value/) en los motores de tabla de tipo archivo File/S3/URL/HDFS/AzureBlobStorage y permitirá usar las columnas de partición como columnas virtuales en la consulta. Estas columnas virtuales tendrán los mismos nombres que en la ruta con particiones, pero comenzarán con _.
Si está activado, la función de tabla Iceberg y el almacenamiento Iceberg pueden utilizar la caché de archivos de metadatos de Iceberg.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
use_iceberg_partition_pruning
Usa la poda de particiones de Iceberg para las tablas Iceberg
use_index_for_in_with_subqueries
Intenta usar un índice si hay una subconsulta o una expresión de tabla en el lado derecho del operador IN.
use_index_for_in_with_subqueries_max_values
El tamaño máximo del conjunto en el lado derecho del operador IN para usar el índice de la tabla en el filtrado. Permite evitar la degradación del rendimiento y un mayor uso de memoria debidos a la preparación de estructuras de datos adicionales para consultas grandes. Cero significa que no hay límite.
use_join_disjunctions_push_down
Habilita el pushdown de las partes de las condiciones JOIN conectadas por OR hacia los lados de entrada correspondientes (“pushdown parcial”).
Esto permite que los motores de almacenamiento filtren antes, lo que puede reducir la cantidad de datos leídos.
La optimización preserva la semántica y solo se aplica cuando cada rama OR de nivel superior aporta al menos un
predicado determinista para el lado de destino.
Cuando está habilitada, permite usar la función heredada toTime, que convierte una fecha con hora en una fecha fija determinada, conservando la hora.
De lo contrario, utiliza una nueva función toTime, que convierte distintos tipos de datos al tipo Time.
La antigua función heredada también está disponible incondicionalmente como toTimeWithFixedDate.
use_page_cache_for_disks_without_file_cache
Utiliza la caché de páginas en espacio de usuario para discos remotos que no tienen habilitada la caché del sistema de archivos.
use_page_cache_for_local_disks
Usa la caché de páginas en espacio de usuario al leer desde discos locales. Se usa para pruebas y es poco probable que mejore el rendimiento en la práctica. Requiere local_filesystem_read_method = 'pread' o 'read'. No desactiva la caché de páginas del SO; para ello se puede usar min_bytes_to_use_direct_io. Solo afecta a las tablas normales, no a la función de tabla file() ni al motor de tabla File().
use_page_cache_for_object_storage
Use la caché de páginas en espacio de usuario al leer desde funciones de tabla para almacenamiento de objetos (s3, azure, hdfs) y motores de tabla (S3, Azure, HDFS).
use_page_cache_with_distributed_cache
Use la caché de páginas en espacio de usuario cuando se use distributed cache.
use_paimon_partition_pruning
Usar la poda de particiones de Paimon en las funciones de tabla de Paimon
Si está activado, el formato Parquet puede utilizar la caché de metadatos de Parquet.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
Alias: use_partition_key
Usa la clave de partición para la poda de particiones durante la ejecución de consultas en tablas MergeTree.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Utiliza la clave primaria para podar gránulos durante la ejecución de consultas en las tablas MergeTree.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
Si está activado, las consultas SELECT pueden utilizar la caché de consultas. Los parámetros enable_reads_from_query_cache
y enable_writes_to_query_cache controlan con mayor detalle cómo se utiliza la caché.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
use_query_condition_cache
Habilita la caché de condiciones de consulta. La caché almacena rangos de gránulos en partes de datos que no cumplen la condición de la cláusula WHERE
y reutiliza esta información como un índice temporal para las consultas posteriores.
Valores posibles:
- 0 - Deshabilitado
- 1 - Habilitado
use_roaring_bitmap_iceberg_positional_deletes
Usa roaring bitmap para las eliminaciones posicionales de Iceberg.
Utiliza índices de omisión de datos durante la ejecución de consultas.
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_skip_indexes_for_disjunctions
Evalúa los filtros WHERE con condiciones mixtas AND y OR mediante índices de omisión. Ejemplo: WHERE A = 5 AND (B = 5 OR C = 5).
Si está deshabilitado, los índices de omisión se siguen usando para evaluar las condiciones WHERE, pero solo pueden contener cláusulas unidas con AND.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_skip_indexes_for_top_k
Habilita el uso de índices de omisión de datos para el filtrado TopK.
Cuando está habilitada, si existe un índice MinMax en la columna de una consulta ORDER BY <column> LIMIT n, el optimizador intentará usar el índice MinMax para omitir gránulos que no sean relevantes para el resultado final. Esto puede reducir la latencia de la consulta.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_skip_indexes_if_final
Controla si se usan índices de omisión al ejecutar una consulta con el modificador FINAL.
Los índices de omisión pueden excluir filas (gránulos) que contienen los datos más recientes, lo que podría dar lugar a resultados incorrectos en una consulta con el modificador FINAL. Cuando este ajuste está habilitado, los índices de omisión se aplican incluso con el modificador FINAL, lo que puede mejorar el rendimiento, pero con el riesgo de omitir actualizaciones recientes. Este ajuste debe habilitarse al mismo tiempo que el ajuste use_skip_indexes_if_final_exact_mode (está habilitado de forma predeterminada).
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_skip_indexes_if_final_exact_mode
Controla si los gránulos devueltos por un índice de omisión se expanden en las partes más recientes para devolver resultados correctos al ejecutar una consulta con el modificador FINAL.
El uso de índice de omisión puede excluir filas (gránulos) que contienen los datos más recientes, lo que podría dar lugar a resultados incorrectos. Esta configuración puede garantizar que se devuelvan resultados correctos al examinar las partes más recientes que se superponen con los rangos devueltos por el índice de omisión. Esta configuración solo debe deshabilitarse si, para una aplicación, son aceptables los resultados aproximados basados en la consulta del índice de omisión.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_skip_indexes_on_data_read
Permite usar índices de omisión de datos durante la lectura de datos.
Cuando está habilitada, los índices de omisión se evalúan dinámicamente en el momento en que se lee cada gránulo de datos, en lugar de analizarse por adelantado antes de que comience la ejecución de la consulta. Esto puede reducir la latencia de inicio de la consulta.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
/// se prefiere a ‘allow_statistics_optimize’ por coherencia con ‘use_primary_key’ y ‘use_skip_indexes’
Permite usar estadísticas para optimizar las consultas
Utilice la caché de estadísticas en una consulta para evitar la sobrecarga que supone cargar las estadísticas de todas las partes
use_statistics_for_part_pruning
Usa estadísticas para descartar partes durante la ejecución de consultas.
Cuando está habilitado, la poda en las consultas SELECT usará estadísticas de columnas (p. ej., estadísticas MinMax) para eliminar partes que no puedan contener datos coincidentes antes de leer ningún dato.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_strict_insert_block_limits
Cuando está habilitada, aplica estrictamente los límites mínimo y máximo del tamaño del bloque de inserción.
Se emite un bloque cuando:
- Umbrales mínimos (AND): Se alcanzan tanto min_insert_block_size_rows como min_insert_block_size_bytes.
- Umbrales máximos (OR): Se alcanza max_insert_block_size_rows o max_insert_block_size_bytes.
Cuando está deshabilitada, se emite un bloque cuando:
- Umbrales mínimos (OR): Se alcanza min_insert_block_size_rows o min_insert_block_size_bytes.
Nota: Si la configuración máxima es menor que la configuración mínima, prevalecen los límites máximos y los bloques se emitirán antes de alcanzar los umbrales mínimos.
Nota: Esta configuración se desactiva automáticamente para las inserciones asíncronas, porque las inserciones asíncronas añaden tokens de deduplicación por entrada que son incompatibles con la división de bloques necesaria para aplicar límites estrictos.
Deshabilitada de forma predeterminada.
use_structure_from_insertion_table_in_table_functions
Utiliza la estructura de la tabla de inserción en lugar de inferir el esquema a partir de los datos. Posibles valores: 0 - deshabilitado, 1 - habilitado, 2 - auto
Indica si se usa una caché del encabezado deserializado del índice de texto.
Usar la caché del encabezado del índice de texto puede reducir significativamente la latencia y aumentar el rendimiento al trabajar con un gran número de consultas con índices de texto.
use_text_index_like_evaluation_by_dictionary_scan
Habilita la evaluación de consultas LIKE/ILIKE mediante el análisis del diccionario del índice de texto invertido.
use_text_index_postings_cache
Si se debe usar una caché de listas de postings deserializadas del índice de texto.
Usar la caché de postings del índice de texto puede reducir significativamente la latencia y aumentar el rendimiento cuando se trabaja con un gran número de consultas sobre índices de texto.
use_text_index_tokens_cache
Indica si se debe usar una caché de información deserializada de los tokens del índice de texto.
Usar la caché de tokens del índice de texto puede reducir significativamente la latencia y aumentar el rendimiento al trabajar con una gran cantidad de consultas de índice de texto.
use_top_k_dynamic_filtering
Habilita la optimización de filtrado dinámico al ejecutar una consulta ORDER BY <column> LIMIT n.
Cuando está habilitada, el ejecutor de la consulta intentará omitir gránulos y filas que no formarán parte de las top N filas finales del conjunto de resultados. Esta optimización es dinámica por naturaleza, y las mejoras de latencia dependen de la distribución de los datos y de la presencia de otros predicados en la consulta.
Valores posibles:
- 0 — Deshabilitado.
- 1 — Habilitado.
use_top_k_dynamic_filtering_for_variable_length_types
Permite que use_top_k_dynamic_filtering se aplique cuando la columna de ordenación tiene un tipo de datos de longitud variable (p. ej., String, Array, Map, Tuple que contiene elementos de longitud variable).
Para estos tipos, la comparación del umbral por fila que realiza el filtro dinámico puede costar más de lo que ahorra cuando predomina el mínimo lexicográfico de la columna (p. ej., cadenas mayoritariamente vacías) y se pueden omitir pocos gránulos. En ese caso, el filtro dinámico empeora la latencia de la consulta en lugar de mejorarla.
Cuando este ajuste es 0, el filtrado dinámico se restringe a columnas cuyos valores tienen un tamaño máximo fijo en memoria (números, Date, DateTime, FixedString, Enum, Nullable de esos tipos, Tuple de esos tipos). Cuando se establece en 1, el filtrado dinámico también se aplica a tipos de longitud variable.
Valores posibles:
- 0 — Desactivado.
- 1 — Activado.
Indica si se debe usar una caché de bloques sin comprimir. Acepta 0 o 1. De forma predeterminada, 0 (deshabilitado).
El uso de la caché sin comprimir (solo para tablas de la familia MergeTree) puede reducir significativamente la latencia y aumentar el rendimiento al trabajar con una gran cantidad de consultas cortas. Habilite esta configuración para los usuarios que envían solicitudes cortas con frecuencia. Preste atención también al parámetro de configuración uncompressed_cache_size (solo se puede establecer en el archivo de configuración): el tamaño de los bloques de la caché sin comprimir. De forma predeterminada, es de 8 GiB. La caché sin comprimir se llena según sea necesario y los datos menos utilizados se eliminan automáticamente.
En las consultas que leen un volumen de datos al menos moderadamente grande (un millón de filas o más), la caché sin comprimir se deshabilita automáticamente para ahorrar espacio para las consultas realmente pequeñas. Esto significa que puede mantener siempre la configuración ‘use_uncompressed_cache’ establecida en 1.
use_variant_as_common_type
Permite usar el tipo Variant como tipo de resultado de las funciones if/multiIf/array/map cuando no existe un tipo común para los tipos de argumento.
Ejemplo:
SET use_variant_as_common_type = 1;
SELECT toTypeName(if(number % 2, number, range(number))) as variant_type FROM numbers(1);
SELECT if(number % 2, number, range(number)) as variant FROM numbers(5);
┌─variant_type───────────────────┐
│ Variant(Array(UInt64), UInt64) │
└────────────────────────────────┘
┌─variant───┐
│ [] │
│ 1 │
│ [0,1] │
│ 3 │
│ [0,1,2,3] │
└───────────┘
SET use_variant_as_common_type = 1;
SELECT toTypeName(multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL)) AS variant_type FROM numbers(1);
SELECT multiIf((number % 4) = 0, 42, (number % 4) = 1, [1, 2, 3], (number % 4) = 2, 'Hello, World!', NULL) AS variant FROM numbers(4);
─variant_type─────────────────────────┐
│ Variant(Array(UInt8), String, UInt8) │
└──────────────────────────────────────┘
┌─variant───────┐
│ 42 │
│ [1,2,3] │
│ Hello, World! │
│ ᴺᵁᴸᴸ │
└───────────────┘
SET use_variant_as_common_type = 1;
SELECT toTypeName(array(range(number), number, 'str_' || toString(number))) as array_of_variants_type from numbers(1);
SELECT array(range(number), number, 'str_' || toString(number)) as array_of_variants FROM numbers(3);
┌─array_of_variants_type────────────────────────┐
│ Array(Variant(Array(UInt64), String, UInt64)) │
└───────────────────────────────────────────────┘
┌─array_of_variants─┐
│ [[],0,'str_0'] │
│ [[0],1,'str_1'] │
│ [[0,1],2,'str_2'] │
└───────────────────┘
SET use_variant_as_common_type = 1;
SELECT toTypeName(map('a', range(number), 'b', number, 'c', 'str_' || toString(number))) as map_of_variants_type from numbers(1);
SELECT map('a', range(number), 'b', number, 'c', 'str_' || toString(number)) as map_of_variants FROM numbers(3);
┌─map_of_variants_type────────────────────────────────┐
│ Map(String, Variant(Array(UInt64), String, UInt64)) │
└─────────────────────────────────────────────────────┘
┌─map_of_variants───────────────┐
│ {'a':[],'b':0,'c':'str_0'} │
│ {'a':[0],'b':1,'c':'str_1'} │
│ {'a':[0,1],'b':2,'c':'str_2'} │
└───────────────────────────────┘
use_variant_default_implementation_for_comparisons
Habilita o deshabilita la implementación predeterminada para el tipo Variant en las funciones de comparación.
use_with_fill_by_sorting_prefix
Las columnas anteriores a las columnas WITH FILL de la cláusula ORDER BY constituyen el prefijo de ordenación. Las filas con valores distintos en el prefijo de ordenación se rellenan de forma independiente
validate_enum_literals_in_operators
Si está habilitado, valida los literales de enum en operadores como IN, NOT IN, ==, != con respecto al tipo enum y lanza una excepción si el literal no es un valor válido del enum.
Valida las consultas de mutación antes de aceptarlas. Las mutaciones se ejecutan en segundo plano, y ejecutar una consulta no válida hará que queden bloqueadas y requieran intervención manual.
Cambie esta configuración solo si encuentra un error que rompa la compatibilidad con versiones anteriores.
Habilita o deshabilita que se lance una excepción en la función pointInPolygon si el polígono se autointerseca o es autotangente.
Valores posibles:
- 0 — El lanzamiento de excepciones está deshabilitado.
pointInPolygon acepta polígonos no válidos y devuelve resultados posiblemente incorrectos para ellos.
- 1 — El lanzamiento de excepciones está habilitado.
variant_throw_on_type_mismatch
Al aplicar una función a una columna Variant mediante la implementación predeterminada,
determina qué ocurre con las filas cuyo tipo real es incompatible con la función:
true (predeterminado) — lanzar una excepción.
false — devolver NULL para esas filas.
vector_search_filter_strategy
Si una consulta de búsqueda vectorial tiene una cláusula WHERE, esta configuración determina si se evalúa primero (pre-filtering) o si primero se comprueba el índice de similitud vectorial (post-filtering). Posibles valores:
- ‘auto’ - Posfiltrado (la semántica exacta puede cambiar en el futuro).
- ‘postfilter’ - Usa el índice de similitud vectorial para identificar los vecinos más cercanos y luego aplica otros filtros.
- ‘prefilter’ - Evalúa primero otros filtros y luego realiza una búsqueda por fuerza bruta para identificar a los vecinos.
vector_search_index_fetch_multiplier
Alias: vector_search_postfilter_multiplier
Multiplica por este número la cantidad de vecinos más cercanos recuperados del índice de similitud vectorial. Solo se aplica al posfiltrado con otros predicados o si la configuración ‘vector_search_with_rescoring = 1’.
vector_search_with_rescoring
Si ClickHouse aplica rescoring a las consultas que usan el índice de similitud vectorial.
Sin rescoring, el índice de similitud vectorial devuelve directamente las filas que contienen las mejores coincidencias.
Con rescoring, las filas se extrapolan al nivel de gránulo y se vuelven a comprobar todas las filas del gránulo.
En la mayoría de los casos, el rescoring solo mejora ligeramente la precisión, pero reduce significativamente el rendimiento de las consultas de búsqueda vectorial.
Nota: Una consulta ejecutada sin rescoring y con las réplicas paralelas habilitadas puede pasar a usar rescoring.
wait_changes_become_visible_after_commit_mode
Esperar a que los cambios confirmados pasen a ser realmente visibles en la instantánea más reciente
Si es true, espera a que se procese la inserción asíncrona
wait_for_async_insert_timeout
Tiempo de espera para el procesamiento de la inserción asíncrona
wait_for_window_view_fire_signal_timeout
Tiempo de espera para la señal de activación de window view en el procesamiento por tiempo de evento
Límite de fuel por ejecución de una instancia de WebAssembly UDF. Cada instrucción de WebAssembly consume una cierta cantidad de fuel.
Establezca 0 para desactivar el límite.
Número máximo de filas que se pueden pasar a una UDF de WebAssembly en un solo bloque. Establezca 0 para procesar todas las filas de una sola vez.
webassembly_udf_max_instances
Número máximo de instancias de WebAssembly UDF que pueden ejecutarse en paralelo por función.
webassembly_udf_max_memory
Límite de memoria en bytes para cada instancia de WebAssembly UDF.
window_view_clean_interval
El intervalo de limpieza de window view, en segundos, para eliminar datos obsoletos.
window_view_heartbeat_interval
El intervalo de latido, en segundos, que indica que la consulta watch sigue activa.
Nombre de la workload que se utilizará para acceder a los recursos
Escribir rutas completas (incluido s3://) en los archivos de metadatos de Iceberg.
write_through_distributed_cache
Solo tiene efecto en ClickHouse Cloud. Permite escribir en la caché distribuida (la escritura en S3 también se realizará mediante la caché distribuida)
write_through_distributed_cache_buffer_size
Solo tiene efecto en ClickHouse Cloud. Establece el tamaño del búfer para la caché distribuida con write-through. Si es 0, se usará el tamaño del búfer que se habría utilizado si no hubiera caché distribuida.
Permite seleccionar el valor máximo de window log de ZSTD (no se utilizará para la familia MergeTree)