Перейти к основному содержанию
Перейти к основному содержанию

Настройки сеанса

Все перечисленные ниже настройки также доступны в таблице system.settings. Эти настройки автоматически генерируются из исходного кода.

add_http_cors_header

Добавлять HTTP-заголовок CORS.

additional_result_filter

Дополнительное выражение фильтрации, применяемое к результату запроса SELECT. Эта настройка не применяется ни к каким подзапросам.

Пример

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 │
└───┴──────┘

additional_table_filters

Дополнительное выражение фильтрации, которое применяется после чтения данных из указанной таблицы.

Пример

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 │
└───┴──────┘

aggregate_function_input_format

Формат ввода для AggregateFunction во время операций INSERT.

Возможные значения:

  • state — двоичная строка с сериализованным состоянием (значение по умолчанию). Это поведение по умолчанию, при котором значения AggregateFunction передаются в виде двоичных данных.
  • value — формат ожидает одно значение аргумента агрегатной функции или, в случае нескольких аргументов, кортеж этих значений. Они десериализуются с помощью соответствующего IDataType или DataTypeTuple, а затем агрегируются для формирования состояния.
  • array — формат ожидает массив (Array) значений, как описано в варианте value выше. Все элементы массива будут агрегированы для формирования состояния.

Примеры

Для таблицы со структурой:

CREATE TABLE example (
    user_id UInt64,
    avg_session_length AggregateFunction(avg, UInt32)
);

При aggregate_function_input_format = 'value':

INSERT INTO example FORMAT CSV
123,456

При значении aggregate_function_input_format = 'array':

INSERT INTO example FORMAT CSV
123,"[456,789,101]"

Примечание: форматы value и array работают медленнее, чем формат по умолчанию state, так как при вставке необходимо создавать и агрегировать значения.

aggregate_functions_null_for_empty

Включает или отключает перезапись всех агрегатных функций в запросе с добавлением к ним суффикса -OrNull. Включите для обеспечения совместимости со стандартом SQL. Реализуется через перезапись запроса (аналогично настройке count_distinct_implementation), чтобы получать согласованные результаты для распределённых запросов.

Возможные значения:

  • 0 — отключено.
  • 1 — включено.

Пример

Рассмотрим следующий запрос с агрегатными функциями:

SELECT SUM(-1), MAX(0) FROM system.one WHERE 0;

С aggregate_functions_null_for_empty = 0 это даст следующий результат:

┌─SUM(-1)─┬─MAX(0)─┐
│       0 │      0 │
└─────────┴────────┘

При aggregate_functions_null_for_empty = 1 результат будет следующим:

┌─SUMOrNull(-1)─┬─MAXOrNull(0)─┐
│          NULL │         NULL │
└───────────────┴──────────────┘

aggregation_in_order_max_block_bytes

Максимальный размер блока в байтах, накапливаемого при агрегации в порядке первичного ключа. Уменьшение размера блока позволяет лучше распараллелить финальный этап слияния агрегации.

aggregation_memory_efficient_merge_threads

Количество потоков, используемых для слияния промежуточных результатов агрегации в режиме экономного использования памяти. Чем больше значение, тем больше потребление памяти. 0 означает то же самое, что и для «max_threads».

allow_aggregate_partitions_independently

Включает независимую агрегацию партиций в отдельных потоках, когда ключ партиции совпадает с ключом GROUP BY. Полезно, когда количество партиций близко к количеству ядер CPU и партиции имеют примерно одинаковый размер.

allow_archive_path_syntax

Движки File/S3 и табличная функция будут интерпретировать пути, содержащие '::', как <archive>::<file>, если архив имеет корректное расширение.

allow_asynchronous_read_from_io_pool_for_merge_tree

Использовать фоновый пул ввода-вывода для чтения из таблиц MergeTree. Этот параметр может повысить производительность запросов, производительность которых ограничена операциями ввода-вывода.

allow_changing_replica_until_first_data_packet

Если параметр включён, в запросах с хеджированием можно устанавливать новое соединение до получения первого пакета данных, даже если уже был достигнут некоторый прогресс (но прогресс не обновлялся в течение таймаута receive_data_timeout); в противном случае смена реплики запрещается после первого момента, когда был достигнут прогресс.

allow_create_index_without_type

Разрешить запрос CREATE INDEX без указания TYPE. Запрос будет проигнорирован. Предназначено для тестов совместимости с SQL.

allow_custom_error_code_in_throwif

Включает использование пользовательского кода ошибки в функции throwIf(). Если установлено значение true, генерируемые исключения могут иметь неожиданные коды ошибок.

allow_ddl

Если параметр имеет значение true, пользователю разрешено выполнять DDL-запросы.

allow_deprecated_database_ordinary

Разрешает создавать базы данных с устаревшим движком Ordinary

allow_deprecated_error_prone_window_functions

Разрешает использование устаревших ошибкоопасных оконных функций (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference)

allow_deprecated_snowflake_conversion_functions

Функции snowflakeToDateTime, snowflakeToDateTime64, dateTimeToSnowflake и dateTime64ToSnowflake помечены как устаревшие и по умолчанию отключены. Используйте вместо них функции snowflakeIDToDateTime, snowflakeIDToDateTime64, dateTimeToSnowflakeID и dateTime64ToSnowflakeID.

Чтобы снова включить устаревшие функции (например, на период миграции), установите для этого параметра значение true.

allow_deprecated_syntax_for_merge_tree

Разрешает создавать таблицы *MergeTree с устаревшим синтаксисом определения движка таблицы

allow_distributed_ddl

Если параметр имеет значение true, пользователю разрешается выполнять распределённые DDL-запросы.

allow_drop_detached

Разрешает выполнять запросы ALTER TABLE ... DROP DETACHED PART[ITION] ...

allow_dynamic_type_in_join_keys

Разрешает использование типа Dynamic в ключах JOIN. Добавлен для совместимости. Не рекомендуется использовать тип Dynamic в ключах JOIN, так как сравнение с другими типами может привести к непредвиденным результатам.

allow_execute_multiif_columnar

Разрешает выполнять функцию multiIf в столбцовом режиме

allow_experimental_alias_table_engine

Experimental feature. Learn more.

Разрешает создание таблиц с движком Alias.

allow_experimental_analyzer

Aliases: enable_analyzer

Разрешает использование нового анализатора запросов.

allow_experimental_codecs

Experimental feature. Learn more.

Если установлено значение true, можно указывать экспериментальные кодеки сжатия (но пока таких кодеков нет, поэтому эта опция ничего не делает).

allow_experimental_correlated_subqueries

Beta feature. Learn more.

Разрешает выполнять коррелированные подзапросы.

allow_experimental_database_glue_catalog

Beta feature. Learn more.

Псевдонимы: allow_database_glue_catalog

Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'glue'

allow_experimental_database_hms_catalog

Experimental feature. Learn more.

Разрешает экспериментальный движок базы данных DataLakeCatalog с catalog_type = 'hms'

allow_experimental_database_iceberg

Beta feature. Learn more.

Псевдонимы: allow_database_iceberg

Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'iceberg'

allow_experimental_database_materialized_postgresql

Experimental feature. Learn more.

Разрешает создание базы данных с движком Engine=MaterializedPostgreSQL(...).

allow_experimental_database_unity_catalog

Beta feature. Learn more.

Псевдонимы: allow_database_unity_catalog

Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'unity'

allow_experimental_delta_kernel_rs

Beta feature. Learn more.

Разрешает использование экспериментальной реализации delta-kernel-rs.

allow_experimental_delta_lake_writes

Experimental feature. Learn more.

Включает функцию записи с использованием delta-kernel.

allow_experimental_full_text_index

Experimental feature. Learn more.

Если установлено значение true, позволяет использовать экспериментальный текстовый индекс.

allow_experimental_funnel_functions

Experimental feature. Learn more.

Включить экспериментальные функции для анализа воронок.

allow_experimental_hash_functions

Experimental feature. Learn more.

Включает экспериментальные хэш-функции

allow_experimental_iceberg_compaction

Experimental feature. Learn more.

Разрешает явное использование команды OPTIMIZE для таблиц Iceberg.

allow_experimental_insert_into_iceberg

Experimental feature. Learn more.

Разрешает выполнять запросы insert в Iceberg.

allow_experimental_join_right_table_sorting

Experimental feature. Learn more.

Если установлено в значение true и выполняются условия join_to_sort_minimum_perkey_rows и join_to_sort_maximum_table_rows, правая таблица будет пересортирована по ключу для повышения производительности левого или внутреннего hash join.

allow_experimental_kafka_offsets_storage_in_keeper

Experimental feature. Learn more.

Разрешает экспериментальную возможность хранения смещений, связанных с Kafka, в ClickHouse Keeper. При включении параметра для движка таблицы Kafka можно указать путь в ClickHouse Keeper и имя реплики. В результате вместо обычного движка Kafka будет использоваться новый тип движка хранения, который будет хранить зафиксированные смещения преимущественно в ClickHouse Keeper.

allow_experimental_kusto_dialect

Experimental feature. Learn more.

Включает язык запросов Kusto (KQL) — альтернативу SQL.

allow_experimental_materialized_postgresql_table

Experimental feature. Learn more.

Разрешает использовать движок таблицы MaterializedPostgreSQL. По умолчанию параметр отключён, так как это экспериментальная возможность.

allow_experimental_nlp_functions

Experimental feature. Learn more.

Включает экспериментальные функции для обработки естественного языка.

allow_experimental_parallel_reading_from_replicas

Beta feature. Learn more.

Псевдонимы: enable_parallel_replicas

Использовать до max_parallel_replicas реплик из каждого сегмента для выполнения SELECT-запроса. Чтение выполняется параллельно и координируется динамически. 0 — отключено, 1 — включено, при сбое реплики тихо отключаются, 2 — включено, при сбое выбрасывается исключение

allow_experimental_prql_dialect

Experimental feature. Learn more.

Включить PRQL — альтернативу SQL.

allow_experimental_qbit_type

Experimental feature. Learn more.

Позволяет создавать тип данных QBit.

allow_experimental_query_deduplication

Experimental feature. Learn more.

Экспериментальная дедупликация данных для запросов SELECT на основе UUID частей

allow_experimental_statistics

Experimental feature. Learn more.

Псевдонимы: allow_experimental_statistic

Разрешает задавать столбцы со статистикой и выполнять операции со статистикой.

allow_experimental_time_series_aggregate_functions

Experimental feature. Learn more.

Псевдонимы: allow_experimental_ts_to_grid_aggregate_function

Экспериментальные агрегатные функции timeSeries* для ресемплинга временных рядов в стиле Prometheus, расчёта скорости изменений (rate) и дельты.

allow_experimental_time_series_table

Experimental feature. Learn more.

Разрешает создание таблиц с табличным движком TimeSeries. Возможные значения:

  • 0 — табличный движок TimeSeries отключен.
  • 1 — табличный движок TimeSeries включен.

allow_experimental_window_view

Experimental feature. Learn more.

Включает WINDOW VIEW. Функциональность пока недостаточно стабильна.

allow_experimental_ytsaurus_dictionary_source

Experimental feature. Learn more.

Экспериментальный источник словаря для интеграции с YTsaurus.

allow_experimental_ytsaurus_table_engine

Experimental feature. Learn more.

Экспериментальный движок таблицы для интеграции с YTsaurus.

allow_experimental_ytsaurus_table_function

Experimental feature. Learn more.

Экспериментальный табличный движок для интеграции с YTsaurus.

allow_general_join_planning

Разрешает использование более общего алгоритма планирования JOIN, который может обрабатывать более сложные условия, но работает только с hash JOIN. Если hash JOIN не включён, используется обычный алгоритм планирования JOIN независимо от значения этого SETTING.

allow_get_client_http_header

Разрешает использование функции getClientHTTPHeader, которая позволяет получить значение заголовка текущего HTTP‑запроса. По умолчанию параметр отключен в целях безопасности, так как некоторые заголовки, например Cookie, могут содержать конфиденциальную информацию. Обратите внимание, что заголовки X-ClickHouse-* и Authentication всегда недоступны и не могут быть получены с помощью этой функции.

allow_hyperscan

Разрешает функции, использующие библиотеку Hyperscan. Отключите, чтобы избежать потенциально долгой компиляции и чрезмерного расхода ресурсов.

allow_introspection_functions

Включает или отключает функции интроспекции для профилирования запросов.

Возможные значения:

  • 1 — функции интроспекции включены.
  • 0 — функции интроспекции отключены.

См. также

allow_materialized_view_with_bad_select

Разрешает CREATE MATERIALIZED VIEW с запросом SELECT, который ссылается на несуществующие таблицы или столбцы. Запрос при этом по‑прежнему должен быть синтаксически корректным. Не применяется к обновляемым materialized view. Не применяется, если схему materialized view нужно выводить из запроса SELECT (то есть если в CREATE нет списка столбцов и нет таблицы TO). Может использоваться для создания materialized view до создания исходной таблицы.

allow_named_collection_override_by_default

Разрешает по умолчанию переопределение полей именованных коллекций.

allow_non_metadata_alters

Разрешает выполнять операции ALTER, которые затрагивают не только метаданные таблиц, но и данные на диске

allow_nonconst_timezone_arguments

Разрешает неконстантные аргументы часового пояса в некоторых функциях, связанных со временем, таких как toTimeZone(), fromUnixTimestamp*(), snowflakeToDateTime*(). Этот параметр SETTING существует только по причинам совместимости. В ClickHouse часовой пояс — это свойство типа данных и, соответственно, столбца. Включение этого параметра SETTING создаёт неверное впечатление, что разные значения внутри одного столбца могут иметь разные часовые пояса. Поэтому не следует включать этот параметр SETTING.

allow_nondeterministic_mutations

Пользовательская настройка, позволяющая выполнять мутации в реплицируемых таблицах с использованием недетерминированных функций, таких как dictGet.

Поскольку, например, словари могут быть несинхронизированы между узлами, мутации, которые извлекают из них значения, по умолчанию запрещены для реплицируемых таблиц. Включение этой настройки разрешает такое поведение и возлагает на пользователя ответственность за то, чтобы используемые данные были синхронизированы на всех узлах.

Пример

<profiles>
    <default>
        <allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>

        <!-- ... -->
    </default>

    <!-- ... -->

</profiles>

allow_nondeterministic_optimize_skip_unused_shards

Разрешает использование недетерминированных функций (например, rand или dictGet; при этом у dictGet есть некоторые особенности при обновлениях) в ключе распределения по сегментам.

Возможные значения:

  • 0 — Запрещено.
  • 1 — Разрешено.

allow_prefetched_read_pool_for_local_filesystem

Предпочитать пул потоков предвыборочного чтения, если все части находятся в локальной файловой системе

allow_prefetched_read_pool_for_remote_filesystem

Предпочитать пул потоков с предварительной выборкой, если все части находятся в удалённой файловой системе

allow_push_predicate_ast_for_distributed_subqueries

Разрешает проталкивание предикатов на уровне AST для распределённых подзапросов при включённом анализаторе

allow_push_predicate_when_subquery_contains_with

Разрешает проталкивание предиката, если подзапрос содержит предложение WITH

allow_reorder_prewhere_conditions

При переносе условий из WHERE в PREWHERE разрешает переупорядочивать их для оптимизации фильтрации

allow_settings_after_format_in_insert

Управляет тем, разрешено ли использование SETTINGS после FORMAT в запросах INSERT. Использовать этот параметр не рекомендуется, так как часть SETTINGS может быть интерпретирована как значения.

Пример:

INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');

Однако приведённый ниже запрос будет работать только при включённом параметре 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;

Возможные значения:

  • 0 — Запретить.
  • 1 — Разрешить.
Примечание

Используйте эту настройку только для обеспечения обратной совместимости, если ваши сценарии использования зависят от старого синтаксиса.

allow_simdjson

Разрешает использование библиотеки simdjson в функциях JSON*, если доступны инструкции AVX2. Если параметр отключён, будет использоваться библиотека rapidjson.

allow_special_serialization_kinds_in_output_formats

Позволяет выводить столбцы со специальными видами сериализации, такими как Sparse и Replicated, без преобразования их в полное представление столбцов. Это помогает избежать лишнего копирования данных при форматировании.

allow_statistics_optimize

Beta feature. Learn more.

Псевдонимы: allow_statistic_optimize

Разрешает использование статистики для оптимизации запросов

allow_suspicious_codecs

Если значение — true, позволяет указывать бессмысленные кодеки сжатия.

allow_suspicious_fixed_string_types

В операторе CREATE TABLE позволяет создавать столбцы типа FixedString(n) с n > 256. FixedString с длиной >= 256 считается подозрительным и, скорее всего, указывает на неправильное использование.

allow_suspicious_indices

Отклоняет первичные/вторичные индексы и ключи сортировки с одинаковыми выражениями

allow_suspicious_low_cardinality_types

Разрешает или запрещает использование LowCardinality с типами данных фиксированного размера 8 байт или меньше: числовыми типами данных и FixedString(8_bytes_or_less).

Для небольших фиксированных значений использование LowCardinality обычно неэффективно, так как ClickHouse хранит числовой индекс для каждой строки. В результате:

  • Использование дискового пространства может увеличиться.
  • Потребление RAM может быть выше в зависимости от размера словаря.
  • Некоторые функции могут работать медленнее из-за дополнительных операций кодирования/декодирования.

Время слияний в таблицах с движком MergeTree может увеличиваться по всем причинам, описанным выше.

Возможные значения:

  • 1 — использование LowCardinality не ограничено.
  • 0 — использование LowCardinality ограничено.

allow_suspicious_primary_key

Разрешить использование подозрительных PRIMARY KEY/ORDER BY для MergeTree (например, SimpleAggregateFunction).

allow_suspicious_ttl_expressions

Отклоняет выражения TTL, которые не зависят ни от одного столбца таблицы. В большинстве случаев это указывает на ошибку пользователя.

allow_suspicious_types_in_group_by

Разрешает или запрещает использование типов Variant и Dynamic в ключах GROUP BY.

allow_suspicious_types_in_order_by

Разрешает или запрещает использование типов Variant и Dynamic в ключах ORDER BY.

allow_suspicious_variant_types

В операторе CREATE TABLE можно указывать тип Variant с вариантами похожих типов (например, с разными числовыми типами или типами даты). Включение этого параметра может привести к неоднозначности при работе со значениями с похожими типами.

allow_unrestricted_reads_from_keeper

Разрешает неограниченное (без условия по пути) чтение из таблицы system.zookeeper; может быть удобным, но небезопасно для ZooKeeper.

alter_move_to_space_execute_async

Выполнять ALTER TABLE MOVE ... TO [DISK|VOLUME] в асинхронном режиме

alter_partition_verbose_result

Включает или отключает отображение информации о частях, к которым были успешно применены операции по работе с партициями и частями. Применимо к ATTACH PARTITION|PART и FREEZE PARTITION.

Возможные значения:

  • 0 — отключить подробный вывод.
  • 1 — включить подробный вывод.

Пример

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 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘

alter_sync

Псевдонимы: replication_alter_partitions_sync

Позволяет настроить ожидание выполнения действий на репликах при выполнении запросов ALTER, OPTIMIZE или TRUNCATE.

Возможные значения:

  • 0 — Не ждать.
  • 1 — Ждать выполнения на собственной реплике.
  • 2 — Ждать выполнения на всех репликах.

Значение по умолчанию в Cloud: 1.

Примечание

alter_sync применим только к таблицам Replicated; на изменения таблиц, не являющихся Replicated, он никак не влияет.

alter_update_mode

Режим выполнения ALTER-запросов, которые содержат команды UPDATE.

Возможные значения:

  • heavy — выполняется обычная мутация.
  • lightweight — выполняется легковесное обновление, если это возможно, в противном случае — обычная мутация.
  • lightweight_force — выполняется легковесное обновление, если это возможно, в противном случае выбрасывается исключение.

analyze_index_with_space_filling_curves

Если таблица использует кривую, заполняющую пространство, в своём индексе, например ORDER BY mortonEncode(x, y) или ORDER BY hilbertEncode(x, y), и в запросе есть условия по её аргументам, например x >= 10 AND x <= 20 AND y >= 20 AND y <= 30, то для анализа индекса используется эта кривая.

analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested

Разрешает добавлять составные идентификаторы к полю типа Nested. Это настройка совместимости, поскольку она изменяет результат запроса. Если настройка отключена, SELECT a.b.c FROM table ARRAY JOIN a не работает, а SELECT a FROM table не включает столбец a.b.c в результат для Nested a.

analyzer_compatibility_join_using_top_level_identifier

Принудительно разрешать идентификатор в JOIN USING на основе проекции (например, в запросе SELECT a + 1 AS b FROM t1 JOIN t2 USING (b) соединение будет выполняться по условию t1.a + 1 = t2.b, а не по t1.b = t2.b).

any_join_distinct_right_table_keys

Включает устаревшее поведение сервера ClickHouse в операциях ANY INNER|LEFT JOIN.

Примечание

Используйте этот параметр только для обратной совместимости, если ваши сценарии зависят от устаревшего поведения JOIN.

Когда устаревшее поведение включено:

  • Результаты операций t1 ANY LEFT JOIN t2 и t2 ANY RIGHT JOIN t1 не одинаковы, потому что ClickHouse использует логику отображения ключей таблицы слева направо по схеме «многие-к-одному».
  • Результаты операций ANY INNER JOIN содержат все строки из левой таблицы, как и операции SEMI LEFT JOIN.

Когда устаревшее поведение отключено:

  • Результаты операций t1 ANY LEFT JOIN t2 и t2 ANY RIGHT JOIN t1 одинаковы, потому что ClickHouse использует логику, обеспечивающую отображение ключей по схеме «один-ко-многим» в операциях ANY RIGHT JOIN.
  • Результаты операций ANY INNER JOIN содержат одну строку на ключ из левой и правой таблиц.

Возможные значения:

  • 0 — устаревшее поведение отключено.
  • 1 — устаревшее поведение включено.

См. также:

apply_deleted_mask

Включает фильтрацию строк, удалённых с помощью легковесного удаления (lightweight DELETE). Если параметр отключён, запрос сможет читать эти строки. Это полезно для отладки и сценариев «undelete».

apply_mutations_on_fly

Если значение равно true, мутации (операторы UPDATE и DELETE), которые не материализованы в части данных, будут применяться при выполнении запросов SELECT.

apply_patch_parts

Если значение равно true, патч-части (которые представляют легковесные обновления) применяются при выполнении запросов SELECT.

apply_patch_parts_join_cache_buckets

Количество бакетов во временном кэше для применения частей патча в режиме Join.

apply_settings_from_server

Определяет, должен ли клиент принимать настройки с сервера.

Это влияет только на операции, выполняемые на стороне клиента, в частности на разбор входных данных для INSERT и форматирование результата запроса. Основная часть выполнения запроса происходит на сервере и не зависит от этого параметра.

Обычно этот параметр следует задавать в профиле пользователя (users.xml или запросы типа ALTER USER), а не через клиент (аргументы командной строки клиента, запрос SET или секция SETTINGS запроса SELECT). Через клиент его можно изменить на false, но нельзя изменить на true (потому что сервер не будет отправлять настройки, если в профиле пользователя указано apply_settings_from_server = false).

Обратите внимание, что изначально (24.12) существовал серверный параметр (send_settings_to_client), но позже он был заменён этим клиентским параметром для повышения удобства использования.

arrow_flight_request_descriptor_type

Тип дескриптора, используемого для запросов Arrow Flight. 'path' отправляет имя набора данных в виде дескриптора пути. 'command' отправляет SQL-запрос в виде дескриптора команды (требуется для Dremio).

Возможные значения:

  • 'path' — использовать FlightDescriptor::Path (значение по умолчанию, работает с большинством серверов Arrow Flight)
  • 'command' — использовать FlightDescriptor::Command с запросом SELECT (требуется для Dremio)

asterisk_include_alias_columns

Включать столбцы ALIAS для запроса с подстановочным символом (SELECT *).

Возможные значения:

  • 0 — отключено
  • 1 — включено

asterisk_include_materialized_columns

Включать столбцы MATERIALIZED для запросов с подстановочным символом (SELECT *).

Возможные значения:

  • 0 - отключено
  • 1 - включено

async_insert

Если значение установлено в true, данные из запроса INSERT помещаются в очередь и затем в фоновом режиме записываются в таблицу. Если wait_for_async_insert равно false, запрос INSERT обрабатывается почти мгновенно, в противном случае клиент будет ждать, пока данные не будут записаны в таблицу.

async_insert_busy_timeout_decrease_rate

Коэффициент экспоненциального уменьшения адаптивного тайм-аута асинхронной вставки

async_insert_busy_timeout_increase_rate

Экспоненциальный коэффициент увеличения адаптивного таймаута асинхронной вставки

async_insert_busy_timeout_max_ms

Псевдонимы: async_insert_busy_timeout_ms

Максимальное время ожидания перед сбросом накопленных данных для запроса с момента появления первых данных.

async_insert_busy_timeout_min_ms

Если автонастройка включена с помощью параметра async_insert_use_adaptive_busy_timeout, это минимальное время ожидания перед сбросом (dumping) накопленных данных на запрос, отсчитываемое с момента появления первых данных. Также служит начальнным значением для адаптивного алгоритма.

async_insert_deduplicate

Для асинхронных запросов INSERT в реплицируемой таблице определяет, нужно ли выполнять дедупликацию вставляемых блоков.

async_insert_max_data_size

Максимальный размер в байтах необработанных данных, собираемых для одного запроса перед вставкой.

async_insert_max_query_number

Максимальное количество запросов INSERT, прежде чем данные будут фактически вставлены. Действует только если настройка async_insert_deduplicate установлена в 1.

async_insert_poll_timeout_ms

Тайм-аут опроса очереди асинхронных вставок

async_insert_use_adaptive_busy_timeout

Если значение параметра — true, используется адаптивный таймаут ожидания занятости для асинхронных вставок.

async_query_sending_for_remote

Включает асинхронное создание подключений и отправку запросов при выполнении удалённого запроса.

По умолчанию параметр включён.

async_socket_for_remote

Включает асинхронное чтение из сокета при выполнении удалённого запроса.

Включено по умолчанию.

azure_allow_parallel_part_upload

Использует несколько потоков для многосоставной (multipart) загрузки в Azure.

azure_check_objects_after_upload

Проверять каждый загруженный объект в Azure Blob Storage, чтобы убедиться, что загрузка выполнена успешно

azure_connect_timeout_ms

Таймаут подключения к хосту для дисков Azure.

azure_create_new_file_on_insert

Включает или отключает создание нового файла при каждой вставке в таблицы движка Azure

azure_ignore_file_doesnt_exist

Игнорировать отсутствие файла при чтении по определённым ключам.

Возможные значения:

  • 1 — SELECT возвращает пустой результат.
  • 0 — SELECT генерирует исключение.

azure_list_object_keys_size

Максимальное количество файлов, которое может быть возвращено одним пакетным запросом ListObject

azure_max_blocks_in_multipart_upload

Максимальное количество блоков в multipart‑загрузке для Azure.

azure_max_get_burst

Максимальное количество запросов, которые могут быть выполнены одновременно до достижения лимита запросов в секунду. По умолчанию значение 0 соответствует azure_max_get_rps.

azure_max_get_rps

Порог числа Azure GET-запросов в секунду, после которого включается ограничение скорости. Ноль означает отсутствие лимита.

azure_max_inflight_parts_for_one_file

Максимальное количество одновременно загружаемых частей в запросе многочастичной загрузки. 0 означает без ограничений.

azure_max_put_burst

Максимальное число запросов, которые могут быть выполнены одновременно до достижения предела запросов в секунду. Значение по умолчанию (0) соответствует azure_max_put_rps.

azure_max_put_rps

Ограничение на количество запросов PUT к Azure в секунду до начала применения троттлинга. Ноль означает отсутствие ограничений.

azure_max_redirects

Максимальное допустимое количество переходов при перенаправлении Azure.

azure_max_single_part_copy_size

Максимальный размер объекта для копирования с использованием одночастичного копирования в хранилище Azure Blob Storage.

azure_max_single_part_upload_size

Максимальный размер объекта для однокомпонентной загрузки (singlepart upload) в Azure Blob Storage.

azure_max_single_read_retries

Максимальное количество повторных попыток при одиночном чтении из Azure Blob Storage.

azure_max_unexpected_write_error_retries

Максимальное количество повторных попыток в случае непредвиденных ошибок при записи в Azure Blob Storage

azure_max_upload_part_size

Максимальный размер фрагмента при многокомпонентной (multipart) загрузке в Azure Blob Storage.

azure_min_upload_part_size

Минимальный размер части, отправляемой при многосоставной загрузке в Azure Blob Storage.

azure_request_timeout_ms

Таймаут простоя при отправке и получении данных в/из Azure. Операция считается неуспешной, если один вызов чтения или записи по TCP блокируется дольше этого времени.

azure_sdk_max_retries

Максимальное количество повторных попыток в Azure SDK

azure_sdk_retry_initial_backoff_ms

Минимальная задержка между повторными попытками в Azure SDK

azure_sdk_retry_max_backoff_ms

Максимальный интервал ожидания между повторными попытками в Azure SDK

azure_skip_empty_files

Включает или отключает пропуск пустых файлов в движке S3.

Возможные значения:

  • 0 — SELECT выбрасывает исключение, если пустой файл не совместим с запрошенным форматом.
  • 1 — SELECT возвращает пустой результат для пустого файла.

azure_strict_upload_part_size

Точный размер части, загружаемой при многосоставной (multipart) загрузке в Azure Blob Storage.

azure_throw_on_zero_files_match

Выдавать ошибку, если по правилам раскрытия шаблона (glob) не было найдено ни одного файла.

Возможные значения:

  • 1 — SELECT генерирует исключение.
  • 0 — SELECT возвращает пустой результат.

azure_truncate_on_insert

Включает или отключает очистку таблицы перед вставкой в таблицы движка Azure.

azure_upload_part_size_multiply_factor

Умножает azure_min_upload_part_size на этот коэффициент каждый раз, когда в результате одной операции записи в Azure Blob Storage было загружено не менее azure_multiply_parts_count_threshold частей.

azure_upload_part_size_multiply_parts_count_threshold

Каждый раз, когда в Azure Blob Storage загружается указанное количество частей, значение azure_min_upload_part_size умножается на azure_upload_part_size_multiply_factor.

azure_use_adaptive_timeouts

Если параметр имеет значение true, то для всех запросов к Azure первые две попытки выполняются с короткими тайм-аутами отправки и получения. Если параметр имеет значение false, то все попытки выполняются с одинаковыми тайм-аутами.

backup_restore_batch_size_for_keeper_multi

Максимальный размер пакета для запроса multi к [Zoo]Keeper при выполнении резервного копирования или восстановления

backup_restore_batch_size_for_keeper_multiread

Максимальный размер пакета для запроса multiread к [Zoo]Keeper при выполнении резервного копирования или восстановления

backup_restore_failure_after_host_disconnected_for_seconds

Если хост во время операции BACKUP ON CLUSTER или RESTORE ON CLUSTER не воссоздаёт свой эфемерный узел «alive» в ZooKeeper в течение этого времени, то вся операция резервного копирования или восстановления считается неуспешной. Это значение должно быть больше любого разумного времени, необходимого хосту для повторного подключения к ZooKeeper после сбоя. Ноль означает отсутствие ограничения.

backup_restore_finish_timeout_after_error_sec

Время, в течение которого инициатор должен ждать, пока другие хосты отреагируют на узел «error» и прекратят работу над текущей операцией BACKUP ON CLUSTER или RESTORE ON CLUSTER.

backup_restore_keeper_fault_injection_probability

Приблизительная вероятность сбоя запроса к Keeper во время операции резервного копирования или восстановления. Допустимые значения лежат в диапазоне [0.0f, 1.0f].

backup_restore_keeper_fault_injection_seed

0 — случайное значение (seed), в противном случае — значение настройки

backup_restore_keeper_max_retries

Максимальное количество повторных попыток для операций [Zoo]Keeper, выполняемых во время операции BACKUP или RESTORE. Значение должно быть достаточно большим, чтобы вся операция не завершилась с ошибкой из-за временного сбоя [Zoo]Keeper.

backup_restore_keeper_max_retries_while_handling_error

Максимальное количество повторных попыток выполнения операций [Zoo]Keeper при обработке ошибки операций BACKUP ON CLUSTER или RESTORE ON CLUSTER.

backup_restore_keeper_max_retries_while_initializing

Максимальное число повторных попыток выполнения операций [Zoo]Keeper при инициализации операции BACKUP ON CLUSTER или RESTORE ON CLUSTER.

backup_restore_keeper_retry_initial_backoff_ms

Начальный интервал ожидания (backoff) для операций [Zoo]Keeper во время резервного копирования или восстановления

backup_restore_keeper_retry_max_backoff_ms

Максимальный интервал ожидания (backoff) перед повторной попыткой операций [Zoo]Keeper во время резервного копирования или восстановления

backup_restore_keeper_value_max_size

Максимальный размер данных узла [Zoo]Keeper во время резервного копирования

backup_restore_s3_retry_attempts

Настройка для Aws::Client::RetryStrategy; Aws::Client самостоятельно выполняет повторные попытки, значение 0 отключает повторы. Применяется только для операций резервного копирования и восстановления.

backup_restore_s3_retry_initial_backoff_ms

Начальная задержка в миллисекундах перед первой повторной попыткой во время резервного копирования и восстановления. При каждой последующей попытке задержка увеличивается экспоненциально, вплоть до максимального значения, заданного параметром backup_restore_s3_retry_max_backoff_ms.

backup_restore_s3_retry_jitter_factor

Коэффициент джиттера, применяемый к интервалу ожидания перед повторной попыткой (backoff delay) в Aws::Client::RetryStrategy во время операций резервного копирования и восстановления. Вычисленный backoff delay умножается на случайный коэффициент в диапазоне [1.0, 1.0 + jitter], но не превышает максимальное значение backup_restore_s3_retry_max_backoff_ms. Должен находиться в диапазоне [0.0, 1.0].

backup_restore_s3_retry_max_backoff_ms

Максимальная задержка в миллисекундах между повторными попытками при операциях резервного копирования и восстановления.

backup_slow_all_threads_after_retryable_s3_error

Если установлено значение true, все потоки, выполняющие S3-запросы к одной и той же конечной точке резервного копирования, замедляются после того, как любой из S3-запросов сталкивается с ошибкой S3, для которой возможна повторная попытка (retryable), например «Slow Down».
Если установлено значение false, каждый поток обрабатывает задержку (backoff) при S3-запросах независимо от остальных.

cache_warmer_threads

ClickHouse Cloud only

Применяется только в ClickHouse Cloud. Количество фоновых потоков для предварительной загрузки новых частей данных в файловый кэш, когда включен cache_populated_by_fetch. Ноль — чтобы отключить.

calculate_text_stack_trace

Генерировать текстовую трассировку стека в случае исключений во время выполнения запроса. Это значение по умолчанию. Для этого требуется разрешение символов, что может замедлить фаззинговые тесты при выполнении большого количества ошибочных запросов. В нормальных случаях не следует отключать эту опцию.

cancel_http_readonly_queries_on_client_close

Отменяет HTTP-запросы на чтение (например, SELECT), когда клиент закрывает соединение, не дожидаясь ответа.

Значение по умолчанию в Cloud: 0.

cast_ipv4_ipv6_default_on_conversion_error

Оператор CAST к типу IPv4, оператор CAST к типу IPv6, а также функции toIPv4 и toIPv6 будут возвращать значение по умолчанию вместо генерации исключения при ошибке преобразования.

cast_keep_nullable

Включает или отключает сохранение типа данных Nullable при операциях CAST.

Если настройка включена и аргумент функции CAST имеет тип Nullable, результат также приводится к типу Nullable. Если настройка отключена, результат всегда имеет точно целевой тип.

Возможные значения:

  • 0 — результат CAST имеет точно указанный целевой тип.
  • 1 — если тип аргумента — Nullable, результат CAST приводится к Nullable(DestinationDataType).

Примеры

Следующий запрос возвращает результат точно целевого типа данных:

SET cast_keep_nullable = 0;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);

Результат:

┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Int32                                             │
└───┴───────────────────────────────────────────────────┘

Следующий запрос добавляет модификатор Nullable к целевому типу данных:

SET cast_keep_nullable = 1;
SELECT CAST(toNullable(toInt32(0)) AS Int32) as x, toTypeName(x);

Результат:

┌─x─┬─toTypeName(CAST(toNullable(toInt32(0)), 'Int32'))─┐
│ 0 │ Nullable(Int32)                                   │
└───┴───────────────────────────────────────────────────┘

См. также

  • Функция CAST

cast_string_to_date_time_mode

Позволяет выбрать парсер текстового представления даты и времени при приведении значения типа String к DateTime.

Возможные значения:

  • 'best_effort' — Включает расширенный парсинг.

    ClickHouse может разбирать базовый формат YYYY-MM-DD HH:MM:SS и все форматы даты и времени ISO 8601. Например, '2018-06-08T01:02:03.000Z'.

  • 'best_effort_us' — Аналогичен best_effort (см. различия в parseDateTimeBestEffortUS)

  • 'basic' — Использовать базовый парсер.

    ClickHouse может разбирать только базовый формат YYYY-MM-DD HH:MM:SS или YYYY-MM-DD. Например, 2019-08-20 10:18:56 или 2019-08-20.

См. также:

cast_string_to_dynamic_use_inference

Использовать вывод типов при преобразовании String в Dynamic

cast_string_to_variant_use_inference

Использовать определение типов при преобразовании String в Variant.

check_query_single_value_result

Определяет уровень детализации результата выполнения запроса CHECK TABLE для движков семейства MergeTree.

Возможные значения:

  • 0 — запрос показывает статус проверки для каждой отдельной части данных таблицы.
  • 1 — запрос показывает общий статус проверки таблицы.

check_referential_table_dependencies

Проверить, что DDL‑запрос (например, DROP TABLE или RENAME) не нарушит ссылочные зависимости

check_table_dependencies

Проверять, что DDL-запрос (например, DROP TABLE или RENAME) не приводит к нарушению зависимостей

checksum_on_read

Проверяет контрольные суммы при чтении. По умолчанию параметр включён и всегда должен быть включён в продакшене. Не ожидайте каких-либо преимуществ от его отключения. Его можно использовать только для экспериментов и бенчмарков. Настройка применима только к таблицам семейства MergeTree. Контрольные суммы всегда проверяются для других движков таблиц и при получении данных по сети.

cloud_mode

Режим Cloud

cloud_mode_database_engine

Движок базы данных, допускаемый в Cloud. 1 — переписывать DDL‑запросы для использования базы данных Replicated, 2 — переписывать DDL‑запросы для использования базы данных Shared

cloud_mode_engine

Семейство движков, разрешённое в Cloud.

  • 0 - разрешить всё
  • 1 - переписывать DDL-запросы на использование *ReplicatedMergeTree
  • 2 - переписывать DDL-запросы на использование SharedMergeTree
  • 3 - переписывать DDL-запросы на использование SharedMergeTree, за исключением случаев, когда явно указан переданный remote-диск

UInt64, чтобы минимизировать публичную часть

cluster_for_parallel_replicas

Beta feature. Learn more.

Кластер для сегмента, в котором расположен текущий сервер

cluster_function_process_archive_on_multiple_nodes

Если имеет значение true, повышает производительность обработки архивов в кластерных функциях. Для обеспечения совместимости и предотвращения ошибок при обновлении до версии 25.7+ при использовании кластерных функций с архивами в более ранних версиях должно иметь значение false.

cluster_table_function_buckets_batch_size

Определяет приблизительный размер пакета данных (в байтах), используемого при распределённой обработке задач в табличных функциях кластера с разбиением по bucket. Система накапливает данные, пока не будет достигнуто как минимум это значение. Фактический размер может быть немного больше для выравнивания по границам данных.

cluster_table_function_split_granularity

Определяет, как данные разбиваются на задания при выполнении CLUSTER TABLE FUNCTION.

Этот параметр задаёт гранулярность распределения работы по кластеру:

  • file — каждое задание обрабатывает целый файл.
  • bucket — задания создаются для каждого внутреннего блока данных внутри файла (например, для групп строк в Parquet).

Выбор более мелкой гранулярности (например, bucket) может повысить степень параллелизма при работе с небольшим числом крупных файлов. Например, если Parquet-файл содержит несколько групп строк, использование гранулярности bucket позволяет обрабатывать каждую группу независимо разными воркерами.

collect_hash_table_stats_during_aggregation

Включает сбор статистики хеш-таблиц для оптимизации распределения памяти

collect_hash_table_stats_during_joins

Включает сбор статистики хеш-таблиц для оптимизации выделения памяти.

compatibility

Параметр compatibility приводит к тому, что ClickHouse использует значения параметров по умолчанию из предыдущей версии ClickHouse, при этом предыдущая версия указывается в значении этого параметра.

Если для параметров заданы значения, отличные от значений по умолчанию, то они сохраняются (параметр compatibility влияет только на параметры, которые не были изменены).

Этот параметр принимает номер версии ClickHouse в виде строки, например 22.3, 22.8. Пустое значение означает, что параметр отключён.

По умолчанию параметр отключён.

Примечание

В ClickHouse Cloud значение параметра совместимости по умолчанию на уровне сервиса должно быть установлено службой поддержки ClickHouse Cloud. Пожалуйста, создайте обращение, чтобы его установить. Однако параметр совместимости может быть переопределён на уровне пользователя, роли, профиля, запроса или сессии, используя стандартные механизмы настройки ClickHouse — например, SET compatibility = '22.3' в сессии или SETTINGS compatibility = '22.3' в запросе.

compatibility_ignore_auto_increment_in_create_table

Игнорировать ключевое слово AUTO_INCREMENT в объявлении столбца, если установлено значение true, в противном случае возвращать ошибку. Это упрощает миграцию с MySQL.

compatibility_ignore_collation_in_create_table

Совместимость: игнорировать COLLATION в CREATE TABLE

compile_aggregate_expressions

Включает или отключает JIT-компиляцию агрегатных функций в нативный код. Включение этого параметра может повысить производительность.

Возможные значения:

  • 0 — Агрегация выполняется без JIT-компиляции.
  • 1 — Агрегация выполняется с использованием JIT-компиляции.

См. также

compile_expressions

Компилирует некоторые скалярные функции и операторы в нативный код.

compile_sort_description

Компилировать описание сортировки в нативный код.

connect_timeout

Таймаут подключения при отсутствии реплик.

connect_timeout_with_failover_ms

Таймаут в миллисекундах для подключения к удалённому серверу для движка distributed таблицы, если в определении кластера заданы секции shard и replica. В случае неудачи выполняется несколько попыток подключения к различным репликам.

connect_timeout_with_failover_secure_ms

Таймаут подключения при выборе первой здоровой реплики (для защищённых соединений).

connection_pool_max_wait_ms

Время ожидания подключения в миллисекундах, когда пул подключений заполнен.

Возможные значения:

  • Положительное целое число.
  • 0 — бесконечное время ожидания.

connections_with_failover_max_tries

Максимальное количество попыток подключения к каждой реплике для движка таблицы Distributed.

convert_query_to_cnf

Если установлено значение true, запрос SELECT будет преобразован в конъюнктивную нормальную форму (CNF). В некоторых сценариях переписывание запроса в CNF может выполняться быстрее (см. этот Github issue с объяснением).

Например, обратите внимание, что следующий запрос SELECT не изменяется (поведение по умолчанию):

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;

Результат:

┌─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                              │
└────────────────────────────────────────────────────────────────┘

Установим параметр convert_query_to_cnf в значение true и посмотрим, что изменится:

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;

Обратите внимание, что предложение WHERE переписано в КНФ, но результирующий набор данных идентичен — булева логика не изменилась:

┌─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                                                                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Возможные значения: true, false

correlated_subqueries_default_join_kind

Управляет типом JOIN в декоррелированном плане запроса. Значение по умолчанию — right, что означает, что декоррелированный план будет содержать операции RIGHT JOIN с подзапросом в правой части.

Возможные значения:

  • left — в процессе декорреляции будут формироваться операции LEFT JOIN, а входная таблица будет находиться слева.
  • right — в процессе декорреляции будут формироваться операции RIGHT JOIN, а входная таблица будет находиться справа.

correlated_subqueries_substitute_equivalent_expressions

Используйте фильтрующие выражения для вывода эквивалентных выражений и их подстановки вместо создания CROSS JOIN.

count_distinct_implementation

Определяет, какая из функций семейства uniq* должна использоваться для вычисления выражения COUNT(DISTINCT ...).

Возможные значения:

count_distinct_optimization

Переписывать выражение count distinct в подзапрос с использованием GROUP BY

count_matches_stop_at_empty_match

Останавливает подсчёт, как только шаблон даёт совпадение нулевой длины в функции countMatches.

create_if_not_exists

Включает IF NOT EXISTS для оператора CREATE по умолчанию. Если включена эта настройка или указан IF NOT EXISTS, и таблица с указанным именем уже существует, исключение не будет сгенерировано.

create_index_ignore_unique

Игнорирует ключевое слово UNIQUE в CREATE UNIQUE INDEX. Используется для тестов совместимости с SQL.

create_replicated_merge_tree_fault_injection_probability

Вероятность инъекции ошибки при создании таблицы после создания метаданных в ZooKeeper

create_table_empty_primary_key_by_default

Разрешает создавать таблицы *MergeTree без первичного ключа, если не указаны ORDER BY и PRIMARY KEY

cross_join_min_bytes_to_compress

Минимальный размер блока для сжатия в CROSS JOIN. Нулевое значение отключает этот порог. Блок сжимается, когда достигнут хотя бы один из двух порогов (по строкам или по байтам).

cross_join_min_rows_to_compress

Минимальное количество строк для сжатия блока в CROSS JOIN. Нулевое значение означает отключение этого порога. Блок сжимается, как только достигается один из двух порогов (по строкам или по байтам).

data_type_default_nullable

Определяет, будут ли типы данных без явных модификаторов NULL или NOT NULL в определении столбца считаться Nullable.

Возможные значения:

  • 1 — Типы данных в определениях столбцов по умолчанию считаются Nullable.
  • 0 — Типы данных в определениях столбцов по умолчанию считаются не Nullable.

database_atomic_wait_for_drop_and_detach_synchronously

Добавляет модификатор SYNC ко всем запросам DROP и DETACH.

Возможные значения:

  • 0 — запросы выполняются с задержкой.
  • 1 — запросы выполняются без задержки.

database_replicated_allow_explicit_uuid

0 — Запретить явное указание UUID для таблиц в реплицируемых базах данных. 1 — Разрешить. 2 — Разрешить, но игнорировать указанный UUID и вместо этого генерировать случайный.

database_replicated_allow_heavy_create

Разрешить долго выполняющиеся DDL-запросы (CREATE AS SELECT и POPULATE) в движке базы данных Replicated. Учтите, что это может надолго заблокировать очередь DDL-запросов.

database_replicated_allow_only_replicated_engine

Разрешает создавать в базе данных с движком Replicated только таблицы Replicated

database_replicated_allow_replicated_engine_arguments

0 - Не разрешать явно указывать путь ZooKeeper и имя реплики для таблиц *MergeTree в реплицируемых базах данных. 1 - Разрешать. 2 - Разрешать, но игнорировать указанный путь и вместо этого использовать путь по умолчанию. 3 - Разрешать и не выводить предупреждение в лог.

database_replicated_always_detach_permanently

Выполнять DETACH TABLE как DETACH TABLE PERMANENTLY, если в качестве движка базы данных используется Replicated

database_replicated_enforce_synchronous_settings

Принудительно выполняет синхронное ожидание для некоторых запросов (см. также database_atomic_wait_for_drop_and_detach_synchronously, mutations_sync, alter_sync). Не рекомендуется включать этот параметр.

database_replicated_initial_query_timeout_sec

Задает интервал (в секундах), в течение которого начальный DDL-запрос должен ожидать, пока база данных Replicated обработает предыдущие элементы очереди DDL.

Возможные значения:

  • Положительное целое число.
  • 0 — без ограничений.

database_shared_drop_table_delay_seconds

Задержка в секундах перед фактическим удалением таблицы из базы данных типа Shared. Это позволяет восстановить таблицу в течение этого времени с помощью оператора UNDROP TABLE.

decimal_check_overflow

Проверка переполнения при выполнении десятичных арифметических и сравнительных операций

deduplicate_blocks_in_dependent_materialized_views

Включает или отключает проверку дедупликации для materialized view, которые получают данные из таблиц Replicated*.

Возможные значения:

0 — отключено.
1 — включено.

При включении ClickHouse выполняет дедупликацию блоков в materialized view, которые зависят от таблиц Replicated*. Этот параметр полезен для того, чтобы materialized view не содержали дублирующихся данных, когда операция вставки повторяется из-за сбоя.

См. также

default_materialized_view_sql_security

Позволяет задать значение по умолчанию для параметра SQL SECURITY при создании materialized view. Подробнее о SQL SECURITY.

Значение по умолчанию — DEFINER.

default_max_bytes_in_join

Максимальный размер таблицы с правой стороны, если необходимо ограничение, но max_bytes_in_join не установлен.

default_normal_view_sql_security

Позволяет задать значение по умолчанию для опции SQL SECURITY при создании обычного представления. Подробнее о SQL security.

Значение по умолчанию — INVOKER.

default_table_engine

Движок таблицы по умолчанию, используемый, когда ENGINE не задан в операторе CREATE.

Возможные значения:

  • строка с любым допустимым именем движка таблицы

Значение по умолчанию в Cloud: SharedMergeTree.

Пример

Запрос:

SET default_table_engine = 'Log';

SELECT name, value, changed FROM system.settings WHERE name = 'default_table_engine';

Результат:

┌─name─────────────────┬─value─┬─changed─┐
│ default_table_engine │ Log   │       1 │
└──────────────────────┴───────┴─────────┘

В этом примере любая новая таблица, для которой не указан Engine, будет использовать движок таблицы Log:

Запрос:

CREATE TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TABLE my_table;

Результат:

┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘

default_temporary_table_engine

То же, что и default_table_engine, но для временных таблиц.

В этом примере любая новая временная таблица, для которой не указан Engine, будет использовать движок таблицы Log:

Запрос:

SET default_temporary_table_engine = 'Log';

CREATE TEMPORARY TABLE my_table (
    x UInt32,
    y UInt32
);

SHOW CREATE TEMPORARY TABLE my_table;

Результат:

┌─statement────────────────────────────────────────────────────────────────┐
│ CREATE TEMPORARY TABLE default.my_table
(
    `x` UInt32,
    `y` UInt32
)
ENGINE = Log
└──────────────────────────────────────────────────────────────────────────┘

default_view_definer

Позволяет задать значение DEFINER по умолчанию при создании представления. Подробнее о безопасности SQL.

Значение по умолчанию — CURRENT_USER.

delta_lake_enable_engine_predicate

Включает внутреннее отсечение данных в delta-kernel.

delta_lake_enable_expression_visitor_logging

Включает логирование уровня Test для посетителя выражений DeltaLake. Такие логи могут быть чрезмерно подробными даже для тестового логирования.

delta_lake_insert_max_bytes_in_data_file

Определяет предельный размер в байтах для одного файла данных, вставляемого в Delta Lake.

delta_lake_insert_max_rows_in_data_file

Задаёт максимальное число строк в одном вставляемом файле данных Delta Lake.

delta_lake_log_metadata

Включает логирование файлов метаданных Delta Lake в системную таблицу.

delta_lake_snapshot_end_version

Конечная версия snapshot’а Delta Lake для чтения. Значение -1 означает чтение последней версии (значение 0 — допустимая версия snapshot’а).

delta_lake_snapshot_start_version

Начальная версия снимка Delta Lake для чтения. Значение -1 означает чтение последней версии (значение 0 является допустимой версией снимка).

delta_lake_snapshot_version

Версия снимка Delta Lake для чтения. Значение -1 означает, что будет прочитана последняя версия (значение 0 является допустимой версией снимка).

delta_lake_throw_on_engine_predicate_error

Включает выброс исключения при ошибке анализа предиката сканирования в delta-kernel.

describe_compact_output

Если включено, в результат запроса DESCRIBE включаются только имена столбцов и их типы.

describe_include_subcolumns

Включает вывод описаний подстолбцов для запроса DESCRIBE. Например, элементов типа Tuple или подстолбцов типов данных Map, Nullable или Array.

Возможные значения:

  • 0 — Подстолбцы не включаются в запросы DESCRIBE.
  • 1 — Подстолбцы включаются в запросы DESCRIBE.

Пример

См. пример использования команды DESCRIBE.

describe_include_virtual_columns

Если значение параметра равно true, виртуальные столбцы таблицы будут включены в результат запроса DESCRIBE

dialect

Какой диалект будет использоваться для парсинга запроса

dictionary_validate_primary_key_type

Проверять тип первичного ключа для словарей. По умолчанию тип id для простых макетов словаря неявно приводится к UInt64.

distinct_overflow_mode

Определяет, что происходит, когда объём данных превышает одно из ограничений.

Возможные значения:

  • throw: сгенерировать исключение (значение по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат так, как если бы исходные данные закончились.

distributed_aggregation_memory_efficient

Включает режим экономии памяти при распределённой агрегации.

distributed_background_insert_batch

Псевдонимы: distributed_directory_monitor_batch_inserts

Включает или отключает отправку вставляемых данных пакетами.

Когда пакетная отправка включена, движок таблицы Distributed пытается отправлять несколько файлов с вставленными данными за одну операцию вместо отправки каждого файла отдельно. Пакетная отправка повышает производительность кластера за счет более эффективного использования ресурсов сервера и сети.

Возможные значения:

  • 1 — Включено.
  • 0 — Отключено.

distributed_background_insert_max_sleep_time_ms

Псевдонимы: distributed_directory_monitor_max_sleep_time_ms

Максимальный интервал между отправками данных движком таблицы Distributed. Ограничивает экспоненциальный рост значения интервала, задаваемого параметром distributed_background_insert_sleep_time_ms.

Возможные значения:

  • Положительное целое число миллисекунд.

distributed_background_insert_sleep_time_ms

Псевдонимы: distributed_directory_monitor_sleep_time_ms

Базовый интервал отправки данных для табличного движка Distributed. Фактический интервал экспоненциально увеличивается при возникновении ошибок.

Возможные значения:

  • Положительное целое число миллисекунд.

distributed_background_insert_split_batch_on_failure

Псевдонимы: distributed_directory_monitor_split_batch_on_failure

Включает или отключает разбиение пакетов при сбоях.

Иногда отправка конкретного пакета на удалённый сегмент может завершиться сбоем из-за сложного конвейера обработки (например, MATERIALIZED VIEW с GROUP BY) по причине Memory limit exceeded или аналогичных ошибок. В таком случае повторная попытка не поможет (и это «застопорит» фоновые распределённые вставки для таблицы), но отправка файлов из этого пакета по одному может завершиться успешной операцией INSERT.

Поэтому установка этой настройки в 1 отключит пакетную отправку для таких пакетов (т. е. временно отключит distributed_background_insert_batch для неудачных пакетов).

Возможные значения:

  • 1 — Включено.
  • 0 — Отключено.
Примечание

Эта настройка также влияет на повреждённые пакеты (которые могут появиться из-за аварийного завершения работы сервера (машины) и отсутствия fsync_after_insert/fsync_directories для движка таблицы Distributed).

Примечание

Не стоит полагаться на автоматическое разбиение пакетов, так как это может негативно сказаться на производительности.

distributed_background_insert_timeout

Псевдонимы: insert_distributed_timeout

Тайм-аут для запроса INSERT в распределённую таблицу. Настройка используется только при включённом insert_distributed_sync. Нулевое значение означает отсутствие тайм-аута.

distributed_cache_alignment

ClickHouse Cloud only

Оказывает влияние только в ClickHouse Cloud. Эта настройка предназначена для тестирования, не изменяйте её.

distributed_cache_bypass_connection_pool

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Позволяет обходить пул подключений распределённого кэша.

distributed_cache_connect_backoff_max_ms

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Максимальное значение экспоненциальной задержки (в миллисекундах) при создании подключения к распределённому кэшу.

distributed_cache_connect_backoff_min_ms

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Минимальное время экспоненциальной задержки (в миллисекундах) при установлении соединения с распределённым кэшем.

distributed_cache_connect_max_tries

ClickHouse Cloud only

Применяется только в ClickHouse Cloud. Количество повторных попыток подключения к распределённому кэшу при неудаче.

distributed_cache_connect_timeout_ms

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Таймаут при подключении к серверу распределённого кэша.

distributed_cache_credentials_refresh_period_seconds

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Период обновления учетных данных.

distributed_cache_data_packet_ack_window

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Размер окна отправки ACK для последовательности DataPacket в пределах одного запроса на чтение распределённого кэша.

distributed_cache_discard_connection_if_unread_data

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Разрывать соединение, если остаются непрочитанные данные.

distributed_cache_fetch_metrics_only_from_current_az

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Получать метрики только из текущей зоны доступности в system.distributed_cache_metrics и system.distributed_cache_events.

distributed_cache_log_mode

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Режим записи в system.distributed_cache_log.

distributed_cache_max_unacked_inflight_packets

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Максимальное число неподтверждённых пакетов «в полёте» в одном запросе чтения распределённого кэша.

distributed_cache_min_bytes_for_seek

ClickHouse Cloud only

Работает только в ClickHouse Cloud. Минимальный объём данных (в байтах) для выполнения операции seek в распределённом кэше.

distributed_cache_pool_behaviour_on_limit

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Определяет поведение соединения с распределённым кэшем при достижении лимита пула.

distributed_cache_prefer_bigger_buffer_size

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Аналогична filesystem_cache_prefer_bigger_buffer_size, но применяется к распределённому кэшу.

distributed_cache_read_only_from_current_az

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Разрешает чтение только из текущей зоны доступности. Если отключён, чтение выполняется со всех серверов кэша во всех зонах доступности.

distributed_cache_read_request_max_tries

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Количество попыток повторного выполнения запроса к распределённому кэшу в случае неудачи.

distributed_cache_receive_response_wait_milliseconds

ClickHouse Cloud only

Применяется только в ClickHouse Cloud. Время ожидания в миллисекундах получения данных по запросу из распределённого кэша.

distributed_cache_receive_timeout_milliseconds

ClickHouse Cloud only

Применяется только в ClickHouse Cloud. Время ожидания в миллисекундах для получения любого ответа от распределённого кэша.

distributed_cache_receive_timeout_ms

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Тайм-аут ожидания получения данных от сервера распределённого кэша в миллисекундах. Если за этот интервал не было получено ни одного байта, будет сгенерировано исключение.

distributed_cache_send_timeout_ms

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Таймаут отправки данных на сервер распределённого кэша, в миллисекундах. Если клиенту нужно отправить данные, но он не может передать ни одного байта в течение этого интервала, выбрасывается исключение.

distributed_cache_tcp_keep_alive_timeout_ms

ClickHouse Cloud only

Применяется только в ClickHouse Cloud. Время простоя соединения с сервером распределённого кэша в миллисекундах, по истечении которого TCP начинает отправлять keepalive-пакеты.

distributed_cache_throw_on_error

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Повторно выбрасывает исключение, возникшее во время взаимодействия с распределённым кэшем, или исключение, полученное от распределённого кэша. В противном случае при ошибке происходит отказ от использования распределённого кэша.

distributed_cache_wait_connection_from_pool_milliseconds

ClickHouse Cloud only

Работает только в ClickHouse Cloud. Время ожидания в миллисекундах для получения соединения из пула подключений, если distributed_cache_pool_behaviour_on_limit установлен в значение wait.

distributed_connections_pool_size

Максимальное количество одновременных подключений к удалённым серверам для распределённой обработки всех запросов к одной distributed таблице. Рекомендуется устанавливать значение не меньше числа серверов в кластере.

distributed_ddl_entry_format_version

Версия совместимости для распределённых DDL‑запросов (ON CLUSTER)

distributed_ddl_output_mode

Устанавливает формат результата распределённого DDL-запроса.

Возможные значения:

  • throw — Возвращает результирующий набор со статусом выполнения запроса для всех хостов, на которых запрос был завершён. Если запрос завершился с ошибкой на некоторых хостах, повторно выбрасывает первое исключение. Если запрос ещё не завершён на некоторых хостах и значение distributed_ddl_task_timeout превышено, выбрасывает исключение TIMEOUT_EXCEEDED.
  • none — Аналогично throw, но распределённый DDL-запрос не возвращает результирующий набор.
  • null_status_on_timeout — Возвращает NULL в качестве статуса выполнения в некоторых строках результирующего набора вместо того, чтобы выбрасывать TIMEOUT_EXCEEDED, если запрос не завершён на соответствующих хостах.
  • never_throw — Не выбрасывает TIMEOUT_EXCEEDED и не пробрасывает исключения повторно, если запрос завершился с ошибкой на некоторых хостах.
  • none_only_active — Аналогично none, но не ждёт неактивные реплики базы данных Replicated. Примечание: в этом режиме невозможно определить, что запрос не был выполнен на некоторой реплике и будет выполнен в фоновом режиме.
  • null_status_on_timeout_only_active — Аналогично null_status_on_timeout, но не ждёт неактивные реплики базы данных Replicated.
  • throw_only_active — Аналогично throw, но не ждёт неактивные реплики базы данных Replicated.

Значение по умолчанию в Cloud: throw.

distributed_ddl_task_timeout

Устанавливает таймаут для ответов на DDL-запросы от всех хостов в кластере. Если DDL-запрос не был выполнен на всех хостах, ответ будет содержать ошибку по таймауту, и запрос будет выполнен в асинхронном режиме. Отрицательное значение означает бесконечный таймаут.

Возможные значения:

  • Положительное целое число.
  • 0 — асинхронный режим.
  • Отрицательное целое число — бесконечный таймаут.

distributed_foreground_insert

Псевдонимы: insert_distributed_sync

Включает или выключает синхронную вставку данных в таблицу Distributed.

По умолчанию при вставке данных в таблицу Distributed сервер ClickHouse отправляет данные на узлы кластера в фоновом режиме. При distributed_foreground_insert=1 данные обрабатываются синхронно, и операция INSERT считается успешно выполненной только после того, как все данные будут сохранены на всех сегментах (как минимум одна реплика для каждого сегмента, если internal_replication равен true).

Возможные значения:

  • 0 — данные вставляются в фоновом режиме.
  • 1 — данные вставляются в синхронном режиме.

Значение по умолчанию в Cloud: 0.

См. также

distributed_group_by_no_merge

Не объединять состояния агрегации с разных серверов при обработке распределённого запроса. Можно использовать, если точно известно, что на разных сегментах находятся разные ключи.

Возможные значения:

  • 0 — отключено (финальная обработка запроса выполняется на инициирующем узле).
  • 1 — не объединять состояния агрегации с разных серверов при обработке распределённого запроса (запрос полностью обрабатывается на сегменте, инициатор только проксирует данные). Можно использовать, если точно известно, что на разных сегментах находятся разные ключи.
  • 2 — то же, что и 1, но ORDER BY и LIMIT (что невозможно, когда запрос полностью обрабатывается на удалённом узле, как при distributed_group_by_no_merge=1) применяются на инициаторе (может использоваться для запросов с ORDER BY и/или LIMIT).

Пример

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_insert_skip_read_only_replicas

Включает пропуск реплик только для чтения для запросов INSERT в Distributed.

Возможные значения:

  • 0 — INSERT выполняется как обычно, и если данные попадут на реплику только для чтения, запрос завершится с ошибкой
  • 1 — инициатор будет пропускать реплики только для чтения перед отправкой данных на сегменты.

distributed_plan_default_reader_bucket_count

Experimental feature. Learn more.

Количество задач по умолчанию при параллельном чтении в распределённом запросе. Задачи распределяются между репликами.

distributed_plan_default_shuffle_join_bucket_count

Experimental feature. Learn more.

Количество бакетов по умолчанию для распределённого shuffle-hash-join.

distributed_plan_execute_locally

Experimental feature. Learn more.

Выполнять локально все задачи распределённого плана запроса. Полезно для тестирования и отладки.

distributed_plan_force_exchange_kind

Experimental feature. Learn more.

Принудительно использует указанный тип операторов Exchange между стадиями распределённого запроса.

Возможные значения:

  • '' — не задавать принудительно тип операторов Exchange, предоставить выбор оптимизатору,
  • 'Persisted' — использовать временные файлы в объектном хранилище,
  • 'Streaming' — передавать данные обмена по сети в потоковом режиме.

distributed_plan_force_shuffle_aggregation

Experimental feature. Learn more.

Использовать стратегию агрегации Shuffle вместо PartialAggregation + Merge в распределённом плане выполнения запроса.

distributed_plan_max_rows_to_broadcast

Experimental feature. Learn more.

Максимальное количество строк, при котором в распределённом плане запроса используется broadcast join вместо shuffle join.

distributed_plan_optimize_exchanges

Удаляет лишние операции обмена данными в распределённом плане запроса. Отключите для отладки.

distributed_product_mode

Изменяет поведение распределённых подзапросов.

ClickHouse применяет этот параметр, когда запрос содержит декартово произведение распределённых таблиц, то есть когда запрос к распределённой таблице содержит не-GLOBAL подзапрос к распределённой таблице.

Ограничения:

  • Применяется только для подзапросов IN и JOIN.
  • Только если в секции FROM используется распределённая таблица, содержащая более одного шарда.
  • Если сам подзапрос касается распределённой таблицы, содержащей более одного шарда.
  • Не используется для табличной функции remote.

Возможные значения:

  • deny — значение по умолчанию. Запрещает использование таких типов подзапросов (возвращается исключение «Double-distributed in/JOIN subqueries is denied»).
  • local — заменяет базу данных и таблицу в подзапросе на локальные для целевого сервера (шарда), оставляя обычные IN/JOIN.
  • global — заменяет запрос IN/JOIN на GLOBAL IN/GLOBAL JOIN.
  • allow — разрешает использование таких типов подзапросов.

distributed_push_down_limit

Включает или отключает применение LIMIT отдельно на каждом сегменте.

Это позволяет избежать:

  • Отправки лишних строк по сети;
  • Обработки строк сверх лимита на инициирующем сервере.

Начиная с версии 21.9 вы больше не можете получить неточные результаты, поскольку distributed_push_down_limit изменяет выполнение запроса только если выполняется хотя бы одно из следующих условий:

Возможные значения:

  • 0 — Отключён.
  • 1 — Включён.

См. также:

distributed_replica_error_cap

  • Тип: беззнаковое целое число (unsigned int)
  • Значение по умолчанию: 1000

Счётчик ошибок каждой реплики ограничивается этим значением, что предотвращает накопление слишком большого числа ошибок одной репликой.

См. также:

distributed_replica_error_half_life

  • Тип: секунды
  • Значение по умолчанию: 60 секунд

Определяет, как быстро ошибки в distributed таблицах обнуляются. Если реплика была недоступна некоторое время, накопила 5 ошибок, а distributed_replica_error_half_life установлен на 1 секунду, то реплика считается нормальной через 3 секунды после последней ошибки.

См. также:

distributed_replica_max_ignored_errors

  • Тип: unsigned int
  • Значение по умолчанию: 0

Количество ошибок, которые будут игнорироваться при выборе реплик (в соответствии с алгоритмом load_balancing).

См. также:

do_not_merge_across_partitions_select_final

Объединять части только в пределах одной партиции при выполнении SELECT FINAL

empty_result_for_aggregation_by_constant_keys_on_empty_set

Возвращать пустой результат при агрегации по константным ключам над пустым набором данных.

empty_result_for_aggregation_by_empty_set

Возвращать пустой результат при агрегации без ключей над пустым набором.

enable_adaptive_memory_spill_scheduler

Experimental feature. Learn more.

Инициирует работу процессора для адаптивного сброса данных из памяти во внешнее хранилище. В настоящее время поддерживается grace join.

enable_add_distinct_to_in_subqueries

Включает DISTINCT в подзапросах IN. Это компромиссная настройка: её включение может значительно уменьшить размер временных таблиц, передаваемых для распределённых подзапросов IN, и существенно ускорить передачу данных между сегментами, обеспечивая отправку только уникальных значений. Однако включение этой настройки добавляет дополнительные затраты на слияние на каждом узле, так как необходимо выполнять дедупликацию (DISTINCT). Используйте эту настройку, когда узким местом является передача по сети и дополнительные затраты на слияние приемлемы.

enable_blob_storage_log

Записывать информацию об операциях с blob-хранилищем в таблицу system.blob_storage_log

enable_deflate_qpl_codec

Если параметр включён, кодек DEFLATE_QPL может использоваться для сжатия столбцов.

enable_early_constant_folding

Включает оптимизацию запросов: анализируются результаты функций и подзапросов, и запрос переписывается, если в них есть константы

enable_extended_results_for_datetime_functions

Включает или отключает возврат результатов типа Date32 с расширенным диапазоном значений (по сравнению с типом Date) или DateTime64 с расширенным диапазоном значений (по сравнению с типом DateTime).

Возможные значения:

  • 0 — функции возвращают Date или DateTime для всех типов аргументов.
  • 1 — функции возвращают Date32 или DateTime64 для аргументов типа Date32 или DateTime64 и Date или DateTime в остальных случаях.

В таблице ниже показано поведение этой настройки для различных функций работы с датой и временем.

Функцияenable_extended_results_for_datetime_functions = 0enable_extended_results_for_datetime_functions = 1
toStartOfYearВозвращает Date или DateTimeВозвращает Date/DateTime для входного значения типа Date/DateTime
Возвращает Date32/DateTime64 для входного значения типа Date32/DateTime64
toStartOfISOYearВозвращает Date или DateTimeВозвращает Date/DateTime для аргумента типа Date/DateTime
Возвращает Date32/DateTime64 для аргумента типа Date32/DateTime64
toStartOfQuarterВозвращает значение типа Date или DateTimeВозвращает Date/DateTime для аргументов типа Date/DateTime
Возвращает Date32/DateTime64 для аргументов типа Date32/DateTime64
toStartOfMonthВозвращает Date или DateTimeВозвращает Date/DateTime для входных данных типа Date/DateTime
Возвращает Date32/DateTime64 для входных данных типа Date32/DateTime64
toStartOfWeekВозвращает Date или DateTimeВозвращает Date/DateTime для входного параметра типа Date/DateTime
Возвращает Date32/DateTime64 для входного параметра типа Date32/DateTime64
toLastDayOfWeekВозвращает значение типа Date или DateTimeВозвращает Date/DateTime для входных значений Date/DateTime
Возвращает Date32/DateTime64 для входных значений Date32/DateTime64
toLastDayOfMonthВозвращает значение типа Date или DateTimeВозвращает Date/DateTime для аргументов типа Date/DateTime
Возвращает Date32/DateTime64 для аргументов типа Date32/DateTime64
toMondayВозвращает Date или DateTimeВозвращает Date/DateTime для входных аргументов типов Date/DateTime
Возвращает Date32/DateTime64 для входных аргументов типов Date32/DateTime64
toStartOfDayВозвращает DateTime
Примечание: для значений вне диапазона 1970–2149 могут возвращаться некорректные результаты
Возвращает DateTime для аргументов типа Date/DateTime
Возвращает DateTime64 для аргументов типа Date32/DateTime64
toStartOfHourВозвращает DateTime
Примечание: для значений вне диапазона 1970–2149 возвращаются неверные результаты
Возвращает DateTime для аргументов Date/DateTime
Возвращает DateTime64 для аргументов Date32/DateTime64
toStartOfFifteenMinutesВозвращает DateTime
Примечание: может возвращать некорректные результаты для значений вне диапазона 1970–2149 годов
Возвращает DateTime для аргументов типа Date/DateTime
Возвращает DateTime64 для аргументов типа Date32/DateTime64
toStartOfTenMinutesВозвращает DateTime
Примечание: возможны некорректные результаты для значений вне диапазона 1970–2149
Возвращает DateTime для значений типов Date/DateTime
Возвращает DateTime64 для значений типов Date32/DateTime64
toStartOfFiveMinutesВозвращает DateTime
Примечание: может возвращать некорректные результаты для значений вне диапазона 1970–2149
Возвращает DateTime для аргумента типа Date/DateTime
Возвращает DateTime64 для аргумента типа Date32/DateTime64
toStartOfMinuteВозвращает DateTime
Примечание: некорректные результаты для значений вне диапазона 1970–2149 годов
Возвращает DateTime для аргументов типа Date/DateTime
Возвращает DateTime64 для аргументов типа Date32/DateTime64
timeSlotВозвращает DateTime
Примечание: может возвращать некорректные результаты для значений вне диапазона 1970–2149 годов
Возвращает DateTime для входных аргументов Date/DateTime
Возвращает DateTime64 для входных аргументов Date32/DateTime64

enable_filesystem_cache

Использовать кэш для удалённой файловой системы. Этот параметр не включает и не отключает кэш для дисков (это необходимо делать через конфигурацию дисков), но позволяет при необходимости обходить кэш для отдельных запросов.

enable_filesystem_cache_log

Включает ведение журнала кэширования файловой системы для каждого запроса

enable_filesystem_cache_on_write_operations

Включает или отключает кэш write-through. Если установлено значение false, кэш write-through отключается для операций записи. Если установлено значение true, кэш write-through включён до тех пор, пока параметр cache_on_write_operations включён в разделе конфигурации дискового кэша в конфигурации сервера. Дополнительные сведения см. в разделе "Использование локального кэша".

enable_filesystem_read_prefetches_log

Записывать в журнал system.filesystem prefetch_log во время выполнения запроса. Использовать только для тестирования или отладки, не рекомендуется включать по умолчанию.

enable_global_with_statement

По умолчанию распространять выражения WITH на запросы UNION и все подзапросы

enable_hdfs_pread

Включает или отключает режим pread для файлов HDFS. По умолчанию используется hdfsPread. Если параметр отключён, для чтения файлов HDFS будут использоваться hdfsRead и hdfsSeek.

enable_http_compression

Включает или отключает сжатие данных в ответе на HTTP-запрос.

Для получения дополнительной информации см. описание HTTP-интерфейса.

Возможные значения:

  • 0 — отключено.
  • 1 — включено.

enable_job_stack_trace

Выводит стек-трейс создателя задания, когда задание приводит к исключению. По умолчанию отключена, чтобы избежать накладных расходов на производительность.

enable_join_runtime_filters

Experimental feature. Learn more.

Фильтрует левую часть JOIN по набору ключей, собранных с правой части во время выполнения запроса.

enable_lazy_columns_replication

Включает ленивую репликацию столбцов в JOIN и ARRAY JOIN, что позволяет избежать избыточного многократного копирования одинаковых строк в памяти.

enable_lightweight_delete

Псевдонимы: allow_experimental_lightweight_delete

Включает легковесные мутации DELETE для таблиц MergeTree.

enable_lightweight_update

Beta feature. Learn more.

Синонимы: allow_experimental_lightweight_update

Разрешает использовать легковесные обновления.

enable_memory_bound_merging_of_aggregation_results

Включить стратегию слияния результатов агрегации с учётом ограничений по памяти.

enable_multiple_prewhere_read_steps

Переносит больше условий из WHERE в PREWHERE и выполняет чтение с диска и фильтрацию в несколько шагов, если есть несколько условий, объединённых оператором AND

enable_named_columns_in_function_tuple

Генерировать именованные кортежи в функции tuple() при условии, что все имена уникальны и могут интерпретироваться как идентификаторы без кавычек.

enable_optimize_predicate_expression

Включает проталкивание предикатов (predicate pushdown) в запросах SELECT.

Проталкивание предикатов может значительно сократить сетевой трафик для распределённых запросов.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

Использование

Рассмотрим следующие запросы:

  1. SELECT count() FROM test_table WHERE date = '2018-10-10'
  2. SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'

Если enable_optimize_predicate_expression = 1, время выполнения этих запросов одинаково, потому что ClickHouse применяет WHERE к подзапросу при его обработке.

Если enable_optimize_predicate_expression = 0, время выполнения второго запроса намного больше, потому что условие WHERE применяется ко всем данным после завершения подзапроса.

enable_optimize_predicate_expression_to_final_subquery

Разрешает проталкивание предикатов в подзапрос с FINAL.

enable_order_by_all

Включает или отключает сортировку с использованием синтаксиса ORDER BY ALL, см. ORDER BY.

Возможные значения:

  • 0 — Отключить ORDER BY ALL.
  • 1 — Включить ORDER BY ALL.

Пример

Запрос:

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; -- возвращает ошибку о неоднозначности ALL

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;

Результат:

┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘

enable_parallel_blocks_marshalling

Влияет только на распределённые запросы. Если параметр включён, блоки будут (де)сериализовываться и (де)сжиматься в потоках конвейера (т. е. с большей степенью параллелизма, чем по умолчанию) перед/после отправки инициатору запроса.

enable_parsing_to_custom_serialization

Если значение равно true, данные могут быть напрямую распарсены в столбцы с пользовательской сериализацией (например, разреженной) на основе подсказок по сериализации, полученных из таблицы.

enable_positional_arguments

Включает или отключает поддержку позиционных аргументов в командах GROUP BY, LIMIT BY, ORDER BY.

Возможные значения:

  • 0 — позиционные аргументы не поддерживаются.
  • 1 — позиционные аргументы поддерживаются: можно использовать номера столбцов вместо имен столбцов.

Пример

Запрос:

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;

Результат:

┌─one─┬─two─┬─three─┐
│  30 │  10 │   20  │
│  20 │  20 │   10  │
│  10 │  20 │   30  │
└─────┴─────┴───────┘

enable_producing_buckets_out_of_order_in_aggregation

Разрешает памяти-эффективной агрегации (см. distributed_aggregation_memory_efficient) выдавать бакеты в произвольном порядке. Это может улучшить производительность, когда размеры бакетов агрегирования сильно различаются, позволяя реплике отправлять инициатору бакеты с более высокими идентификаторами, пока она всё ещё обрабатывает тяжёлые бакеты с более низкими идентификаторами. Недостатком является потенциально более высокое потребление памяти.

enable_reads_from_query_cache

Если включено, результаты запросов SELECT извлекаются из кэша запросов.

Возможные значения:

  • 0 - Отключено
  • 1 - Включено

enable_s3_requests_logging

Включает максимально подробное логирование запросов к S3. Имеет смысл только для отладки.

enable_scalar_subquery_optimization

Если параметр имеет значение true, предотвращает (де)сериализацию больших скалярных значений в скалярных подзапросах и, при возможности, позволяет избежать повторного выполнения одного и того же подзапроса.

enable_scopes_for_with_statement

Если настройка отключена, объявления в родительских конструкциях WITH будут рассматриваться как объявленные в текущей области видимости.

Обратите внимание, что это настройка совместимости для нового анализатора, позволяющая выполнять некоторые некорректные запросы, которые мог исполнять старый анализатор.

enable_shared_storage_snapshot_in_query

Если параметр включён, все подзапросы внутри одного запроса будут использовать один и тот же StorageSnapshot для каждой таблицы. Это обеспечивает единый, согласованный вид данных для всего запроса, даже если к одной и той же таблице обращаются несколько раз.

Это требуется для запросов, в которых важна внутренняя согласованность частей данных. Пример:

SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)

Без этого параметра внешние и внутренние запросы могут работать с разными снимками данных, что приводит к некорректным результатам.

Примечание

Включение этого параметра отключает оптимизацию, которая удаляет ненужные части из снимков после завершения этапа планирования. В результате длительно выполняющиеся запросы могут удерживать устаревшие части на протяжении всего времени выполнения, откладывая их очистку и увеличивая нагрузку на хранилище.

В настоящее время этот параметр применяется только к таблицам семейства MergeTree.

Возможные значения:

  • 0 - Отключено
  • 1 - Включено

enable_sharing_sets_for_mutations

Разрешает совместное использование объектов множеств, построенных для подзапросов с оператором IN, между различными задачами одной и той же мутации. Это снижает использование памяти и потребление CPU.

enable_software_prefetch_in_aggregation

Включает использование программной предварительной выборки данных (software prefetch) при агрегации.

enable_time_time64_type

Псевдонимы: allow_experimental_time_time64_type

Позволяет создавать типы данных Time и Time64.

enable_unaligned_array_join

Разрешает использовать ARRAY JOIN с несколькими массивами разного размера. Когда эта настройка включена, массивы будут автоматически приведены к длине самого длинного.

enable_url_encoding

Позволяет включить или отключить кодирование/декодирование пути в URI в таблицах с движком URL.

По умолчанию — отключено.

enable_vertical_final

Если включено, во время FINAL дублирующиеся строки не сливаются, а помечаются как удалённые и отфильтровываются позже

enable_writes_to_query_cache

Если включена, результаты запросов SELECT записываются в кэш запросов.

Возможные значения:

  • 0 — отключено
  • 1 — включено

enable_zstd_qat_codec

Если параметр включён, кодек ZSTD_QAT можно использовать для сжатия столбцов.

enforce_strict_identifier_format

Если параметр включён, допускаются только идентификаторы, содержащие буквы, цифры и символ подчёркивания.

engine_file_allow_create_multiple_files

Включает или отключает создание нового файла при каждой операции вставки (INSERT) в таблицы движка File, если формат имеет суффикс (JSON, ORC, Parquet и т. д.). Если параметр включен, при каждом INSERT будет создаваться новый файл с именем по следующему шаблону:

data.Parquet -> data.1.Parquet -> data.2.Parquet и т. д.

Возможные значения:

  • 0 — запрос INSERT дописывает новые данные в конец файла.
  • 1 — запрос INSERT создает новый файл.

engine_file_empty_if_not_exists

Позволяет выполнять выборку данных из таблицы движка File при отсутствии файла.

Возможные значения:

  • 0 — SELECT выбрасывает исключение.
  • 1 — SELECT возвращает пустой результат.

engine_file_skip_empty_files

Включает или отключает пропуск пустых файлов в таблицах с движком File.

Возможные значения:

  • 0 — SELECT выбрасывает исключение, если пустой файл не совместим с запрошенным форматом.
  • 1 — SELECT возвращает пустой результат для пустого файла.

engine_file_truncate_on_insert

Включает или отключает очистку файла перед вставкой в таблицы движка File.

Возможные значения:

  • 0 — запрос INSERT дописывает новые данные в конец файла.
  • 1 — запрос INSERT заменяет существующее содержимое файла новыми данными.

engine_url_skip_empty_files

Включает или отключает пропуск пустых файлов в таблицах движка URL.

Возможные значения:

  • 0 — SELECT выбрасывает исключение, если пустой файл не совместим с запрошенным форматом.
  • 1 — SELECT возвращает пустой результат для пустого файла.

except_default_mode

Устанавливает режим по умолчанию для запроса EXCEPT. Возможные значения: пустая строка, ALL, DISTINCT. Если установлена пустая строка, выполнение запроса без указания режима завершится ошибкой.

exclude_materialize_skip_indexes_on_insert

Исключает указанные skip-индексы из построения и сохранения во время операций INSERT. Исключённые skip-индексы по‑прежнему будут построены и сохранены во время слияний или при явном выполнении запроса MATERIALIZE INDEX.

Не влияет, если materialize_skip_indexes_on_insert имеет значение false.

Пример:

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 не будет обновляться при вставке
--SET exclude_materialize_skip_indexes_on_insert='idx_a, idx_b'; -- ни один из индексов не будет обновляться при вставке

INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- обновляется только idx_b

-- поскольку это настройка сеанса, её можно установить на уровне отдельного запроса
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; -- этот запрос можно использовать для явной материализации индекса

SET exclude_materialize_skip_indexes_on_insert = DEFAULT; -- сброс настройки на значение по умолчанию

execute_exists_as_scalar_subquery

Некоррелированные подзапросы EXISTS выполняются как скалярные подзапросы. Аналогично скалярным подзапросам используется кэш, а к результату применяется свёртка констант.

external_storage_connect_timeout_sec

Таймаут подключения в секундах. Поддерживается только для MySQL.

external_storage_max_read_bytes

Ограничивает максимальное количество байт, которое может быть прочитано при сбросе исторических данных таблицей с внешним движком. В настоящее время поддерживается только для движка таблиц MySQL, движка базы данных и словаря. Если значение равно 0, данный SETTING отключён.

external_storage_max_read_rows

Ограничивает максимальное количество строк, после достижения которого таблица с внешним движком должна сбрасывать исторические данные. В настоящее время поддерживается только для табличного движка MySQL, движка базы данных и словаря. Если значение равно 0, параметр отключен.

external_storage_rw_timeout_sec

Таймаут чтения/записи в секундах. На данный момент поддерживается только для MySQL.

external_table_functions_use_nulls

Определяет, как табличные функции mysql, postgresql и odbc используют столбцы типа Nullable.

Возможные значения:

  • 0 — табличная функция явно использует столбцы типа Nullable.
  • 1 — табличная функция неявно использует столбцы типа Nullable.

Использование

Если параметр имеет значение 0, табличная функция не создаёт столбцы типа Nullable и вставляет значения по умолчанию вместо NULL. Это также применимо к значениям NULL внутри массивов.

external_table_strict_query

Если установлено значение true, для запросов к внешним таблицам недопустимо преобразование выражений в локальный фильтр.

extract_key_value_pairs_max_pairs_per_row

Псевдонимы: extract_kvp_max_pairs_per_row

Максимальное количество пар, которое может быть получено функцией extractKeyValuePairs. Используется как защита от избыточного потребления памяти.

extremes

Определяет, нужно ли учитывать экстремальные значения (минимальные и максимальные значения в столбцах результата запроса). Принимает 0 или 1. По умолчанию — 0 (отключено). Дополнительные сведения см. в разделе «Экстремальные значения».

fallback_to_stale_replicas_for_distributed_queries

Принудительно выполняет запрос к устаревшей реплике, если обновлённые данные недоступны. См. раздел Replication.

ClickHouse выбирает наиболее актуальную среди устаревших реплик таблицы.

Используется при выполнении SELECT из distributed таблицы, которая ссылается на реплицированные таблицы.

По умолчанию — 1 (включено).

filesystem_cache_allow_background_download

Разрешает кешу файловой системы ставить в очередь фоновые загрузки данных, считываемых из удалённого хранилища. Отключите, чтобы выполнять загрузки синхронно для текущего запроса/сессии.

filesystem_cache_boundary_alignment

Выравнивание границ кэша файловой системы. Этот параметр применяется только для недискового чтения (например, для кэша удалённых движков таблиц / табличных функций, но не для конфигурации хранения таблиц MergeTree). Значение 0 означает отсутствие выравнивания.

filesystem_cache_enable_background_download_during_fetch

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Время ожидания при захвате блокировки кэша для резервирования места в файловом кэше.

filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Время ожидания блокировки кэша для резервирования пространства в файловом кэше.

filesystem_cache_max_download_size

Максимальный размер кэша удалённой файловой системы, который может быть скачан одним запросом

filesystem_cache_name

Имя кэша файловой системы для табличных движков без состояния или озёр данных

filesystem_cache_prefer_bigger_buffer_size

При включённом кешировании файловой системы использовать увеличенный размер буфера, чтобы избежать записи небольших сегментов файлов, ухудшающих производительность кэша. С другой стороны, включение этого параметра может привести к увеличению потребления памяти.

filesystem_cache_reserve_space_wait_lock_timeout_milliseconds

Таймаут ожидания блокировки кэша для резервирования места в файловом кэше

filesystem_cache_segments_batch_size

Ограничение на размер одного пакета файловых сегментов, который буфер чтения может запрашивать из кэша. Слишком маленькое значение приведёт к чрезмерному количеству запросов к кэшу, а слишком большое может замедлить вытеснение из кэша.

filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit

Псевдонимы: skip_download_if_exceeds_query_cache

Пропускать загрузку из удалённой файловой системы, если объём данных превышает размер кэша запросов

filesystem_prefetch_max_memory_usage

Максимальный объем памяти, используемый для предварительной подзагрузки.

filesystem_prefetch_step_bytes

Шаг предварительной выборки в байтах. Ноль означает auto — примерно оптимальный шаг будет определён автоматически, но он может быть не на 100% лучшим. Фактическое значение может отличаться из‑за настройки filesystem_prefetch_min_bytes_for_single_read_task.

filesystem_prefetch_step_marks

Шаг предзагрузки в отметках. Ноль означает auto — примерно оптимальный шаг предзагрузки будет выбран автоматически, но может быть не на 100% лучшим. Фактическое значение может отличаться из‑за настройки filesystem_prefetch_min_bytes_for_single_read_task.

filesystem_prefetches_limit

Максимальное количество предзагрузок. Нулевое значение означает отсутствие ограничения. Если вы хотите ограничить количество предзагрузок, рекомендуется использовать настройку filesystem_prefetches_max_memory_usage.

final

Автоматически применяет модификатор FINAL во всех таблицах запроса, для которых FINAL применим, включая соединённые таблицы, таблицы во вложенных запросах, а также distributed таблицы.

Возможные значения:

  • 0 - отключено
  • 1 - включено

Пример:

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 │
└─────┴────────┘

flatten_nested

Задает формат данных столбцов типа Nested.

Возможные значения:

  • 1 — вложенный столбец разворачивается в отдельные массивы.
  • 0 — вложенный столбец остается единым массивом кортежей.

Использование

Если параметр установлен в значение 0, можно использовать произвольный уровень вложенности.

Примеры

Запрос:

SET flatten_nested = 1;
CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;

Результат:

┌─statement───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_nest
(
    `n.a` Array(UInt32),
    `n.b` Array(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS index_granularity = 8192 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Запрос:

SET flatten_nested = 0;

CREATE TABLE t_nest (`n` Nested(a UInt32, b UInt32)) ENGINE = MergeTree ORDER BY tuple();

SHOW CREATE TABLE t_nest;

Результат:

┌─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

Принудительно использовать оптимизацию, когда она применима, даже если эвристики решили её не использовать.

force_aggregation_in_order

Этот параметр используется сервером для поддержки распределённых запросов. Не изменяйте его вручную — это нарушит нормальную работу. (Принудительно включает использование агрегации в порядке следования данных на удалённых узлах при распределённой агрегации).

force_data_skipping_indices

Отключает выполнение запроса, если переданные индексы пропуска данных не были задействованы.

Рассмотрим следующий пример:

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=''; -- запрос приведет к ошибке CANNOT_PARSE_TEXT.
SELECT * FROM data_01515 SETTINGS force_data_skipping_indices='d1_idx'; -- запрос приведет к ошибке INDEX_NOT_USED.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='d1_idx'; -- Корректно.
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`'; -- Корректно (пример полнофункционального парсера).
SELECT * FROM data_01515 WHERE d1 = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- запрос приведет к ошибке INDEX_NOT_USED, так как индекс d1_null_idx не используется.
SELECT * FROM data_01515 WHERE d1 = 0 AND assumeNotNull(d1_null) = 0 SETTINGS force_data_skipping_indices='`d1_idx`, d1_null_idx'; -- Корректно.

force_grouping_standard_compatibility

Заставляет функцию GROUPING возвращать 1, если аргумент не используется в качестве ключа агрегирования

force_index_by_date

Отключает выполнение запроса, если индекс не может быть использован по дате.

Работает с таблицами семейства MergeTree.

Если force_index_by_date=1, ClickHouse проверяет, содержит ли запрос условие по ключу даты, которое может быть использовано для ограничения диапазонов данных. Если подходящего условия нет, будет выброшено исключение. При этом не проверяется, уменьшает ли условие объем данных для чтения. Например, условие Date != ' 2000-01-01 ' допустимо, даже если оно соответствует всем данным в таблице (то есть выполнение запроса требует полного сканирования). Подробнее о диапазонах данных в таблицах MergeTree см. MergeTree.

force_optimize_projection

Включает или отключает обязательное использование проекций в запросах SELECT, когда включена оптимизация проекций (см. настройку optimize_use_projections).

Возможные значения:

  • 0 — Оптимизация проекций не является обязательной.
  • 1 — Оптимизация проекций является обязательной.

force_optimize_projection_name

Если задано непустое строковое значение, проверяется, что эта проекция используется в запросе как минимум один раз.

Возможные значения:

  • string: имя проекции, которая используется в запросе

force_optimize_skip_unused_shards

Разрешает или запрещает выполнение запроса, если optimize_skip_unused_shards включён и пропуск неиспользуемых сегментов невозможен. Если пропуск невозможен и параметр включён, генерируется исключение.

Возможные значения:

  • 0 — Отключено. ClickHouse не генерирует исключение.
  • 1 — Включено. Запрос не выполняется только если у таблицы есть ключ сегментирования.
  • 2 — Включено. Запрос не выполняется независимо от того, определён ли для таблицы ключ сегментирования.

force_optimize_skip_unused_shards_nesting

Управляет поведением force_optimize_skip_unused_shards (и, соответственно, всё равно требует включения force_optimize_skip_unused_shards) в зависимости от уровня вложенности распределённого запроса (случай, когда у вас есть таблица Distributed, которая обращается к другой таблице Distributed).

Возможные значения:

  • 0 — Отключено, force_optimize_skip_unused_shards всегда работает.
  • 1 — Включает force_optimize_skip_unused_shards только для первого уровня.
  • 2 — Включает force_optimize_skip_unused_shards до второго уровня включительно.

force_primary_key

Запрещает выполнение запроса, если индексация по первичному ключу невозможна.

Работает с таблицами семейства MergeTree.

Если force_primary_key=1, ClickHouse проверяет, содержит ли запрос условие по первичному ключу, которое можно использовать для ограничения диапазонов данных. Если подходящего условия нет, генерируется исключение. Однако не проверяется, сокращает ли это условие объём данных для чтения. Дополнительную информацию о диапазонах данных в таблицах MergeTree см. в разделе MergeTree.

force_remove_data_recursively_on_drop

Рекурсивно удаляет данные при выполнении запроса DROP. Позволяет избежать ошибки «Directory not empty», но может незаметно удалить отсоединённые данные

formatdatetime_e_with_space_padding

Форматтер '%e' в функции 'formatDateTime' выводит однозначные дни месяца с ведущим пробелом, например ' 2' вместо '2'.

formatdatetime_f_prints_scale_number_of_digits

Форматтер '%f' в функции 'formatDateTime' выводит только количество цифр, соответствующее масштабу типа DateTime64, вместо фиксированных 6 цифр.

formatdatetime_f_prints_single_zero

Форматировщик '%f' в функции 'formatDateTime' выводит один ноль вместо шести нулей, если форматируемое значение не содержит дробной части секунд.

formatdatetime_format_without_leading_zeros

Спецификаторы формата '%c', '%l' и '%k' в функции formatDateTime выводят месяцы и часы без ведущих нулей.

formatdatetime_parsedatetime_m_is_month_name

Форматтер '%M' в функциях 'formatDateTime' и 'parseDateTime' выводит/распознаёт название месяца вместо минут.

fsync_metadata

Включает или отключает fsync при записи файлов .sql. По умолчанию включено.

Имеет смысл отключить этот параметр, если на сервере есть миллионы крошечных таблиц, которые постоянно создаются и удаляются.

function_date_trunc_return_type_behavior

Настройка позволяет изменить поведение определения типа результата функции dateTrunc.

Возможные значения:

  • 0 — если второй аргумент имеет тип DateTime64/Date32, тип результата будет DateTime64/Date32 независимо от единицы времени в первом аргументе.
  • 1 — для Date32 результатом всегда является Date. Для DateTime64 результатом является DateTime для единиц времени second и более крупных.

function_implementation

Выберите реализацию функции для конкретного таргета или варианта (экспериментальная возможность). Если оставить пустым, будут включены все реализации.

function_json_value_return_type_allow_complex

Управляет тем, разрешено ли функции json_value возвращать сложные типы данных (такие как struct, array, map).

SELECT JSON_VALUE('{"hello":{"world":"!"}}', '$.hello') settings function_json_value_return_type_allow_complex=true

┌─JSON_VALUE('{"hello":{"world":"!"}}', '$.hello')─┐
│ {"world":"!"}                                    │
└──────────────────────────────────────────────────┘

Получена 1 строка. Прошло: 0.001 сек.

Возможные значения:

  • true — разрешено.
  • false — запрещено.

function_json_value_return_type_allow_nullable

Определяет, можно ли возвращать NULL, если запрошенное значение для функции JSON_VALUE отсутствует.

SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;

┌─JSON_VALUE('{"hello":"world"}', '$.b')─┐
│ ᴺᵁᴸᴸ                                   │
└────────────────────────────────────────┘

Получена 1 строка. Прошло: 0.001 сек.

Возможные значения:

  • true — разрешить.
  • false — запретить.

function_locate_has_mysql_compatible_argument_order

Определяет порядок аргументов в функции locate.

Возможные значения:

  • 0 — функция locate принимает аргументы (haystack, needle[, start_pos]).
  • 1 — функция locate принимает аргументы (needle, haystack[, start_pos]) (поведение, совместимое с MySQL)

function_range_max_elements_in_block

Устанавливает порог безопасности для объёма данных, генерируемых функцией range. Определяет максимальное количество значений, генерируемых функцией для блока данных (сумма размеров массивов для каждой строки в блоке).

Возможные значения:

  • Положительное целое число.

См. также

function_sleep_max_microseconds_per_block

Максимальное количество микросекунд, на которое функция sleep может приостанавливать выполнение для каждого блока. Если функция вызывается с большим значением, генерируется исключение. Это защитное ограничение.

function_visible_width_behavior

Версия логики работы visibleWidth. 0 — считать только количество кодовых точек; 1 — корректно учитывать символы нулевой ширины и комбинирующие символы, считать полноширинные символы за два, оценивать ширину табуляции, учитывать символы удаления.

geo_distance_returns_float64_on_float64_arguments

Если все четыре аргумента функций geoDistance, greatCircleDistance и greatCircleAngle имеют тип Float64, возвращается Float64 и для внутренних вычислений используется двойная точность. В предыдущих версиях ClickHouse эти функции всегда возвращали Float32.

geotoh3_argument_order

Beta feature. Learn more.

Функция geoToH3 принимает (lon, lat), если значение равно lon_lat, и (lat, lon), если значение равно lat_lon.

glob_expansion_max_elements

Максимальное количество разрешённых адресов (для внешних хранилищ, табличных функций и т. д.).

grace_hash_join_initial_buckets

Experimental feature. Learn more.

Начальное количество бакетов для Grace Hash Join

grace_hash_join_max_buckets

Experimental feature. Learn more.

Ограничение на число бакетов в grace hash join

group_by_overflow_mode

Определяет, что происходит, когда количество уникальных ключей для агрегации превышает лимит:

  • throw: выдать исключение
  • break: остановить выполнение запроса и вернуть частичный результат
  • any: продолжить агрегацию для ключей, которые попали в множество, но не добавлять в множество новые ключи.

Использование значения any позволяет выполнять приближённый GROUP BY. Качество такого приближения зависит от статистических свойств данных.

group_by_two_level_threshold

С какого количества ключей начинается двухуровневая агрегация. 0 — порог не установлен.

group_by_two_level_threshold_bytes

Размер состояния агрегации в байтах, начиная с которого используется двухуровневая агрегация. 0 — порог не установлен. Двухуровневая агрегация используется, когда срабатывает как минимум один из порогов.

group_by_use_nulls

Изменяет способ, которым оператор GROUP BY обрабатывает типы ключей агрегации. Когда используются спецификаторы ROLLUP, CUBE или GROUPING SETS, некоторые ключи агрегации могут не использоваться при получении отдельных строк результата. Столбцы для этих ключей заполняются либо значением по умолчанию, либо NULL в соответствующих строках, в зависимости от этого параметра.

Возможные значения:

  • 0 — Для отсутствующих значений используется значение по умолчанию для типа ключа агрегации.
  • 1 — ClickHouse выполняет GROUP BY в соответствии со стандартом SQL. Типы ключей агрегации преобразуются в Nullable. Столбцы для соответствующих ключей агрегации заполняются значением NULL для строк, в которых этот ключ не использовался.

См. также:

h3togeo_lon_lat_result_order

Функция 'h3ToGeo' возвращает (lon, lat), если установлено значение true, в противном случае — (lat, lon).

handshake_timeout_ms

Тайм-аут в миллисекундах на получение пакета Hello от реплик во время рукопожатия.

hdfs_create_new_file_on_insert

Включает или отключает создание нового файла при каждом выполнении INSERT в таблицы движка HDFS. Если опция включена, при каждой вставке будет создаваться новый файл HDFS с именем, соответствующим следующему шаблону:

изначально: data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz и т. д.

Возможные значения:

  • 0 — запрос INSERT дописывает новые данные в конец файла.
  • 1 — запрос INSERT создает новый файл.

hdfs_ignore_file_doesnt_exist

Игнорировать отсутствие файла, если запрошенный файл отсутствует при чтении по определённым ключам.

Возможные значения:

  • 1 — SELECT возвращает пустой результат.
  • 0 — SELECT выбрасывает исключение.

hdfs_replication

Фактическое количество реплик можно указать при создании файла в HDFS.

hdfs_skip_empty_files

Включает или отключает игнорирование пустых файлов в таблицах движка HDFS.

Возможные значения:

  • 0 — SELECT выбрасывает исключение, если пустой файл не совместим с запрошенным форматом.
  • 1 — SELECT возвращает пустой результат для пустого файла.

hdfs_throw_on_zero_files_match

Генерировать ошибку, если не найдено ни одного файла в соответствии с правилами раскрытия шаблонов glob.

Возможные значения:

  • 1 — SELECT генерирует исключение.
  • 0 — SELECT возвращает пустой результат.

hdfs_truncate_on_insert

Включает или отключает очистку (truncate) файла перед вставкой в таблицы движка HDFS. При отключённой опции при попытке вставки будет сгенерировано исключение, если файл в HDFS уже существует.

Возможные значения:

  • 0 — запрос INSERT дописывает новые данные в конец файла.
  • 1 — запрос INSERT заменяет существующее содержимое файла новыми данными.

hedged_connection_timeout_ms

Тайм-аут ожидания установки соединения с репликой для hedged-запросов

Размер динамического списка кандидатов при поиске по векторному индексу сходства, также известному как «ef_search».

hsts_max_age

Срок действия HSTS. Значение 0 отключает HSTS.

http_connection_timeout

Таймаут HTTP-соединения (в секундах).

Возможные значения:

  • Любое положительное целое число.
  • 0 — отключено (бесконечный таймаут).

http_headers_progress_interval_ms

Не отправлять HTTP-заголовки X-ClickHouse-Progress чаще, чем один раз за указанный интервал.

http_make_head_request

Параметр http_make_head_request позволяет выполнять запрос HEAD при чтении данных по HTTP, чтобы получить информацию о файле, который требуется прочитать, например о его размере. Поскольку этот параметр включён по умолчанию, в случаях, когда сервер не поддерживает запросы HEAD, может быть целесообразно его отключить.

http_max_field_name_size

Максимальная длина имени поля в HTTP-заголовке

http_max_field_value_size

Максимальная длина значения поля заголовка HTTP

http_max_fields

Максимальное количество полей в HTTP-заголовке

http_max_multipart_form_data_size

Ограничение на размер содержимого multipart/form-data. Этот параметр не может быть задан через параметры URL и должен быть указан в профиле пользователя. Обратите внимание, что содержимое разбирается, а внешние таблицы создаются в памяти до начала выполнения запроса. Это единственное ограничение, влияющее на этот этап (ограничения на максимальное использование памяти и максимальное время выполнения не действуют при чтении данных из HTTP-формы).

http_max_request_param_data_size

Ограничение на размер данных запроса, используемых как параметр в предопределённых HTTP-запросах.

http_max_tries

Максимальное количество попыток чтения через HTTP.

http_max_uri_size

Задает максимальную длину URI HTTP-запроса.

Возможные значения:

  • Положительное целое число.

http_native_compression_disable_checksumming_on_decompress

Включает или отключает проверку контрольной суммы при декомпрессии данных HTTP POST-запроса от клиента. Используется только для нативного формата сжатия ClickHouse (не используется с gzip или deflate).

Для получения дополнительной информации см. описание HTTP-интерфейса.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

http_receive_timeout

Тайм-аут получения данных по HTTP (в секундах).

Возможные значения:

  • Любое положительное целое число.
  • 0 — отключено (бесконечный тайм-аут).

http_response_buffer_size

Количество байт, которые буферизуются в памяти сервера перед отправкой HTTP-ответа клиенту или сбросом на диск (когда включён http_wait_end_of_query).

http_response_headers

Позволяет добавить или переопределить HTTP-заголовки, которые сервер будет возвращать в ответе при успешном выполнении запроса. Это влияет только на HTTP-интерфейс.

Если заголовок уже установлен по умолчанию, заданное значение его переопределит. Если заголовок не был установлен по умолчанию, он будет добавлен в список заголовков. Заголовки, которые устанавливаются сервером по умолчанию и не переопределены этой настройкой, останутся без изменений.

Настройка позволяет задать заголовок постоянным значением. В настоящий момент нет способа задать заголовок значением, вычисляемым динамически.

Ни имена, ни значения не могут содержать управляющие символы ASCII.

Если вы реализуете приложение с пользовательским интерфейсом, которое позволяет пользователям изменять настройки, но в то же время принимает решения на основе возвращаемых заголовков, рекомендуется ограничить эту настройку режимом «только для чтения» (readonly).

Пример: SET http_response_headers = '{"Content-Type": "image/png"}'

http_retry_initial_backoff_ms

Минимальное время задержки в миллисекундах перед повторной попыткой чтения по HTTP

http_retry_max_backoff_ms

Максимальное значение задержки в миллисекундах при повторных попытках чтения по HTTP

http_send_timeout

Таймаут отправки по HTTP (в секундах).

Возможные значения:

  • Любое положительное целое число.
  • 0 — отключено (бесконечный таймаут).
Примечание

Применяется только к профилю по умолчанию. Для вступления изменений в силу требуется перезагрузка сервера.

http_skip_not_found_url_for_globs

Пропускать URL-адреса, соответствующие glob-шаблонам, при ошибке HTTP_NOT_FOUND

http_wait_end_of_query

Включает буферизацию HTTP-ответов на стороне сервера.

http_write_exception_in_output_format

Записывать исключение в выходной формат для формирования корректного вывода. Работает с форматами JSON и XML.

http_zlib_compression_level

Устанавливает уровень сжатия данных в ответе на HTTP‑запрос, если enable_http_compression = 1.

Возможные значения: числа от 1 до 9.

iceberg_delete_data_on_drop

Определяет, нужно ли удалять все файлы Iceberg при выполнении операции DROP.

iceberg_insert_max_bytes_in_data_file

Максимальный размер в байтах файла данных Iceberg Parquet при операции вставки.

iceberg_insert_max_partitions

Максимально допустимое число партиций за одну операцию вставки для табличного движка Iceberg.

iceberg_insert_max_rows_in_data_file

Максимальное количество строк в файле данных формата Iceberg Parquet при выполнении операции INSERT.

iceberg_metadata_compression_method

Experimental feature. Learn more.

Метод сжатия файла .metadata.json.

iceberg_metadata_log_level

Управляет уровнем логирования метаданных для таблиц Iceberg в журнал system.iceberg_metadata_log. Обычно этот параметр изменяют в целях отладки.

Возможные значения:

  • none — без лога метаданных.
  • metadata — корневой файл metadata.json.
  • manifest_list_metadata — всё вышеперечисленное + метаданные из avro-списка манифестов, соответствующего снимку.
  • manifest_list_entry — всё вышеперечисленное + записи avro-списка манифестов.
  • manifest_file_metadata — всё вышеперечисленное + метаданные из avro-файлов манифестов, обход которых выполняется.
  • manifest_file_entry — всё вышеперечисленное + записи avro-файлов манифестов, обход которых выполняется.

iceberg_snapshot_id

Выполняет запрос к таблице Iceberg с использованием указанного идентификатора снимка.

iceberg_timestamp_ms

Позволяет выполнять запрос к таблице Iceberg, используя снимок, актуальный по состоянию на указанный момент времени.

idle_connection_timeout

Таймаут для закрытия неактивных TCP-соединений по истечении заданного количества секунд.

Возможные значения:

  • Положительное целое число (0 — закрыть немедленно, через 0 секунд).

ignore_cold_parts_seconds

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Исключает новые части из запросов SELECT, пока они не будут предварительно разогреты (см. cache_populated_by_fetch) или пока с момента их создания не пройдет указанное количество секунд. Применимо только к Replicated-/SharedMergeTree.

ignore_data_skipping_indices

Игнорирует указанные индексы пропуска данных, если запрос пытается их использовать.

Рассмотрим следующий пример:

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=''; -- запрос приведёт к ошибке CANNOT_PARSE_TEXT.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='x_idx'; -- Ок.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='na_idx'; -- Ок.

SELECT * FROM data WHERE x = 1 AND y = 1 SETTINGS ignore_data_skipping_indices='xy_idx',force_data_skipping_indices='xy_idx' ; -- запрос приведёт к ошибке INDEX_NOT_USED, так как индекс xy_idx явно игнорируется.
SELECT * FROM data WHERE x = 1 AND y = 2 SETTINGS ignore_data_skipping_indices='xy_idx';

Запрос без игнорирования индексов:

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

Игнорирование индекса 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

Поддерживает таблицы семейства MergeTree.

ignore_drop_queries_probability

Если параметр включен, сервер будет с заданной вероятностью игнорировать все запросы DROP TABLE (для движков Memory и JOIN оператор DROP будет заменён на TRUNCATE). Используется в тестовых целях.

ignore_materialized_views_with_dropped_target_table

Игнорировать materialized views с удалённой целевой таблицей при передаче данных в представления

ignore_on_cluster_for_replicated_access_entities_queries

Игнорирует предложение ON CLUSTER в запросах управления реплицируемыми объектами доступа.

ignore_on_cluster_for_replicated_named_collections_queries

Игнорирует предложение ON CLUSTER в запросах управления реплицированными именованными коллекциями.

ignore_on_cluster_for_replicated_udf_queries

Игнорирует предложение ON CLUSTER для запросов управления реплицируемыми UDF.

implicit_select

Разрешает выполнять простые запросы SELECT без начального ключевого слова SELECT, что упрощает использование в режиме калькулятора. Например, 1 + 2 становится допустимым запросом.

В clickhouse-local этот режим включён по умолчанию и может быть явно отключён.

implicit_table_at_top_level

Если настройка не пуста, запросы без FROM на верхнем уровне будут читать из этой таблицы вместо system.one.

Она используется в clickhouse-local для обработки входных данных. Пользователь может явно задать эту настройку, но она не предназначена для такого типа использования.

Подзапросы не затрагиваются этой настройкой (ни скалярные, ни подзапросы в FROM или IN). SELECT на верхнем уровне цепочек UNION, INTERSECT, EXCEPT обрабатываются единообразно и затрагиваются этой настройкой, независимо от их группировки в скобках. Не определено, как эта настройка влияет на представления и распределённые запросы.

Настройка принимает имя таблицы (тогда таблица берётся из текущей базы данных) или полное имя в формате 'database.table'. И имя базы данных, и имя таблицы должны указываться без кавычек — допускаются только простые идентификаторы.

implicit_transaction

Experimental feature. Learn more.

Если настройка включена и запрос ещё не выполняется внутри транзакции, запрос оборачивается в полную транзакцию (begin + commit или rollback).

inject_random_order_for_select_without_order_by

Если параметр включён, в запросы SELECT без предложения ORDER BY автоматически добавляется 'ORDER BY rand()'. Применяется только при глубине подзапроса = 0. Вложенные подзапросы и INSERT INTO ... SELECT не затрагиваются. Если верхнеуровневая конструкция — UNION, 'ORDER BY rand()' добавляется к каждому дочернему запросу независимо. Полезно только для тестирования и разработки (отсутствие ORDER BY приводит к недетерминированным результатам запросов).

input_format_parallel_parsing

Включает или отключает параллельный парсинг данных с сохранением порядка. Поддерживается только для форматов TabSeparated (TSV), TSKV, CSV и JSONEachRow.

Возможные значения:

  • 1 — включено.
  • 0 — отключено.

insert_allow_materialized_columns

Если настройка включена, допускается указание материализованных столбцов в INSERT.

insert_deduplicate

Включает или отключает дедупликацию блоков при выполнении INSERT (для таблиц Replicated*).

Возможные значения:

  • 0 — отключено.
  • 1 — включено.

По умолчанию блоки, вставляемые в реплицируемые таблицы оператором INSERT, дедуплицируются (см. Data Replication). Для реплицируемых таблиц по умолчанию дедуплицируются только 100 последних блоков для каждой партиции (см. replicated_deduplication_window, replicated_deduplication_window_seconds). Для нереплицируемых таблиц см. non_replicated_deduplication_window.

insert_deduplication_token

Эта настройка позволяет пользователю задать собственную семантику дедупликации в MergeTree/ReplicatedMergeTree. Например, указывая уникальное значение для этой настройки в каждом операторе INSERT, пользователь может избежать дедупликации одинаковых вставленных данных.

Возможные значения:

  • Любая строка

insert_deduplication_token используется для дедупликации только если он непустой.

Для реплицируемых таблиц по умолчанию только 100 самых последних вставок для каждой партиции подвергаются дедупликации (см. replicated_deduplication_window, replicated_deduplication_window_seconds). Для нереплицируемых таблиц см. non_replicated_deduplication_window.

Примечание

insert_deduplication_token работает на уровне партиции (так же, как контрольная сумма insert_deduplication). Несколько партиций могут иметь один и тот же insert_deduplication_token.

Пример:

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);

-- следующая вставка не будет дедуплицирована, поскольку insert_deduplication_token отличается
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- следующая вставка будет дедуплицирована, поскольку insert_deduplication_token
-- совпадает с одним из предыдущих
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

┌─A─┐
│ 1 │
└───┘
┌─A─┐
│ 1 │
└───┘

insert_keeper_fault_injection_probability

Приблизительная вероятность сбоя запроса к Keeper во время вставки. Допустимое значение находится в интервале [0.0f, 1.0f].

insert_keeper_fault_injection_seed

0 — случайное начальное значение (seed), иначе значение настройки

insert_keeper_max_retries

Эта настройка задаёт максимальное количество повторных попыток выполнения запросов к ClickHouse Keeper (или ZooKeeper) при вставке в реплицированную таблицу MergeTree. Для повторных попыток учитываются только те запросы к Keeper, которые завершились с ошибкой из‑за сетевой ошибки, тайм-аута сессии Keeper или тайм-аута запроса.

Возможные значения:

  • Положительное целое число.
  • 0 — повторные попытки отключены.

Значение по умолчанию в Cloud: 20.

Повторные попытки запросов к Keeper выполняются после некоторой задержки. Эти задержки контролируются следующими настройками: insert_keeper_retry_initial_backoff_ms, insert_keeper_retry_max_backoff_ms. Первая повторная попытка выполняется после задержки insert_keeper_retry_initial_backoff_ms. Последующие задержки будут рассчитаны следующим образом:

timeout = min(insert_keeper_retry_max_backoff_ms, latest_timeout * 2)

Например, если insert_keeper_retry_initial_backoff_ms=100, insert_keeper_retry_max_backoff_ms=10000 и insert_keeper_max_retries=8, то таймауты будут равны 100, 200, 400, 800, 1600, 3200, 6400, 10000.

Помимо отказоустойчивости, повторные попытки призваны улучшить опыт работы пользователя — они позволяют избежать возврата ошибки во время выполнения INSERT, если Keeper был перезапущен, например, из‑за обновления.

insert_keeper_retry_initial_backoff_ms

Начальный тайм-аут (в миллисекундах) перед повторной попыткой неудавшегося запроса к Keeper во время выполнения запроса INSERT

Возможные значения:

  • Положительное целое число.
  • 0 — нет тайм-аута

insert_keeper_retry_max_backoff_ms

Максимальное время ожидания (в миллисекундах) для повторной попытки неудачного запроса к Keeper при выполнении запроса INSERT

Возможные значения:

  • Положительное целое число
  • 0 — максимальное время ожидания не ограничено

insert_null_as_default

Включает или отключает вставку значений по умолчанию вместо NULL в столбцы с не Nullable типом данных. Если тип столбца не Nullable и эта настройка отключена, то вставка NULL приводит к исключению. Если тип столбца Nullable, то значения NULL вставляются как есть, независимо от этой настройки.

Эта настройка применяется к запросам INSERT ... SELECT. Обратите внимание, что подзапросы SELECT могут быть объединены с помощью оператора UNION ALL.

Возможные значения:

  • 0 — вставка NULL в не Nullable столбец приводит к исключению.
  • 1 — вместо NULL вставляется значение столбца по умолчанию.

insert_quorum

Примечание

Этот параметр не применяется к SharedMergeTree, см. раздел Согласованность SharedMergeTree для получения подробной информации.

Включает режим кворумной записи.

  • Если insert_quorum < 2, кворумная запись отключена.
  • Если insert_quorum >= 2, кворумная запись включена.
  • Если insert_quorum = 'auto', в качестве размера кворума используется большинство реплик (number_of_replicas / 2 + 1).

Кворумная запись

INSERT считается успешным только в том случае, если ClickHouse удаётся корректно записать данные на число реплик, равное insert_quorum, в течение insert_quorum_timeout. Если по какой-либо причине количество реплик с успешной записью не достигает insert_quorum, запись считается неуспешной, и ClickHouse удаляет вставленный блок со всех реплик, на которые данные уже были записаны.

Когда insert_quorum_parallel отключён, все реплики в кворуме согласованы, т. е. они содержат данные всех предыдущих запросов INSERT (последовательность INSERT линеаризуется). При чтении данных, записанных с использованием insert_quorum, и отключённом insert_quorum_parallel вы можете включить последовательную согласованность для запросов SELECT, используя select_sequential_consistency.

ClickHouse генерирует исключение:

  • Если количество доступных реплик на момент запроса меньше, чем insert_quorum.
  • Когда insert_quorum_parallel отключён и выполняется попытка записи данных, в то время как предыдущий блок ещё не был вставлен на insert_quorum реплик. Эта ситуация может возникнуть, если пользователь пытается выполнить ещё один запрос INSERT к той же таблице до завершения предыдущего с insert_quorum.

См. также:

insert_quorum_parallel

Примечание

Этот параметр не применяется к SharedMergeTree, см. SharedMergeTree consistency для получения дополнительной информации.

Включает или отключает параллелизм для кворумных запросов INSERT. Если включён, можно отправлять дополнительные запросы INSERT, пока предыдущие ещё не завершены. Если отключён, дополнительные вставки в ту же таблицу будут отклонены.

Возможные значения:

  • 0 — Отключён.
  • 1 — Включён.

См. также:

insert_quorum_timeout

Таймаут ожидания кворума при записи, в миллисекундах. Если этот интервал истёк и запись ещё не произошла, ClickHouse сгенерирует исключение, и клиент должен повторить запрос, чтобы записать тот же блок в ту же или любую другую реплику.

См. также:

insert_shard_id

Если значение не равно 0, задаёт сегмент таблицы Distributed, в который данные будут синхронно вставляться.

Если значение insert_shard_id некорректно, сервер выбросит исключение.

Чтобы получить количество сегментов в кластере requested_cluster, вы можете проверить конфигурацию сервера или выполнить этот запрос:

SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';

Возможные значения:

  • 0 — отключено.
  • Любое целое число от 1 до shards_num соответствующей таблицы Distributed.

Пример

Запрос:

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;

Результат:

┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘

interactive_delay

Интервал в микросекундах, с которым выполняется проверка отмены выполнения запроса и отправка информации о его прогрессе.

intersect_default_mode

Устанавливает режим по умолчанию для запросов INTERSECT. Возможные значения: пустая строка, 'ALL', 'DISTINCT'. Если значение пустое, запрос без указанного режима вызовет исключение.

jemalloc_collect_profile_samples_in_trace_log

Собирать в журнал трассировки выборки операций выделения и освобождения памяти jemalloc.

jemalloc_enable_profiler

Включает профилировщик jemalloc для запроса. Jemalloc будет выполнять выборочное профилирование выделений и всех освобождений для этих выборочно отобранных выделений. Профили можно сбрасывать командой SYSTEM JEMALLOC FLUSH PROFILE, которую можно использовать для анализа выделений. Выборки также могут сохраняться в system.trace_log с использованием конфигурации jemalloc_collect_global_profile_samples_in_trace_log или с помощью настройки запроса jemalloc_collect_profile_samples_in_trace_log. См. раздел Профилирование выделений.

join_algorithm

Указывает, какой алгоритм JOIN используется.

Можно указать несколько алгоритмов, и для конкретного запроса будет выбран один из доступных на основе типа/строгости JOIN и движка таблицы.

Возможные значения:

  • grace_hash

Используется Grace hash join. Grace hash предоставляет вариант алгоритма, который обеспечивает эффективные сложные JOIN при ограниченном использовании памяти.

На первой фазе Grace hash join читает правую таблицу и разбивает её на N бакетов в зависимости от хеш-значения столбцов ключа (изначально N — это grace_hash_join_initial_buckets). Это делается таким образом, чтобы каждый бакет мог обрабатываться независимо. Строки из первого бакета добавляются в размещённую в памяти хеш-таблицу, а остальные сохраняются на диск. Если хеш-таблица превышает лимит памяти (например, заданный max_bytes_in_join), количество бакетов увеличивается и для каждой строки пересчитывается номер бакета. Любые строки, которые не принадлежат текущему бакету, сбрасываются и переназначаются.

Поддерживает INNER/LEFT/RIGHT/FULL ALL/ANY JOIN.

  • hash

Используется алгоритм hash join. Наиболее универсальная реализация, которая поддерживает все комбинации типа и строгости, а также несколько ключей JOIN, объединённых с помощью OR в секции JOIN ON.

При использовании алгоритма hash правая часть JOIN загружается в оперативную память.

  • parallel_hash

Вариация hash join, которая разбивает данные на бакеты и параллельно строит несколько хеш-таблиц вместо одной, чтобы ускорить этот процесс.

При использовании алгоритма parallel_hash правая часть JOIN загружается в оперативную память.

  • partial_merge

Вариация алгоритма sort-merge, в которой полностью сортируется только правая таблица.

RIGHT JOIN и FULL JOIN поддерживаются только со строгостью ALL (SEMI, ANTI, ANY и ASOF не поддерживаются).

При использовании алгоритма partial_merge ClickHouse сортирует данные и сбрасывает их на диск. Алгоритм partial_merge в ClickHouse немного отличается от классической реализации. Сначала ClickHouse сортирует правую таблицу по ключам JOIN блоками и создаёт min-max индекс для отсортированных блоков. Затем он сортирует части левой таблицы по join key и выполняет JOIN с правой таблицей. Min-max индекс также используется, чтобы пропускать ненужные блоки правой таблицы.

  • direct

Этот алгоритм может применяться, когда хранилище для правой таблицы поддерживает key-value-запросы.

Алгоритм direct выполняет поиск в правой таблице, используя строки из левой таблицы в качестве ключей. Он поддерживается только специальными хранилищами, такими как Dictionary или EmbeddedRocksDB, и только для LEFT и INNER JOIN.

  • auto

Когда установлено значение auto, сначала пробуется hash join, и при превышении лимита памяти алгоритм на лету переключается на другой.

  • full_sorting_merge

Алгоритм sort-merge с полной сортировкой присоединяемых таблиц перед выполнением JOIN.

  • prefer_partial_merge

ClickHouse всегда пытается использовать JOIN partial_merge, если это возможно, иначе используется hash. Устарело, то же, что и partial_merge,hash.

  • default (устарело)

Устаревшее значение, пожалуйста, больше не используйте. То же, что и direct,hash, то есть сначала выполняется direct join, затем hash join (в таком порядке).

join_any_take_last_row

Изменяет поведение операций соединения со строгостью ANY.

Примечание

Этот параметр применяется только к операциям JOIN с таблицами с движком Join.

Возможные значения:

  • 0 — Если в правой таблице есть более одной совпадающей строки, соединяется только первая найденная строка.
  • 1 — Если в правой таблице есть более одной совпадающей строки, соединяется только последняя найденная строка.

См. также:

join_default_strictness

Устанавливает строгость по умолчанию для предложений JOIN.

Возможные значения:

  • ALL — Если в правой таблице несколько совпадающих строк, ClickHouse создаёт декартово произведение из совпадающих строк. Это обычное поведение JOIN в стандартном SQL.
  • ANY — Если в правой таблице несколько совпадающих строк, присоединяется только первая найденная. Если в правой таблице только одна совпадающая строка, результаты ANY и ALL совпадают.
  • ASOF — Для соединения последовательностей с неопределённым соответствием.
  • Empty string — Если в запросе не указано ALL или ANY, ClickHouse выдаёт исключение.

join_on_disk_max_files_to_merge

Ограничивает количество файлов, которые могут использоваться для параллельной сортировки в операциях MergeJoin, когда они выполняются на диске.

Чем больше значение настройки, тем больше используется оперативной памяти и тем меньше требуется операций ввода-вывода с диском.

Возможные значения:

  • Любое положительное целое число, начиная с 2.

join_output_by_rowlist_perkey_rows_threshold

Нижний порог среднего количества строк на ключ в правой таблице, определяющий, следует ли выводить результат в виде списка строк при hash join.

join_overflow_mode

Определяет, какое действие ClickHouse выполняет при достижении любого из следующих лимитов для операций JOIN:

Возможные значения:

  • THROW — ClickHouse выбрасывает исключение и прерывает операцию.
  • BREAK — ClickHouse прерывает операцию и не выбрасывает исключение.

Значение по умолчанию: THROW.

См. также

join_runtime_bloom_filter_bytes

Experimental feature. Learn more.

Размер в байтах bloom-фильтра, используемого в качестве runtime-фильтра для JOIN (см. настройку enable_join_runtime_filters).

join_runtime_bloom_filter_hash_functions

Experimental feature. Learn more.

Количество хеш-функций в фильтре Блума, используемом как runtime-фильтр для операций JOIN (см. настройку enable_join_runtime_filters).

join_runtime_filter_exact_values_limit

Experimental feature. Learn more.

Максимальное количество элементов в runtime-фильтре, которые хранятся как есть в виде множества; при превышении этого порога фильтр переключается на Bloom-фильтр.

join_to_sort_maximum_table_rows

Experimental feature. Learn more.

Максимальное количество строк в правой таблице, используемое для определения, нужно ли пересортировать правую таблицу по ключу при выполнении LEFT или INNER JOIN.

join_to_sort_minimum_perkey_rows

Experimental feature. Learn more.

Нижний предел среднего количества строк на ключ в правой таблице для определения, нужно ли пересортировать правую таблицу по ключу в LEFT или INNER JOIN. Этот SETTING гарантирует, что оптимизация не будет применяться к разреженным ключам таблицы

join_use_nulls

Задает тип поведения операции JOIN. При объединении таблиц могут появляться пустые ячейки. ClickHouse заполняет их по-разному в зависимости от значения этой настройки.

Возможные значения:

  • 0 — пустые ячейки заполняются значением по умолчанию для соответствующего типа поля.
  • 1 — JOIN ведет себя так же, как в стандартном SQL. Тип соответствующего поля преобразуется в Nullable, а пустые ячейки заполняются значением NULL.

joined_block_split_single_row

Включает разбиение результата хеш‑соединения на фрагменты по строкам, соответствующим одной строке из левой таблицы. Это может снизить потребление памяти в случае строки с большим количеством совпадений в правой таблице, но может увеличить нагрузку на CPU. Обратите внимание, что для действия этой настройки параметр max_joined_block_size_rows != 0 обязателен. Параметр max_joined_block_size_bytes в сочетании с этой настройкой помогает избежать чрезмерного потребления памяти в случае несбалансированных данных, когда некоторые крупные строки имеют много совпадений в правой таблице.

joined_subquery_requires_alias

Требует, чтобы подзапросы и табличные функции, используемые в JOIN, имели псевдонимы для корректной квалификации имён.

kafka_disable_num_consumers_limit

Отключает ограничение на kafka_num_consumers, зависящее от количества доступных ядер CPU.

kafka_max_wait_ms

Время ожидания в миллисекундах при чтении сообщений из Kafka перед повторной попыткой.

Возможные значения:

  • Положительное целое число.
  • 0 — бесконечное время ожидания.

См. также:

keeper_map_strict_mode

Включить дополнительные проверки во время операций с KeeperMap. Например, выбрасывать исключение при попытке вставки ключа, который уже существует.

keeper_max_retries

Максимальное количество повторных попыток выполнения общих операций Keeper

keeper_retry_initial_backoff_ms

Начальная задержка перед повторной попыткой для общих операций Keeper

keeper_retry_max_backoff_ms

Максимальный интервал ожидания (backoff) для общих операций Keeper

least_greatest_legacy_null_behavior

При включении этого параметра функции least и greatest возвращают NULL, если один из их аргументов равен NULL.

legacy_column_name_of_tuple_literal

Перечисляет все имена элементов больших литералов кортежей в именах соответствующих столбцов вместо использования хеша. Этот параметр существует только из соображений совместимости. Имеет смысл установить значение 'true' при поэтапном (rolling) обновлении кластера с версии ниже 21.7 до более высокой.

lightweight_delete_mode

Режим внутреннего запроса на обновление, который выполняется как часть легковесного удаления.

Возможные значения:

  • alter_update - выполняет запрос ALTER UPDATE, который создаёт тяжеловесную мутацию.
  • lightweight_update - выполняет легковесное обновление, если это возможно, в противном случае выполняет ALTER UPDATE.
  • lightweight_update_force - выполняет легковесное обновление, если это возможно, в противном случае выбрасывает исключение.

lightweight_deletes_sync

То же, что и mutations_sync, но контролирует только выполнение легковесных удалений.

Возможные значения:

ЗначениеОписание
0Мутации выполняются асинхронно.
1Запрос ожидает завершения легковесных удалений на текущем сервере.
2Запрос ожидает завершения легковесных удалений на всех репликах (если они есть).
3Запрос ожидает завершения только на активных репликах. Поддерживается только для SharedMergeTree. Для ReplicatedMergeTree ведёт себя так же, как mutations_sync = 2.

См. также

limit

Устанавливает максимальное количество строк, которое можно получить из результата запроса. Корректирует значение, заданное предложением LIMIT, так, что лимит, указанный в запросе, не может превышать лимит, заданный этой настройкой.

Возможные значения:

  • 0 — количество строк не ограничено.
  • Положительное целое число.

load_balancing

Указывает алгоритм выбора реплик для распределённой обработки запросов.

ClickHouse поддерживает следующие алгоритмы выбора реплик:

См. также:

Случайный режим (по умолчанию)

load_balancing = random

Количество ошибок подсчитывается для каждой реплики. Запрос отправляется на реплику с наименьшим количеством ошибок, а если таких несколько — на любую из них. Недостатки: не учитывается близость сервера; если данные на репликах различаются, вы также получите разные данные.

Имя ближайшего хоста

load_balancing = nearest_hostname

Количество ошибок подсчитывается для каждой реплики. Каждые 5 минут количество ошибок целочисленно делится на 2. Таким образом, число ошибок за недавний период рассчитывается с экспоненциальным сглаживанием. Если есть одна реплика с минимальным числом ошибок (то есть ошибки недавно возникли на других репликах), запрос отправляется на неё. Если есть несколько реплик с одинаковым минимальным числом ошибок, запрос отправляется на реплику с именем хоста, которое наиболее похоже на имя хоста сервера в конфигурационном файле (по количеству различных символов в одинаковых позициях, до минимальной длины обоих имён хоста).

Например, example01-01-1 и example01-01-2 отличаются в одной позиции, а example01-01-1 и example01-02-2 различаются в двух местах. Этот метод может показаться примитивным, но он не требует внешних данных о топологии сети и не сравнивает IP-адреса, что было бы сложно для наших IPv6-адресов.

Таким образом, если есть эквивалентные реплики, предпочтение отдаётся наиболее близкой по имени. Мы также можем предположить, что при отправке запроса на тот же сервер, при отсутствии сбоев, распределённый запрос также будет попадать на те же серверы. Поэтому, даже если на репликах размещены разные данные, запрос в основном будет возвращать одинаковые результаты.

Расстояние Левенштейна для имён хостов

load_balancing = hostname_levenshtein_distance

Аналогично nearest_hostname, но выполняет сравнение имени хоста на основе расстояния Левенштейна. Например:

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

Реплики с одинаковым числом ошибок запрашиваются в том же порядке, в котором они указаны в конфигурации. Этот метод подходит, когда вы точно знаете, какая реплика предпочтительна.

Первый или случайный

load_balancing = first_or_random

Этот алгоритм выбирает первую реплику в наборе или случайную реплику, если первая недоступна. Он эффективен в топологиях с кросс-репликацией, но не приносит пользы в других конфигурациях.

Алгоритм first_or_random решает проблему алгоритма in_order. При использовании in_order, если одна реплика выходит из строя, следующая получает двойную нагрузку, в то время как остальные реплики обрабатывают обычный объем трафика. При использовании алгоритма first_or_random нагрузка равномерно распределяется между репликами, которые все еще доступны.

Можно явно задать, какая реплика считается первой, с помощью настройки load_balancing_first_offset. Это дает больше контроля при перебалансировке нагрузки от запросов между репликами.

Циклический алгоритм (Round Robin)

load_balancing = round_robin

Этот алгоритм использует политику round-robin по репликам с одинаковым числом ошибок (при этом учитываются только запросы с политикой round_robin).

load_balancing_first_offset

Реплика, на которую предпочтительно отправлять запрос при использовании стратегии балансировки нагрузки FIRST_OR_RANDOM.

load_marks_asynchronously

Загружать метки MergeTree асинхронно

local_filesystem_read_method

Метод чтения данных из локальной файловой системы, один из следующих: read, pread, mmap, io_uring, pread_threadpool.

Метод io_uring является экспериментальным и не работает для Log, TinyLog, StripeLog, File, Set и Join, а также других таблиц с файлами, допускающими дозапись, при наличии конкурентных операций чтения и записи. Если вы читаете различные статьи об io_uring в Интернете, не поддавайтесь создаваемому вокруг него ажиотажу. Это не более эффективный метод чтения файлов, за исключением случаев с очень большим количеством мелких операций ввода-вывода, что не характерно для ClickHouse. Нет причин включать io_uring.

local_filesystem_read_prefetch

Использовать предварительную подзагрузку при чтении данных из локальной файловой системы.

lock_acquire_timeout

Определяет, сколько секунд запрос на блокировку ожидает до завершения с ошибкой.

Таймаут блокировки используется для защиты от взаимоблокировок при выполнении операций чтения/записи с таблицами. Когда таймаут истекает и запрос на блокировку завершается с ошибкой, сервер ClickHouse генерирует исключение "Locking attempt timed out! Possible deadlock avoided. Client should retry." с кодом ошибки DEADLOCK_AVOIDED.

Возможные значения:

  • Положительное целое число (в секундах).
  • 0 — без таймаута блокировки.

log_comment

Задаёт значение для поля log_comment таблицы system.query_log и текст комментария для серверного лога.

Может использоваться для повышения читаемости серверных логов. Также помогает выбрать запросы, связанные с тестом, из system.query_log после запуска clickhouse-test.

Возможные значения:

  • Любая строка длиной не более max_query_size. Если значение max_query_size превышено, сервер генерирует исключение.

Пример

Запрос:

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;

Результат:

┌─type────────┬─query─────┐
│ QueryStart  │ SELECT 1; │
│ QueryFinish │ SELECT 1; │
└─────────────┴───────────┘

log_formatted_queries

Позволяет записывать отформатированные запросы в системную таблицу system.query_log (заполняет столбец formatted_query в system.query_log).

Возможные значения:

  • 0 — Отформатированные запросы не записываются в системную таблицу.
  • 1 — Отформатированные запросы записываются в системную таблицу.

log_processors_profiles

Записывать в таблицу system.processors_profile_log время, которое процессор тратит на выполнение и ожидание данных.

См. также:

log_profile_events

Записывать статистику производительности запросов в журналы query_log, query_thread_log и query_views_log.

log_queries

Настройка логирования запросов.

Запросы, отправленные в ClickHouse при включении этого параметра, записываются в лог в соответствии с правилами серверного параметра конфигурации query_log.

Пример:

log_queries=1

log_queries_cut_to_length

Если длина запроса превышает заданный порог (в байтах), запрос усекается при записи в журнал запросов. Также ограничивается длина запроса, выводимого в обычный текстовый журнал.

log_queries_min_query_duration_ms

Если параметр включен (имеет ненулевое значение), запросы, выполняющиеся быстрее указанного значения этой настройки, не будут записываться в журнал (можно рассматривать это как аналог long_query_time для MySQL Slow Query Log), и это по сути означает, что вы не найдете их в следующих таблицах:

  • system.query_log
  • system.query_thread_log

В журнал будут попадать только запросы со следующими типами:

  • QUERY_FINISH

  • EXCEPTION_WHILE_PROCESSING

  • Тип: миллисекунды

  • Значение по умолчанию: 0 (любой запрос)

log_queries_min_type

Минимальный тип записей в query_log.

Возможные значения:

  • QUERY_START (=1)
  • QUERY_FINISH (=2)
  • EXCEPTION_BEFORE_START (=3)
  • EXCEPTION_WHILE_PROCESSING (=4)

Настройку можно использовать, чтобы ограничить, какие записи будут попадать в query_log. Например, если вас интересуют только ошибки, вы можете использовать EXCEPTION_WHILE_PROCESSING:

log_queries_min_type='EXCEPTION_WHILE_PROCESSING'

log_queries_probability

Позволяет записывать в системные таблицы query_log, query_thread_log и query_views_log только часть запросов, случайным образом отобранных с указанной вероятностью. Это помогает снизить нагрузку при большом количестве запросов в секунду.

Возможные значения:

  • 0 — запросы не записываются в системные таблицы.
  • Положительное число с плавающей запятой в диапазоне [0..1]. Например, если значение настройки равно 0.5, в системные таблицы записывается примерно половина запросов.
  • 1 — все запросы записываются в системные таблицы.

log_query_settings

Записывать настройки запросов в query_log и журнал спанов OpenTelemetry.

log_query_threads

Настройка логирования потоков выполнения запросов.

Потоки запросов записываются в таблицу system.query_thread_log. Этот параметр имеет эффект только если log_queries имеет значение true. Потоки запросов, выполняемые ClickHouse при такой настройке, логируются в соответствии с правилами серверного параметра конфигурации query_thread_log.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

Пример

log_query_threads=1

log_query_views

Настройка логирования представлений запросов.

Когда запрос, выполняемый ClickHouse при включённой данной настройке, имеет связанные представления (материализованные или live-представления), сведения о них записываются в журнал, задаваемый параметром конфигурации сервера query_views_log.

Пример:

log_query_views=1

low_cardinality_allow_in_native_format

Разрешает или запрещает использование типа данных LowCardinality с форматом Native.

Если использование LowCardinality запрещено, сервер ClickHouse преобразует столбцы типа LowCardinality в обычные для запросов SELECT и преобразует обычные столбцы в столбцы типа LowCardinality для запросов INSERT.

Этот параметр главным образом нужен для сторонних клиентов, которые не поддерживают тип данных LowCardinality.

Возможные значения:

  • 1 — использование LowCardinality не ограничено;
  • 0 — использование LowCardinality ограничено.

low_cardinality_max_dictionary_size

Задает максимальный размер (в строках) общего глобального словаря для типа данных LowCardinality, который может быть записан в файловую систему хранилища. Этот параметр предотвращает проблемы с ОЗУ при неограниченном росте словаря. Все данные, которые не могут быть закодированы из‑за ограничения максимального размера словаря, ClickHouse записывает обычным способом.

Возможные значения:

  • Любое положительное целое число.

low_cardinality_use_single_dictionary_for_part

Включает или отключает использование единственного словаря для части данных.

По умолчанию сервер ClickHouse отслеживает размер словарей, и если словарь переполняется, сервер начинает записывать следующий. Чтобы запретить создание нескольких словарей, установите low_cardinality_use_single_dictionary_for_part = 1.

Возможные значения:

  • 1 — Создание нескольких словарей для части данных запрещено.
  • 0 — Создание нескольких словарей для части данных не запрещено.

low_priority_query_wait_time_ms

Beta feature. Learn more.

Когда используется механизм приоритизации запросов (см. настройку priority), запросы с низким приоритетом ожидают завершения запросов с более высоким приоритетом. Этот параметр задает время ожидания.

make_distributed_plan

Experimental feature. Learn more.

Создаёт распределённый план запроса.

materialize_skip_indexes_on_insert

Определяет, будут ли операции INSERT строить и сохранять пропускающие индексы. Если отключена, пропускающие индексы будут создаваться и сохраняться только во время слияний или явным вызовом MATERIALIZE INDEX.

См. также exclude_materialize_skip_indexes_on_insert.

materialize_statistics_on_insert

Если включено, операции INSERT создают и материализуют статистику. Если отключено, статистика будет создаваться и сохраняться во время слияний или при явном выполнении MATERIALIZE STATISTICS.

materialize_ttl_after_modify

Применять TTL к ранее записанным данным после выполнения запроса ALTER MODIFY TTL

materialized_views_ignore_errors

Позволяет игнорировать ошибки при обработке MATERIALIZED VIEW и передавать исходный блок в таблицу независимо от связанных materialized view.

materialized_views_squash_parallel_inserts

Схлопывать параллельные вставки одного запроса INSERT в целевую таблицу materialized view, чтобы уменьшить количество создаваемых частей. Если установлено в значение false и parallel_view_processing включён, запрос INSERT будет создавать в целевой таблице отдельную часть для каждого max_insert_thread.

max_analyze_depth

Максимальное число операций анализа, выполняемых интерпретатором.

max_ast_depth

Максимальная глубина вложенности синтаксического дерева запроса. При превышении этого значения генерируется исключение.

Примечание

В настоящее время это ограничение не проверяется во время разбора запроса, а только после него. Это означает, что во время разбора может быть создано слишком глубокое синтаксическое дерево, но запрос всё равно завершится с ошибкой.

max_ast_elements

Максимальное количество элементов в синтаксическом дереве запроса. При превышении этого значения генерируется исключение.

Примечание

В настоящее время это не проверяется во время разбора (парсинга) запроса, а только после его завершения. Это означает, что в процессе разбора может быть создано слишком глубокое синтаксическое дерево, но запрос в итоге завершится с ошибкой.

max_autoincrement_series

Ограничение на количество серий, создаваемых функцией generateSerialID.

Поскольку каждая серия соответствует узлу в Keeper, рекомендуется не создавать более пары миллионов таких серий.

max_backup_bandwidth

Максимальная скорость чтения в байтах в секунду для конкретной резервной копии на сервере. Ноль означает отсутствие ограничений.

max_block_size

В ClickHouse данные обрабатываются блоками, которые представляют собой наборы частей столбцов. Внутренние циклы обработки для одного блока эффективны, но при обработке каждого блока возникают заметные накладные расходы.

Параметр max_block_size задаёт рекомендуемое максимальное количество строк в одном блоке при загрузке данных из таблиц. Блоки размера max_block_size не всегда загружаются из таблицы: если ClickHouse определяет, что нужно извлечь меньше данных, обрабатывается блок меньшего размера.

Размер блока не должен быть слишком маленьким, чтобы избежать заметных накладных расходов при обработке каждого блока. Он также не должен быть слишком большим, чтобы запросы с оператором LIMIT выполнялись быстро после обработки первого блока. При выборе значения max_block_size цель состоит в том, чтобы избежать чрезмерного потребления памяти при извлечении большого количества столбцов в нескольких потоках и сохранить хотя бы некоторую локальность кэша.

max_bytes_before_external_group_by

Значение по умолчанию в Cloud: половина объёма памяти на реплику.

Включает или отключает выполнение GROUP BY во внешней памяти. (См. GROUP BY во внешней памяти)

Возможные значения:

  • Максимальный объём ОЗУ (в байтах), который может быть использован одной операцией GROUP BY.
  • 0GROUP BY во внешней памяти отключён.
Примечание

Если использование памяти во время операций GROUP BY превышает этот порог в байтах, активируется режим «external aggregation» (выгрузка данных на диск).

Рекомендуемое значение — половина доступной системной памяти.

max_bytes_before_external_sort

Значение по умолчанию в Cloud: половина объёма памяти на реплику.

Включает или отключает выполнение операторов ORDER BY с использованием внешней памяти. См. ORDER BY Implementation Details.
Если использование памяти во время операции ORDER BY превышает этот порог в байтах, активируется режим «external sorting» (сброс данных на диск).

Возможные значения:

  • Максимальный объём ОЗУ (в байтах), который может быть использован одной операцией ORDER BY.
    Рекомендуемое значение — половина доступной системной памяти.
  • 0 — выполнение ORDER BY с использованием внешней памяти отключено.

max_bytes_before_remerge_sort

В случае ORDER BY с LIMIT, когда использование памяти превышает заданный порог, выполняются дополнительные этапы слияния блоков перед финальным слиянием, чтобы сохранить только первые LIMIT строк.

max_bytes_in_distinct

Максимальное количество байт состояния (в несжатом виде) в памяти, которое используется хеш-таблицей при выполнении DISTINCT.

max_bytes_in_join

Максимальный размер в байтах хеш-таблицы, используемой при объединении таблиц.

Этот параметр применяется к операциям SELECT ... JOIN и к движку таблицы Join.

Если запрос содержит операции JOIN, ClickHouse проверяет эту SETTING для каждого промежуточного результата.

При достижении лимита ClickHouse может выполнить различные действия. Используйте SETTING join_overflow_mode, чтобы выбрать действие.

Возможные значения:

  • Положительное целое число.
  • 0 — контроль использования памяти отключен.

max_bytes_in_set

Максимальное количество байт (несжатых данных), используемых множеством в операторе IN, создаваемым подзапросом.

max_bytes_ratio_before_external_group_by

Доля доступной памяти, которая может быть использована под GROUP BY. После достижения этого значения для агрегации используется внешняя память.

Например, если значение установлено на 0.6, GROUP BY сможет использовать 60% доступной памяти (для сервера/пользователя/слияний) в начале выполнения, после чего начнет использовать внешнюю агрегацию.

max_bytes_ratio_before_external_sort

Доля доступной памяти, которую допускается использовать для ORDER BY. После достижения этого порога будет использоваться внешняя сортировка.

Например, если установлено значение 0.6, ORDER BY позволит использовать 60% доступной памяти (для сервера/пользователя/слияний) в начале выполнения, после чего начнёт использовать внешнюю сортировку.

Учтите, что max_bytes_before_external_sort по-прежнему учитывается: сброс на диск будет выполняться только в том случае, если размер сортируемого блока превышает max_bytes_before_external_sort.

max_bytes_to_read

Максимальное количество байт (несжатых данных), которое можно прочитать из таблицы при выполнении запроса. Ограничение проверяется для каждого обрабатываемого фрагмента данных, применяется только к самому глубоко вложенному табличному выражению и при чтении с удалённого сервера проверяется только на удалённом сервере.

max_bytes_to_read_leaf

Максимальное количество байт (несжатых данных), которое может быть прочитано из локальной таблицы на листьевом узле при выполнении распределённого запроса. Хотя распределённые запросы могут отправлять несколько подзапросов к каждому сегменту (листьевому узлу), этот лимит будет проверяться только на этапе чтения на листьевых узлах и будет игнорироваться на этапе слияния результатов на корневом узле.

Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со 100 байтами данных. Распределённый запрос, который должен прочитать все данные из обеих таблиц с параметром max_bytes_to_read=150, завершится с ошибкой, так как в сумме будет 200 байт. Запрос с max_bytes_to_read_leaf=150 завершится успешно, поскольку листьевые узлы прочитают максимум по 100 байт.

Ограничение проверяется для каждого обрабатываемого фрагмента данных.

Примечание

Эта настройка ведёт себя нестабильно при prefer_localhost_replica=1.

max_bytes_to_sort

Максимальное количество байт до начала сортировки. Если для выполнения операции ORDER BY требуется обработать больше несжатых байт, чем указано, поведение будет определяться настройкой sort_overflow_mode, которая по умолчанию имеет значение throw.

max_bytes_to_transfer

Максимальное количество байт (несжатых данных), которое может быть передано на удалённый сервер или сохранено во временной таблице при выполнении GLOBAL IN/JOIN.

max_columns_to_read

Максимальное количество столбцов, которые можно прочитать из таблицы в одном запросе. Если запрос требует чтения большего количества столбцов, чем указано, генерируется исключение.

Совет

Этот параметр полезен для предотвращения чрезмерно сложных запросов.

Значение 0 означает отсутствие ограничения.

max_compress_block_size

Максимальный размер блоков несжатых данных перед сжатием при записи в таблицу. По умолчанию — 1 048 576 (1 MiB). Указание меньшего размера блока обычно приводит к немного более низкому коэффициенту сжатия, небольшому увеличению скорости сжатия и распаковки за счёт локальности в кэше, а также снижению потребления памяти.

Примечание

Это параметр для экспертов; не изменяйте его, если вы только начинаете работать с ClickHouse.

Не путайте блоки для сжатия (фрагмент памяти, состоящий из байтов) с блоками для обработки запросов (набор строк из таблицы).

max_concurrent_queries_for_all_users

Генерирует исключение, если значение этой настройки меньше или равно текущему количеству одновременно обрабатываемых запросов.

Пример: max_concurrent_queries_for_all_users можно установить равным 99 для всех пользователей, а администратор базы данных может установить его равным 100 для себя, чтобы выполнять диагностические запросы даже при перегрузке сервера.

Изменение настройки для одного запроса или пользователя не влияет на другие запросы.

Возможные значения:

  • Положительное целое число.
  • 0 — без ограничения.

Пример

<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>

См. также

max_concurrent_queries_for_user

Максимальное количество одновременно обрабатываемых запросов для одного пользователя.

Возможные значения:

  • Положительное целое число.
  • 0 — без ограничения.

Пример

<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>

max_distributed_connections

Максимальное количество одновременных соединений с удалёнными серверами для распределённой обработки одного запроса к одной distributed таблице. Рекомендуется задавать значение не меньше количества серверов в кластере.

Следующие параметры используются только при создании distributed таблиц (и при запуске сервера), поэтому нет смысла изменять их в процессе работы.

max_distributed_depth

Ограничивает максимальную глубину рекурсивных запросов для таблиц Distributed.

Если значение превышено, сервер выбрасывает исключение.

Возможные значения:

  • Положительное целое число.
  • 0 — неограниченная глубина.

max_download_buffer_size

Максимальный размер буфера для параллельной загрузки (например, для URL-движка) для каждого потока.

max_download_threads

Максимальное количество потоков для загрузки данных (например, в движке URL).

max_estimated_execution_time

Максимальное оценочное время выполнения запроса в секундах. Проверяется для каждого блока данных, когда истекает timeout_before_checking_execution_speed.

max_execution_speed

Максимальное число обрабатываемых строк в секунду. Проверяется на каждом блоке данных, когда истекает timeout_before_checking_execution_speed. Если скорость выполнения слишком высока, она будет снижена.

max_execution_speed_bytes

Максимальное количество байт, обрабатываемых в секунду при выполнении запроса. Проверяется для каждого блока данных, когда timeout_before_checking_execution_speed истекает. Если скорость выполнения слишком высока, она будет ограничена.

max_execution_time

Максимальное время выполнения запроса в секундах.

Параметр max_execution_time может быть немного неочевидным. Он работает на основе интерполяции относительно текущей скорости выполнения запроса (это поведение контролируется параметром timeout_before_checking_execution_speed).

ClickHouse прервёт запрос, если прогнозируемое время выполнения превысит указанное значение max_execution_time. По умолчанию timeout_before_checking_execution_speed установлен в 10 секунд. Это означает, что через 10 секунд выполнения запроса ClickHouse начинает оценивать общее время выполнения. Если, например, max_execution_time установлен в 3600 секунд (1 час), ClickHouse завершит запрос, если оценочное время превысит этот предел в 3600 секунд. Если вы установите timeout_before_checking_execution_speed в 0, ClickHouse будет использовать фактическое (настенное) время как основу для max_execution_time.

Если время выполнения запроса превышает указанное количество секунд, поведение будет определяться параметром timeout_overflow_mode, который по умолчанию имеет значение throw.

Примечание

Таймаут проверяется, и запрос может быть остановлен только в определённых местах в процессе обработки данных. В настоящее время запрос не может быть остановлен во время слияния состояний агрегации или во время анализа запроса, и фактическое время выполнения будет больше значения этой настройки.

max_execution_time_leaf

Семантически похож на max_execution_time, но применяется только к листовым узлам для распределённых или удалённых запросов.

Например, если мы хотим ограничить время выполнения на листовом узле до 10s, но не иметь ограничения на начальном узле, то вместо использования max_execution_time в настройках вложенного подзапроса:

SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));

Мы можем использовать max_execution_time_leaf в качестве настройки запроса:

SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;

max_expanded_ast_elements

Максимальный размер синтаксического дерева запроса по числу узлов после раскрытия алиасов и звёздочки.

max_fetch_partition_retries_count

Количество повторных попыток при получении партиции с другого узла.

max_final_threads

Устанавливает максимальное количество параллельных потоков на этапе чтения данных запроса SELECT с модификатором FINAL.

Возможные значения:

  • Положительное целое число.
  • 0 или 1 — отключено. Запросы SELECT выполняются в одном потоке.

max_http_get_redirects

Максимальное количество переходов при перенаправлениях HTTP GET. Обеспечивает дополнительные меры безопасности, предотвращающие перенаправление ваших запросов на неожиданные сервисы со стороны вредоносного сервера.\n\nРассмотрим ситуацию, когда внешний сервер перенаправляет на другой адрес, но этот адрес выглядит как внутренний для инфраструктуры компании, и, отправив HTTP-запрос на внутренний сервер, вы можете обратиться к внутреннему API из внутренней сети, обойти аутентификацию или даже отправлять запросы к другим сервисам, таким как Redis или Memcached. Если у вас нет внутренней инфраструктуры (включая что-либо, запущенное на localhost) или вы доверяете серверу, разрешать перенаправления безопасно. Однако имейте в виду, что если URL использует HTTP вместо HTTPS, вам придется доверять не только удалённому серверу, но также вашему интернет‑провайдеру и каждой промежуточной сети.

max_hyperscan_regexp_length

Определяет максимальную длину каждого регулярного выражения в функциях множественного сопоставления Hyperscan.

Возможные значения:

  • Положительное целое число.
  • 0 — длина не ограничена.

Пример

Запрос:

SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 3;

Результат:

┌─multiMatchAny('abcd', ['ab', 'bcd', 'c', 'd'])─┐
│                                              1 │
└────────────────────────────────────────────────┘

Запрос:

SELECT multiMatchAny('abcd', ['ab','bcd','c','d']) SETTINGS max_hyperscan_regexp_length = 2;

Результат:

Исключение: Длина регулярного выражения слишком велика.

Смотрите также

max_hyperscan_regexp_total_length

Устанавливает максимальную суммарную длину всех регулярных выражений в каждой функции Hyperscan для поиска с несколькими совпадениями.

Возможные значения:

  • Положительное целое число.
  • 0 — длина не ограничена.

Пример

Запрос:

SELECT multiMatchAny('abcd', ['a','b','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;

Результат:

┌─multiMatchAny('abcd', ['a', 'b', 'c', 'd'])─┐
│                                           1 │
└─────────────────────────────────────────────┘

Запрос:

SELECT multiMatchAny('abcd', ['ab','bc','c','d']) SETTINGS max_hyperscan_regexp_total_length = 5;

Результат:

Исключение: Суммарная длина регулярных выражений слишком велика.

См. также

max_insert_block_size

Размер блоков (в количестве строк), формируемых для вставки в таблицу. Этот параметр применяется только в случаях, когда блоки формирует сервер. Например, при выполнении INSERT через HTTP-интерфейс сервер разбирает формат данных и формирует блоки указанного размера. Но при использовании clickhouse-client клиент разбирает данные самостоятельно, и настройка max_insert_block_size на сервере не влияет на размер вставляемых блоков. Настройка также не применяется при использовании INSERT SELECT, поскольку данные вставляются теми же блоками, которые формируются после SELECT.

Значение по умолчанию немного больше, чем max_block_size. Причина в том, что некоторые движки таблиц (*MergeTree) формируют на диске часть данных (data part) для каждого вставленного блока, и это довольно крупная сущность. Аналогично, таблицы *MergeTree сортируют данные во время вставки, и достаточно большой размер блока позволяет отсортировать больше данных в оперативной памяти.

max_insert_delayed_streams_for_parallel_write

Максимальное количество потоков (столбцов), для которых откладывается запись финальной части данных. По умолчанию — автоматически (100, если базовое хранилище поддерживает параллельную запись, например S3; иначе — отключено).

max_insert_threads

Максимальное количество потоков для выполнения запроса INSERT SELECT.

Возможные значения:

  • 0 (или 1) — INSERT SELECT без параллельного выполнения.
  • Положительное целое число, больше 1.

Значение по умолчанию в Cloud:

  • 1 для узлов с 8 GiB памяти
  • 2 для узлов с 16 GiB памяти
  • 4 для более крупных узлов

Параллельное выполнение INSERT SELECT имеет эффект только в том случае, если часть SELECT выполняется параллельно, см. настройку max_threads. Более высокие значения приводят к большему расходу памяти.

max_joined_block_size_bytes

Максимальный размер блока в байтах для результата JOIN (если алгоритм JOIN это поддерживает). 0 означает отсутствие ограничений.

max_joined_block_size_rows

Максимальный размер блока для результата JOIN (если алгоритм соединения поддерживает данный параметр). Значение 0 означает отсутствие ограничения.

max_limit_for_vector_search_queries

Запросы SELECT с LIMIT, превышающим значение этой настройки, не могут использовать индексы векторного сходства. Это помогает предотвращать переполнения памяти в индексах векторного сходства.

max_local_read_bandwidth

Максимальная скорость локального чтения в байтах в секунду.

max_local_write_bandwidth

Максимальная скорость локальной записи в байтах в секунду.

max_memory_usage

Значение по умолчанию в Cloud: зависит от объема RAM на реплике.

Максимальный объем RAM, используемый для выполнения запроса на одном сервере. Значение 0 означает отсутствие ограничения.

Этот параметр не учитывает объем доступной памяти или общий объем памяти на машине. Ограничение применяется к одному запросу на одном сервере.

Можно использовать SHOW PROCESSLIST, чтобы увидеть текущее потребление памяти для каждого запроса. Пиковое потребление памяти отслеживается для каждого запроса и записывается в лог.

Потребление памяти отслеживается не полностью для состояний следующих агрегатных функций с аргументами типов String и Array:

  • min
  • max
  • any
  • anyLast
  • argMin
  • argMax

Потребление памяти также ограничивается параметрами max_memory_usage_for_user и max_server_memory_usage.

max_memory_usage_for_user

Максимальный объем оперативной памяти, используемой для выполнения запросов пользователя на одном сервере. Ноль означает отсутствие ограничения.

По умолчанию объем не ограничен (max_memory_usage_for_user = 0).

См. также описание max_memory_usage.

Например, если вы хотите установить max_memory_usage_for_user в 1000 байт для пользователя clickhouse_read, вы можете использовать следующий оператор

ALTER USER clickhouse_read SETTINGS max_memory_usage_for_user = 1000;

Вы можете убедиться, что всё сработало, выйдя из клиента, снова войдя в него, а затем вызвав функцию getSetting:

SELECT getSetting('max_memory_usage_for_user');

max_network_bandwidth

Ограничивает скорость обмена данными по сети в байтах в секунду. Этот параметр применяется для каждого запроса.

Возможные значения:

  • Положительное целое число.
  • 0 — ограничение пропускной способности отключено.

max_network_bandwidth_for_all_users

Ограничивает скорость обмена данными по сети, измеряемую в байтах в секунду. Этот параметр применяется ко всем одновременно выполняемым запросам на сервере.

Возможные значения:

  • Положительное целое число.
  • 0 — ограничение скорости передачи данных отключено.

max_network_bandwidth_for_user

Ограничивает скорость обмена данными по сети в байтах в секунду. Этот параметр применяется ко всем одновременно выполняющимся запросам одного пользователя.

Возможные значения:

  • Положительное целое число.
  • 0 — контроль скорости передачи данных отключён.

max_network_bytes

Ограничивает объём данных (в байтах), которые принимаются или передаются по сети при выполнении запроса. Эта настройка применяется к каждому отдельному запросу.

Возможные значения:

  • Положительное целое число.
  • 0 — контроль объёма данных отключён.

max_number_of_partitions_for_independent_aggregation

Максимальное количество партиций в таблице, при котором применяется оптимизация.

max_os_cpu_wait_time_ratio_to_throw

Максимально допустимое отношение времени ожидания CPU в ОС (метрика OSCPUWaitMicroseconds) к времени занятости (метрика OSCPUVirtualTimeMicroseconds), при котором запросы могут быть отклонены. Для вычисления вероятности используется линейная интерполяция между минимальным и максимальным значениями этого отношения; при максимальном значении вероятность равна 1.

max_parallel_replicas

Максимальное количество реплик для каждого сегмента при выполнении запроса.

Возможные значения:

  • Положительное целое число.

Дополнительная информация

Этот параметр может приводить к различным результатам в зависимости от используемых настроек.

Примечание

Этот параметр приведёт к некорректным результатам, если используются JOIN или подзапросы и не все таблицы удовлетворяют определённым требованиям. Подробности см. в разделе Distributed Subqueries and max_parallel_replicas.

Параллельная обработка с использованием ключа SAMPLE

Запрос может быть обработан быстрее, если он выполняется параллельно на нескольких серверах. Однако производительность запроса может ухудшиться в следующих случаях:

  • Положение ключа выборки в ключе партиционирования не позволяет эффективно выполнять сканирование по диапазонам.
  • Добавление ключа выборки в таблицу снижает эффективность фильтрации по другим столбцам.
  • Ключ выборки представляет собой выражение с высокой вычислительной стоимостью.
  • Распределение задержек в кластере имеет «длинный хвост», поэтому опрос большего числа серверов увеличивает суммарную задержку выполнения запроса.

Параллельная обработка с помощью parallel_replicas_custom_key

Этот параметр полезен для любой реплицированной таблицы.

max_parser_backtracks

Максимальное количество откатов парсера (сколько раз он пытается разные варианты при рекурсивном нисходящем разборе).

max_parser_depth

Ограничивает максимальную глубину рекурсии в парсере рекурсивного спуска. Позволяет контролировать размер стека.

Возможные значения:

  • Положительное целое число.
  • 0 — глубина рекурсии не ограничена.

max_parsing_threads

Максимальное количество потоков для разбора данных во входных форматах, поддерживающих параллельный разбор. По умолчанию значение определяется автоматически.

max_partition_size_to_drop

Ограничение на размер партиций, которые можно удалять во время выполнения запросов. Значение 0 означает, что вы можете удалять партиции без каких-либо ограничений.

Значение по умолчанию в Cloud: 1 ТБ.

Примечание

Этот параметр запроса переопределяет одноимённый параметр сервера, см. max_partition_size_to_drop

max_partitions_per_insert_block

Ограничивает максимальное количество партиций в одном вставляемом блоке, и если блок содержит слишком много партиций, выбрасывается исключение.

  • Положительное целое число.
  • 0 — неограниченное количество партиций.

Подробности

При вставке данных ClickHouse вычисляет количество партиций во вставляемом блоке. Если количество партиций превышает max_partitions_per_insert_block, ClickHouse либо записывает предупреждение в лог, либо выбрасывает исключение в зависимости от значения throw_on_max_partitions_per_insert_block. Исключения имеют следующий текст:

"Too many partitions for a single INSERT block (partitions_count partitions, limit is " + toString(max_partitions) + "). The limit is controlled by the 'max_partitions_per_insert_block' setting. A large number of partitions is a common misconception. It will lead to severe negative performance impact, including slow server startup, slow INSERT queries and slow SELECT queries. Recommended total number of partitions for a table is under 1000..10000. Please note, that partitioning is not intended to speed up SELECT queries (ORDER BY key is sufficient to make range queries fast). Partitions are intended for data manipulation (DROP PARTITION, etc)."

Примечание

Этот параметр является защитным порогом, поскольку использование большого числа партиций — распространённое заблуждение.

max_partitions_to_read

Ограничивает максимальное количество партиций, к которым можно получить доступ в одном запросе.

Значение настройки, заданное при создании таблицы, может быть переопределено на уровне запроса.

Возможные значения:

  • Положительное целое число
  • -1 — без ограничений (по умолчанию)
Примечание

Вы также можете указать настройку MergeTree max_partitions_to_read в настройках таблицы.

max_parts_to_move

Ограничивает количество частей, которые могут быть перемещены в одном запросе. Ноль означает отсутствие ограничений.

max_projection_rows_to_use_projection_index

Если количество строк, которые нужно прочитать из индекса проекции, меньше или равно этому порогу, ClickHouse попытается использовать индекс проекции при выполнении запроса.

max_query_size

Максимальное количество байт в строке запроса, которую разбирает SQL-парсер. Данные в части VALUES запросов INSERT обрабатываются отдельным потоковым парсером (который потребляет O(1) RAM), и на них это ограничение не распространяется.

Примечание

max_query_size нельзя установить внутри SQL-запроса (например, SELECT now() SETTINGS max_query_size=10000), потому что ClickHouse должен выделить буфер для разбора запроса, а размер этого буфера определяется настройкой max_query_size, которая должна быть задана до выполнения запроса.

max_read_buffer_size

Максимальный размер буфера при чтении данных из файловой системы.

max_read_buffer_size_local_fs

Максимальный размер буфера для чтения из локальной файловой системы. Если установлено значение 0, будет использоваться max_read_buffer_size.

max_read_buffer_size_remote_fs

Максимальный размер буфера для чтения из удалённой файловой системы. Если установлено значение 0, будет использоваться max_read_buffer_size.

max_recursive_cte_evaluation_depth

Максимальная глубина вычисления рекурсивного CTE

max_remote_read_network_bandwidth

Максимальная скорость сетевого обмена данными при чтении (в байтах в секунду).

max_remote_write_network_bandwidth

Максимальная скорость передачи данных по сети при записи, в байтах в секунду.

max_replica_delay_for_distributed_queries

Отключает отстающие реплики для распределённых запросов. См. Replication.

Задаёт время в секундах. Если отставание реплики больше или равно заданному значению, эта реплика не используется.

Возможные значения:

  • Положительное целое число.
  • 0 — отставание реплик не проверяется.

Чтобы исключить использование любой реплики с ненулевым отставанием, установите этот параметр в 1.

Используется при выполнении SELECT из distributed таблицы, указывающей на реплицируемые таблицы.

max_result_bytes

Ограничивает размер результата в байтах (в несжатом виде). Запрос будет остановлен после обработки блока данных, если порог достигнут, но последний блок результата не будет обрезан, поэтому размер результата может быть больше порогового значения.

Особенности

Для этого порога учитывается размер результата в памяти. Даже если размер результата небольшой, он может ссылаться на более крупные структуры данных в памяти, представляющие словари столбцов LowCardinality и Arenas столбцов AggregateFunction, так что порог может быть превышен, несмотря на небольшой размер результата.

Примечание

Этот параметр довольно низкоуровневый и должен использоваться с осторожностью

max_result_rows

Значение по умолчанию в Cloud: 0.

Ограничивает количество строк в результате. Ограничение также проверяется для подзапросов и на удалённых серверах при выполнении частей распределённого запроса. Если значение равно 0, ограничение не применяется.

Запрос будет остановлен после обработки блока данных, если порог достигнут, но последний блок результата не будет усечён, поэтому размер результата может быть больше порогового значения.

max_reverse_dictionary_lookup_cache_size_bytes

Максимальный размер в байтах кэша обратного поиска по словарю в рамках одного запроса, используемого функцией dictGetKeys. Кэш хранит сериализованные кортежи ключей для каждого значения атрибута, чтобы избежать повторного сканирования словаря в пределах одного и того же запроса. При достижении лимита элементы вытесняются по алгоритму LRU. Установите 0, чтобы отключить кэширование.

max_rows_in_distinct

Максимальное количество уникальных строк при использовании DISTINCT.

max_rows_in_join

Ограничивает количество строк в хеш-таблице, которая используется при объединении таблиц.

Этот параметр применяется к операциям SELECT ... JOIN и табличному движку Join.

Если запрос содержит несколько операций JOIN, ClickHouse проверяет этот параметр для каждого промежуточного результата.

Когда достигается лимит, ClickHouse может выполнить различные действия. Используйте настройку join_overflow_mode, чтобы выбрать нужное действие.

Возможные значения:

  • Положительное целое число.
  • 0 — неограниченное количество строк.

max_rows_in_set

Максимальное количество строк для набора данных в выражении IN, созданном из подзапроса.

max_rows_in_set_to_optimize_join

Максимальный размер множества, используемого для фильтрации соединяемых таблиц по наборам строк друг друга до выполнения соединения.

Возможные значения:

  • 0 — отключить.
  • Любое положительное целое число.

max_rows_to_group_by

Максимальное количество уникальных ключей, полученных при агрегации. Этот параметр позволяет ограничить потребление памяти при агрегации.

Если при агрегации в GROUP BY генерируется больше строк (уникальных ключей GROUP BY), чем указано в этой настройке, поведение будет определяться параметром group_by_overflow_mode, который по умолчанию равен throw, но может быть переключён в режим приблизительного GROUP BY.

max_rows_to_read

Максимальное количество строк, которое может быть прочитано из таблицы при выполнении запроса. Ограничение проверяется для каждого обрабатываемого фрагмента данных, применяется только к наиболее глубокому табличному выражению и при чтении с удалённого сервера проверяется только на удалённом сервере.

max_rows_to_read_leaf

Максимальное количество строк, которые могут быть прочитаны из локальной таблицы на leaf-узле при выполнении распределённого запроса. Хотя распределённые запросы могут выполнять несколько подзапросов к каждому сегменту (leaf), это ограничение будет проверяться только на этапе чтения на leaf-узлах и игнорироваться на этапе слияния результатов на корневом узле.

Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со 100 строками. Распределённый запрос, который должен прочитать все данные из обеих таблиц с настройкой max_rows_to_read=150, завершится с ошибкой, так как в сумме будет 200 строк. Запрос с max_rows_to_read_leaf=150 выполнится успешно, поскольку leaf-узлы прочитают максимум по 100 строк.

Ограничение проверяется для каждого обрабатываемого фрагмента данных.

Примечание

Этот параметр работает нестабильно при prefer_localhost_replica=1.

max_rows_to_sort

Максимальное количество строк, участвующих в сортировке. Это позволяет ограничить потребление памяти при сортировке. Если для операции ORDER BY необходимо обработать больше строк, чем указано, то поведение будет определяться параметром sort_overflow_mode, который по умолчанию имеет значение throw.

max_rows_to_transfer

Максимальное количество строк, которое может быть передано на удалённый сервер или сохранено во временной таблице при выполнении части GLOBAL IN/JOIN.

max_sessions_for_user

Максимальное число одновременных сеансов для одного аутентифицированного пользователя сервера ClickHouse.

Пример:

<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>
    <!-- Пользователь Alice может подключаться к серверу ClickHouse не более одного раза одновременно. -->
    <Alice>
        <profile>single_session_user</profile>
    </Alice>
    <!-- Пользователь Bob может использовать 2 одновременных сессии. -->
    <Bob>
        <profile>two_sessions_profile</profile>
    </Bob>
    <!-- Пользователь Charles может использовать неограниченное количество одновременных сессий. -->
    <Charles>
        <profile>unlimited_sessions_profile</profile>
    </Charles>
</users>

Возможные значения:

  • Положительное целое число
  • 0 — бесконечное количество одновременных сеансов (по умолчанию)

max_size_to_preallocate_for_aggregation

Допустимое количество элементов для предварительного выделения памяти во всех хеш-таблицах в сумме перед агрегацией.

max_size_to_preallocate_for_joins

Максимальное количество элементов, для которых допускается предварительное выделение памяти во всех хеш-таблицах суммарно перед выполнением операции JOIN

max_streams_for_merge_tree_reading

Если параметр не равен нулю, ограничивает количество потоков чтения для таблиц MergeTree.

max_streams_multiplier_for_merge_tables

Запрашивать больше потоков при чтении из таблицы Merge. Потоки будут распределены между таблицами, которые использует таблица Merge. Это позволяет более равномерно распределять работу между потоками и особенно полезно, когда объединяемые таблицы различаются по размеру.

max_streams_to_max_threads_ratio

Позволяет использовать больше источников, чем количество потоков, чтобы более равномерно распределять работу между потоками. Предполагается, что это временное решение, так как в будущем можно будет сделать количество источников равным количеству потоков, однако каждый источник будет динамически выбирать доступную ему работу.

max_subquery_depth

Если запрос содержит больше вложенных подзапросов, чем указано в параметре, генерируется исключение.

Совет

Это позволяет ввести дополнительную проверку и защитить пользователей вашего кластера от написания чрезмерно сложных запросов.

max_table_size_to_drop

Ограничение на удаление таблиц при выполнении запроса. Значение 0 означает, что вы можете удалять любые таблицы без ограничений.

Значение по умолчанию в Cloud: 1 ТБ.

Примечание

Этот параметр запроса переопределяет эквивалентный параметр на стороне сервера, см. max_table_size_to_drop

max_temporary_columns

Максимальное количество временных столбцов, которые должны одновременно находиться в оперативной памяти при выполнении запроса, включая константные столбцы. Если запрос в результате промежуточных вычислений создает в памяти больше временных столбцов, чем указано, будет сгенерировано исключение.

Совет

Этот параметр полезен для предотвращения чрезмерно сложных запросов.

Значение 0 означает отсутствие ограничения.

max_temporary_data_on_disk_size_for_query

Максимальный объём данных во временных файлах на диске в байтах для всех одновременно выполняемых запросов.

Возможные значения:

  • Положительное целое число.
  • 0 — без ограничений (значение по умолчанию)

max_temporary_data_on_disk_size_for_user

Максимальный объем данных, потребляемый временными файлами на диске (в байтах), для всех одновременно выполняемых запросов пользователя.

Возможные значения:

  • Положительное целое число.
  • 0 — без ограничений (значение по умолчанию)

max_temporary_non_const_columns

Подобно настройке max_temporary_columns, задаёт максимальное количество временных столбцов, которые должны одновременно находиться в оперативной памяти при выполнении запроса, но без учёта константных столбцов.

Примечание

Константные столбцы формируются довольно часто при выполнении запроса, но практически не требуют вычислительных ресурсов.

max_threads

Максимальное количество потоков обработки запроса, не включая потоки для получения данных с удалённых серверов (см. параметр max_distributed_connections).

Этот параметр применяется к потокам, которые параллельно выполняют одни и те же этапы конвейера обработки запроса. Например, при чтении из таблицы, если возможно параллельно вычислять выражения с функциями, выполнять фильтрацию с помощью WHERE и предварительную агрегацию для GROUP BY с использованием как минимум max_threads потоков, то будет задействовано значение max_threads.

Для запросов, которые завершаются быстро из‑за LIMIT, можно установить меньшее значение max_threads. Например, если необходимое количество записей находится в каждом блоке и max_threads = 8, то извлекается 8 блоков, хотя было бы достаточно прочитать только один.

Чем меньше значение max_threads, тем меньше потребляется памяти.

Значение по умолчанию в Cloud: auto(3)

max_threads_for_indexes

Максимальное количество потоков, обрабатывающих индексы.

max_untracked_memory

Мелкие операции выделения и освобождения памяти группируются в локальной для потока переменной и отслеживаются или профилируются только тогда, когда их суммарный объем (в абсолютном выражении) превышает заданное значение. Если это значение больше, чем memory_profiler_step, оно будет автоматически снижено до memory_profiler_step.

memory_overcommit_ratio_denominator

Он задаёт «мягкий» лимит памяти, действующий после достижения глобального жёсткого лимита. Это значение используется для расчёта коэффициента overcommit для запроса. Нулевое значение означает, что запрос будет пропущен. Подробнее см. в разделе memory overcommit.

memory_overcommit_ratio_denominator_for_user

Это мягкое ограничение памяти на уровне пользователя, которое применяется при достижении жёсткого лимита. Это значение используется для вычисления коэффициента overcommit для запроса. Ноль означает, что запрос пропускается. Подробнее см. в разделе memory overcommit.

memory_profiler_sample_max_allocation_size

Собирать случайные выделения памяти размером, меньшим или равным указанному значению, с вероятностью memory_profiler_sample_probability. 0 означает отключено. Имеет смысл установить max_untracked_memory в 0, чтобы это пороговое значение работало как ожидается.

memory_profiler_sample_min_allocation_size

Собирать случайные выделения памяти размером не меньше указанного значения с вероятностью, равной memory_profiler_sample_probability. 0 означает отключено. Имеет смысл установить параметр max_untracked_memory в 0, чтобы этот порог работал, как ожидается.

memory_profiler_sample_probability

Собирать случайные события выделения и освобождения памяти и записывать их в system.trace_log с trace_type 'MemorySample'. Вероятность применяется к каждому событию выделения/освобождения независимо от размера этого выделения (может быть изменена параметрами memory_profiler_sample_min_allocation_size и memory_profiler_sample_max_allocation_size). Обратите внимание, что семплирование происходит только тогда, когда объём неотслеживаемой памяти превышает значение 'max_untracked_memory'. Для более детализированного семплирования имеет смысл установить 'max_untracked_memory' в 0.

memory_profiler_step

Задает шаг профилировщика памяти. Каждый раз, когда потребление памяти запросом превышает очередной шаг (в байтах), профилировщик памяти собирает стек-трейс выделения и записывает его в trace_log.

Возможные значения:

  • Положительное целое число байт.

  • 0 — для отключения профилировщика памяти.

memory_tracker_fault_probability

Для тестирования exception safety — генерировать исключение при каждом выделении памяти с указанной вероятностью.

memory_usage_overcommit_max_wait_microseconds

Максимальное время ожидания, в течение которого поток будет ждать освобождения памяти в случае превышения лимита памяти на уровне пользователя. Если время ожидания истечёт и память не будет освобождена, выбрасывается исключение. Подробнее о memory overcommit.

merge_table_max_tables_to_look_for_schema_inference

При создании таблицы Merge без явной схемы или при использовании табличной функции merge схема определяется как объединение не более чем указанного числа подходящих таблиц. Если таблиц больше, схема будет определена только на основе первых таблиц в указанном количестве.

merge_tree_coarse_index_granularity

При поиске данных ClickHouse проверяет метки в файле индекса. Если ClickHouse определяет, что требуемые ключи находятся в некотором диапазоне, он делит этот диапазон на merge_tree_coarse_index_granularity поддиапазонов и рекурсивно ищет в них требуемые ключи.

Возможные значения:

  • Любое положительное чётное целое число.

merge_tree_compact_parts_min_granules_to_multibuffer_read

ClickHouse Cloud only

Оказывает влияние только в ClickHouse Cloud. Количество гранул в полосе компактной части таблиц MergeTree, при котором используется многобуферный ридер, поддерживающий параллельное чтение и опережающую выборку (prefetch). При чтении из удалённой файловой системы использование многобуферного ридера увеличивает количество операций чтения.

merge_tree_determine_task_size_by_prewhere_columns

Определяет, следует ли использовать для определения размера задачи чтения только размер столбцов из PREWHERE.

merge_tree_max_bytes_to_use_cache

Если ClickHouse нужно прочитать более merge_tree_max_bytes_to_use_cache байт в одном запросе, он не использует кэш несжатых блоков.

Кэш несжатых блоков хранит данные, извлечённые для запросов. ClickHouse использует этот кэш для ускорения ответа на повторяющиеся небольшие запросы. Эта настройка защищает кэш от засорения запросами, которые читают большой объём данных. Серверная настройка uncompressed_cache_size определяет размер кэша несжатых блоков.

Возможные значения:

  • Любое положительное целое число.

merge_tree_max_rows_to_use_cache

Если в рамках одного запроса ClickHouse должен прочитать больше строк, чем merge_tree_max_rows_to_use_cache, он не использует кэш несжатых блоков.

Кэш несжатых блоков хранит данные, извлечённые для запросов. ClickHouse использует этот кэш для ускорения ответов на повторяющиеся небольшие запросы. Этот параметр защищает кэш от засорения запросами, которые читают большой объём данных. Параметр сервера uncompressed_cache_size задаёт размер кэша несжатых блоков.

Возможные значения:

  • Любое положительное целое число.

merge_tree_min_bytes_for_concurrent_read

Если количество байт, которое нужно прочитать из одного файла таблицы движка MergeTree, превышает merge_tree_min_bytes_for_concurrent_read, ClickHouse пытается выполнять параллельное чтение этого файла в нескольких потоках.

Возможное значение:

  • Положительное целое число.

merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem

Минимальное количество байт, которое должно быть прочитано из одного файла, прежде чем движок MergeTree сможет распараллелить чтение при работе с удалённой файловой системой. Мы не рекомендуем использовать этот параметр.

Возможные значения:

  • Положительное целое число.

merge_tree_min_bytes_for_seek

Если расстояние между двумя блоками данных, которые нужно прочитать из одного файла, меньше merge_tree_min_bytes_for_seek байт, ClickHouse последовательно читает диапазон файла, содержащий оба блока, тем самым избегая дополнительной операции seek.

Возможные значения:

  • Любое положительное целое число.

merge_tree_min_bytes_per_task_for_remote_reading

Псевдонимы: filesystem_prefetch_min_bytes_for_single_read_task

Минимальное количество байт для чтения на одну задачу.

merge_tree_min_read_task_size

Жёсткий нижний предел размера задачи (даже если число гранул невелико и количество доступных потоков велико, задачи меньшего размера не будут выделяться).

merge_tree_min_rows_for_concurrent_read

Если количество строк для чтения из файла таблицы MergeTree превышает merge_tree_min_rows_for_concurrent_read, ClickHouse пытается выполнить параллельное чтение этого файла в нескольких потоках.

Возможные значения:

  • Положительное целое число.

merge_tree_min_rows_for_concurrent_read_for_remote_filesystem

Минимальное количество строк, которое нужно прочитать из одного файла, прежде чем движок MergeTree сможет распараллелить чтение при работе с удалённой файловой системой. Мы не рекомендуем использовать этот параметр.

Возможные значения:

  • Положительное целое число.

merge_tree_min_rows_for_seek

Если расстояние между двумя блоками данных в одном файле, которые требуется прочитать, меньше merge_tree_min_rows_for_seek строк, ClickHouse не выполняет перемещение по файлу, а читает данные последовательно.

Возможные значения:

  • Любое положительное целое число.

merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability

Для тестирования PartsSplitter — разбивает диапазоны чтения на пересекающиеся и непересекающиеся при каждом чтении из MergeTree с указанной вероятностью.

merge_tree_storage_snapshot_sleep_ms

Вставляет искусственную задержку (в миллисекундах) при создании снимка хранилища для таблиц MergeTree. Используется только для тестирования и отладки.

Возможные значения:

  • 0 — без задержки (по умолчанию)
  • N — задержка в миллисекундах

merge_tree_use_const_size_tasks_for_remote_reading

Использовать ли задачи фиксированного размера при чтении из удалённой таблицы.

merge_tree_use_deserialization_prefixes_cache

Включает кэширование метаданных столбцов по префиксам файлов при чтении данных с удаленных дисков в таблицах MergeTree.

merge_tree_use_prefixes_deserialization_thread_pool

Включает использование пула потоков для параллельного чтения префиксов в Wide-частях MergeTree. Размер этого пула потоков контролируется серверной настройкой max_prefixes_deserialization_thread_pool_size.

merge_tree_use_v1_object_and_dynamic_serialization

При включении в MergeTree будет использоваться версия сериализации V1 для типов JSON и Dynamic вместо V2. Изменение этой настройки вступает в силу только после перезапуска сервера.

metrics_perf_events_enabled

Если параметр включён, некоторые perf-события будут измеряться в ходе выполнения запросов.

metrics_perf_events_list

Список perf-метрик, разделённых запятыми, которые будут измеряться во время выполнения запросов. Пустое значение означает, что учитываются все события. См. PerfEventInfo в исходном коде для списка доступных событий.

min_bytes_to_use_direct_io

Минимальный объем данных, при котором используется прямой ввод-вывод (Direct I/O) при работе с дисковым хранилищем.

ClickHouse использует этот параметр при чтении данных из таблиц. Если общий объем всех данных, подлежащих чтению, превышает min_bytes_to_use_direct_io байт, ClickHouse читает данные с диска с опцией O_DIRECT.

Возможные значения:

  • 0 — прямой ввод-вывод (Direct I/O) отключен.
  • Положительное целое число.

min_bytes_to_use_mmap_io

Это экспериментальный параметр. Задаёт минимальный объём памяти для чтения больших файлов без копирования данных из ядра в пользовательское пространство. Рекомендуемый порог — около 64 МБ, так как вызовы mmap/munmap выполняются медленно. Имеет смысл только для больших файлов и помогает только в том случае, если данные находятся в кэше страниц.

Возможные значения:

  • Положительное целое число.
  • 0 — большие файлы читаются только с копированием данных из ядра в пользовательское пространство.

min_chunk_bytes_for_parallel_parsing

  • Тип: unsigned int
  • Значение по умолчанию: 1 MiB

Минимальный размер фрагмента в байтах, обрабатываемого каждым потоком параллельно.

min_compress_block_size

Применяется к таблицам MergeTree. Чтобы уменьшить задержку при обработке запросов, блок сжимается при записи следующей метки, если его размер не менее min_compress_block_size. По умолчанию — 65 536.

Фактический размер блока, если объём несжатых данных меньше max_compress_block_size, не меньше этого значения и не меньше объёма данных для одной метки.

Рассмотрим пример. Предположим, что при создании таблицы параметр index_granularity был установлен равным 8192.

Мы записываем столбец типа UInt32 (4 байта на значение). При записи 8192 строк получится 32 КБ данных. Поскольку min_compress_block_size = 65 536, сжатый блок будет формироваться на каждые две метки.

Мы записываем столбец URL типа String (средний размер 60 байт на значение). При записи 8192 строк средний объём будет немного меньше 500 КБ данных. Поскольку это больше 65 536, сжатый блок будет формироваться для каждой метки. В этом случае при чтении данных с диска в диапазоне одной метки лишние данные не будут распакованы.

Примечание

Это настройка для опытных пользователей, и вам не следует изменять её, если вы только начинаете работать с ClickHouse.

min_count_to_compile_aggregate_expression

Минимальное количество идентичных агрегатных выражений для запуска JIT-компиляции. Работает только если включена настройка compile_aggregate_expressions.

Возможные значения:

  • Положительное целое число.
  • 0 — идентичные агрегатные выражения всегда JIT-компилируются.

min_count_to_compile_expression

Минимальное число раз, которое выражение должно быть выполнено, прежде чем оно будет скомпилировано.

min_count_to_compile_sort_description

Количество идентичных описаний сортировки, при достижении которого они компилируются с помощью JIT

min_execution_speed

Минимальная скорость выполнения в строках в секунду. Проверяется для каждого блока данных по истечении времени действия timeout_before_checking_execution_speed. Если скорость выполнения ниже, выбрасывается исключение.

min_execution_speed_bytes

Минимальное число байт, обрабатываемых в секунду при выполнении запроса. Проверяется на каждом блоке данных по истечении timeout_before_checking_execution_speed. Если скорость выполнения ниже, выбрасывается исключение.

min_external_table_block_size_bytes

Объединяет блоки, передаваемые во внешнюю таблицу, до указанного размера в байтах, если их размер меньше указанного.

min_external_table_block_size_rows

Объединять блоки, передаваемые во внешнюю таблицу, до указанного размера в строках, если их размер меньше указанного.

min_free_disk_bytes_to_perform_insert

Минимальный объём свободного дискового пространства (в байтах), необходимый для выполнения операции вставки.

min_free_disk_ratio_to_perform_insert

Минимальное отношение свободного дискового пространства к общему объёму диска, необходимое для выполнения вставки.

min_free_disk_space_for_temporary_data

Минимальный объём свободного дискового пространства, который необходимо сохранять при записи временных данных, используемых для внешней сортировки и агрегации.

min_hit_rate_to_use_consecutive_keys_optimization

Минимальный коэффициент попаданий кэша, при котором оптимизация агрегации по последовательным ключам остается включенной.

min_insert_block_size_bytes

Устанавливает минимальный размер блока в байтах, который может быть вставлен в таблицу с помощью запроса INSERT. Блоки меньшего размера объединяются в более крупные.

Возможные значения:

  • Положительное целое число.
  • 0 — объединение отключено.

min_insert_block_size_bytes_for_materialized_views

Устанавливает минимальный размер блока в байтах, который может быть вставлен в таблицу запросом INSERT. Блоки меньшего размера объединяются в более крупные. Этот параметр применяется только к блокам, вставляемым в materialized view. Настраивая этот параметр, вы управляете объединением блоков при вставке в materialized view и избегаете избыточного использования памяти.

Возможные значения:

  • Любое положительное целое число.
  • 0 — объединение отключено.

См. также

min_insert_block_size_rows

Устанавливает минимальное количество строк в блоке, которое может быть вставлено в таблицу при выполнении запроса INSERT. Блоки меньшего размера объединяются в более крупные.

Возможные значения:

  • Положительное целое число.
  • 0 — объединение отключено.

min_insert_block_size_rows_for_materialized_views

Устанавливает минимальное количество строк в блоке, которые могут быть вставлены в таблицу INSERT-запросом. Блоки меньшего размера объединяются в более крупные. Этот параметр применяется только к блокам, вставляемым в materialized view. Настраивая этот параметр, вы управляете объединением блоков при записи в materialized view и избегаете избыточного использования памяти.

Возможные значения:

  • Любое положительное целое число.
  • 0 — объединение отключено.

Смотрите также

min_joined_block_size_bytes

Минимальный размер блока в байтах для входных и выходных блоков JOIN (если алгоритм JOIN это поддерживает). Маленькие блоки будут объединены. 0 — без ограничений.

min_joined_block_size_rows

Минимальный размер блока в строках для входных и выходных блоков JOIN (если алгоритм соединения это поддерживает). Небольшие блоки будут объединены. 0 означает отсутствие ограничений.

min_os_cpu_wait_time_ratio_to_throw

Минимальное отношение между временем ожидания CPU в ОС (метрика OSCPUWaitMicroseconds) и временем занятости CPU (метрика OSCPUVirtualTimeMicroseconds), при котором система начинает рассматривать возможность отклонения запросов. Для вычисления вероятности используется линейная интерполяция между минимальным и максимальным значениями этого отношения; при этом значении вероятность равна 0.

min_outstreams_per_resize_after_split

Задает минимальное количество выходных потоков процессора Resize или StrictResize после выполнения разбиения при построении конвейера. Если получившееся количество потоков меньше этого значения, операция разбиения не будет выполнена.

Что такое узел Resize

Узел Resize — это процессор в конвейере запроса, который регулирует количество потоков данных, проходящих через конвейер. Он может как увеличивать, так и уменьшать количество потоков, чтобы сбалансировать нагрузку между несколькими потоками выполнения или процессорами. Например, если запросу требуется больше параллелизма, узел Resize может разделить один поток на несколько потоков. И наоборот, он может объединить несколько потоков в меньшее количество потоков, чтобы консолидировать обработку данных.

Узел Resize обеспечивает равномерное распределение данных между потоками, сохраняя структуру блоков данных. Это помогает оптимизировать использование ресурсов и улучшить производительность запроса.

Почему узел Resize необходимо разделить

Во время выполнения конвейера мьютекс ExecutingGraph::Node::status_mutex центрального узла Resize становится точкой сильной конкуренции за доступ, особенно в средах с большим количеством ядер, и это приводит к следующему:

  1. Увеличению задержки для ExecutingGraph::updateNode, что напрямую влияет на производительность запросов.
  2. Избыточное количество циклов ЦП тратится на ожидание в спинлоке (native_queued_spin_lock_slowpath), что снижает эффективность.
  3. Снижению загрузки ЦП, что ограничивает параллелизм и пропускную способность.

Как происходит разбиение узла Resize

  1. Проверяется количество выходных потоков, чтобы убедиться, что разбиение может быть выполнено: выходные потоки каждого процессора разбиения достигают или превышают порог min_outstreams_per_resize_after_split.
  2. Узел Resize делится на несколько меньших узлов Resize с одинаковым количеством портов, каждый из которых обрабатывает подмножество входных и выходных потоков.
  3. Каждая группа обрабатывается независимо, снижая конкуренцию за блокировки.

Разбиение узла Resize с произвольными входами/выходами

В некоторых случаях, когда число входов/выходов не делится на количество узлов Resize, на которые выполняется разбиение, часть входов подключается к NullSource, а часть выходов — к NullSink. Это позволяет выполнить разбиение, не затрагивая общий поток данных.

Назначение настройки

Настройка min_outstreams_per_resize_after_split гарантирует, что разбиение узлов Resize является осмысленным и не приводит к созданию слишком небольшого числа потоков, что могло бы вызвать неэффективную параллельную обработку. Обеспечивая минимальное количество выходных потоков, эта настройка помогает поддерживать баланс между параллелизмом и накладными расходами, оптимизируя выполнение запросов в сценариях, связанных с разбиением и слиянием потоков.

Отключение настройки

Чтобы отключить разбиение узлов Resize, установите эту настройку в 0. Это предотвратит разбиение узлов Resize при построении конвейера, позволяя им сохранять свою исходную структуру без разделения на более мелкие узлы.

min_table_rows_to_use_projection_index

Если оценочное количество строк, считываемых из таблицы, больше либо равно этому порогу, ClickHouse попытается использовать индекс проекции при выполнении запроса.

mongodb_throw_on_unsupported_query

Если настройка включена, таблицы MongoDB возвращают ошибку, если невозможно построить запрос MongoDB. В противном случае ClickHouse считывает всю таблицу и обрабатывает её локально. Эта настройка не действует, когда allow_experimental_analyzer=0.

move_all_conditions_to_prewhere

Перенос всех подходящих условий из WHERE в PREWHERE

move_primary_key_columns_to_end_of_prewhere

Перемещать условия PREWHERE, содержащие столбцы первичного ключа, в конец цепочки условий AND. Скорее всего, эти условия уже учитываются при анализе первичного ключа и поэтому мало влияют на фильтрацию на этапе PREWHERE.

multiple_joins_try_to_keep_original_names

Не добавлять псевдонимы в список выражений верхнего уровня при преобразовании запросов с несколькими JOIN

mutations_execute_nondeterministic_on_initiator

Если значение true, константные недетерминированные функции (например, функция now()) выполняются на инициаторе и заменяются на литералы в запросах UPDATE и DELETE. Это помогает поддерживать согласованность данных на репликах при выполнении мутаций с константными недетерминированными функциями. Значение по умолчанию: false.

mutations_execute_subqueries_on_initiator

Если параметр включен, скалярные подзапросы выполняются на сервере-инициаторе и заменяются литералами в запросах UPDATE и DELETE. Значение по умолчанию: false.

mutations_max_literal_size_to_replace

Максимальный размер сериализованного литерала в байтах для замены в запросах UPDATE и DELETE. Вступает в силу только в том случае, если включена хотя бы одна из двух настроек выше. Значение по умолчанию: 16384 (16 KiB).

mutations_sync

Позволяет выполнять запросы ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS (мутации) синхронно.

Возможные значения:

ЗначениеОписание
0Мутации выполняются асинхронно.
1Запрос ожидает завершения всех мутаций на текущем сервере.
2Запрос ожидает завершения всех мутаций на всех репликах (если они есть).
3Запрос ожидает завершения мутаций только на активных репликах. Поддерживается только для SharedMergeTree. Для ReplicatedMergeTree ведёт себя так же, как mutations_sync = 2.

mysql_datatypes_support_level

Определяет, как типы MySQL преобразуются в соответствующие типы ClickHouse. Значение задаётся в виде списка через запятую с любыми комбинациями decimal, datetime64, date2Date32 или date2String.

  • decimal: преобразовывать типы NUMERIC и DECIMAL в Decimal, если это позволяет точность.
  • datetime64: преобразовывать типы DATETIME и TIMESTAMP в DateTime64 вместо DateTime, если точность не равна 0.
  • date2Date32: преобразовывать DATE в Date32 вместо Date. Имеет приоритет над date2String.
  • date2String: преобразовывать DATE в String вместо Date. Переопределяется параметром datetime64.

mysql_map_fixed_string_to_text_in_show_columns

При включённой настройке тип данных ClickHouse FixedString будет отображаться как TEXT в SHOW COLUMNS.

Влияет только на подключения по MySQL wire protocol.

  • 0 — использовать BLOB.
  • 1 — использовать TEXT.

mysql_map_string_to_text_in_show_columns

Если параметр включён, тип данных ClickHouse String будет отображаться как TEXT в SHOW COLUMNS.

Параметр влияет только при подключении через протокол MySQL (wire protocol).

  • 0 - использовать BLOB.
  • 1 - использовать TEXT.

mysql_max_rows_to_insert

Максимальное число строк при пакетной вставке в движке таблиц MySQL

network_compression_method

Кодек для сжатия обмена данными между клиентом и сервером, а также между серверами.

Возможные значения:

  • NONE — без сжатия.
  • LZ4 — использовать кодек LZ4.
  • LZ4HC — использовать кодек LZ4HC.
  • ZSTD — использовать кодек ZSTD.

См. также

network_zstd_compression_level

Регулирует уровень сжатия ZSTD. Используется только, когда network_compression_method имеет значение ZSTD.

Возможные значения:

  • Положительное целое число от 1 до 15.

normalize_function_names

Приводить имена функций к их каноническому виду

number_of_mutations_to_delay

Если изменяемая таблица содержит как минимум то количество незавершённых мутаций, мутации таблицы искусственно замедляются. 0 — отключено.

number_of_mutations_to_throw

Если изменяемая таблица содержит не менее указанного количества незавершённых мутаций, генерируется исключение 'Too many mutations ...'. 0 — отключено

odbc_bridge_connection_pool_size

Размер пула соединений для каждой строки параметров подключения в мосте ODBC.

odbc_bridge_use_connection_pooling

Использовать пул подключений в ODBC bridge. Если значение установлено в false, новое подключение создаётся при каждом обращении.

offset

Задает количество строк, которые нужно пропустить перед началом возврата строк из запроса. Корректирует смещение, заданное клаузой OFFSET, таким образом, что эти два значения суммируются.

Возможные значения:

  • 0 — строки не пропускаются.
  • Положительное целое число.

Пример

Входная таблица:

CREATE TABLE test (i UInt64) ENGINE = MergeTree() ORDER BY i;
INSERT INTO test SELECT number FROM numbers(500);

Запрос:

SET limit = 5;
SET offset = 7;
SELECT * FROM test LIMIT 10 OFFSET 100;

Результат:

┌───i─┐
│ 107 │
│ 108 │
│ 109 │
└─────┘

opentelemetry_start_trace_probability

Задаёт вероятность того, что ClickHouse начнёт трассировку выполняемых запросов (если не передан родительский контекст трассировки).

Возможные значения:

  • 0 — трассировка для всех выполняемых запросов отключена (если не передан родительский контекст трассировки).
  • Положительное число с плавающей запятой в диапазоне [0..1]. Например, если значение настройки равно 0,5, ClickHouse будет запускать трассу в среднем для половины запросов.
  • 1 — трассировка для всех выполняемых запросов включена.

opentelemetry_trace_cpu_scheduling

Собирать спаны OpenTelemetry для вытесняющего планирования CPU рабочих нагрузок.

opentelemetry_trace_processors

Собирать спаны OpenTelemetry для процессоров.

optimize_aggregation_in_order

Включает оптимизацию GROUP BY в запросах SELECT для агрегации данных в соответствующем порядке сортировки в таблицах MergeTree.

Возможные значения:

  • 0 — оптимизация GROUP BY отключена.
  • 1 — оптимизация GROUP BY включена.

См. также

optimize_aggregators_of_group_by_keys

Устраняет использование агрегирующих функций min/max/any/anyLast для ключей GROUP BY в секции SELECT.

optimize_and_compare_chain

Дополняет цепочки AND константными сравнениями, чтобы повысить эффективность фильтрации. Поддерживает операторы <, <=, >, >=, = и их комбинации. Например, выражение (a < b) AND (b < c) AND (c < 5) будет преобразовано в (a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5).

optimize_append_index

Используйте constraints для добавления условия индекса. Значение по умолчанию — false.

Возможные значения:

  • true, false

optimize_arithmetic_operations_in_aggregate_functions

Переносить арифметические операции за пределы агрегатных функций

optimize_const_name_size

Заменять на скаляр и использовать хэш в качестве имени для больших констант (размер оценивается по длине имени).

Возможные значения:

  • положительное целое число — максимальная длина имени,
  • 0 — всегда,
  • отрицательное целое число — никогда.

optimize_count_from_files

Включает или отключает оптимизацию подсчёта числа строк из файлов в различных входных форматах. Применяется к табличным функциям и движкам file/s3/url/hdfs/azureBlobStorage.

Возможные значения:

  • 0 — оптимизация отключена.
  • 1 — оптимизация включена.

optimize_distinct_in_order

Включает оптимизацию DISTINCT, если некоторые столбцы в DISTINCT образуют префикс сортировки. Например, префикс ключа сортировки в MergeTree или выражения ORDER BY.

optimize_distributed_group_by_sharding_key

Оптимизирует запросы GROUP BY sharding_key, избегая затратной агрегации на сервере-инициаторе (что снижает потребление памяти этим запросом на сервере-инициаторе).

Поддерживаются следующие типы запросов (и любые их комбинации):

  • 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

Следующие типы запросов не поддерживаются (поддержка некоторых из них может быть добавлена позднее):

  • 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

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

См. также:

Примечание

В настоящее время для работы требуется optimize_skip_unused_shards (причина в том, что в будущем эта настройка может быть включена по умолчанию, и она будет работать корректно только в случае, если данные были вставлены через distributed таблицу, то есть распределены в соответствии с sharding_key).

optimize_empty_string_comparisons

Преобразует выражения вида col = '' или '' = col в empty(col), а col != '' или '' != col — в notEmpty(col), только если col имеет тип данных String или FixedString.

optimize_extract_common_expressions

Позволяет выносить общие подвыражения из дизъюнкций в выражениях WHERE, PREWHERE, ON, HAVING и QUALIFY. Логическое выражение вида (A AND B) OR (A AND C) может быть переписано как A AND (B OR C), что может помочь задействовать:

  • индексы в простых фильтрующих выражениях
  • оптимизацию преобразования CROSS JOIN в INNER JOIN

optimize_functions_to_subcolumns

Включает или отключает оптимизацию, при которой некоторые функции заменяются чтением подстолбцов. Это уменьшает объём считываемых данных.

Следующие функции могут быть преобразованы:

Возможные значения:

  • 0 — оптимизация отключена.
  • 1 — оптимизация включена.

optimize_group_by_constant_keys

Оптимизировать GROUP BY, когда все ключи в блоке являются константами

optimize_group_by_function_keys

Исключает функции от других ключей в секции GROUP BY

optimize_if_chain_to_multiif

Заменяет цепочки if(cond1, then1, if(cond2, ...)) на multiIf. На данный момент это не даёт преимуществ для числовых типов.

optimize_if_transform_strings_to_enum

Заменяет аргументы строкового типа в функциях if и transform на enum. По умолчанию отключен, так как может привести к несогласованным изменениям в распределённом запросе и его последующему сбою.

optimize_injective_functions_in_group_by

Заменяет инъективные функции на их аргументы в разделе GROUP BY

optimize_injective_functions_inside_uniq

Удаляет инъективные функции от одного аргумента внутри uniq*().

optimize_inverse_dictionary_lookup

Позволяет избежать повторных обратных поисков по словарю, выполняя более быстрый поиск в предварительно вычисленном наборе возможных значений ключей.

optimize_min_equality_disjunction_chain_length

Минимальная длина выражения expr = x1 OR ... expr = xN для оптимизации.

optimize_min_inequality_conjunction_chain_length

Минимальная длина выражения вида expr <> x1 AND ... expr <> xN для оптимизации

optimize_move_to_prewhere

Включает или отключает автоматическую оптимизацию PREWHERE в запросах SELECT.

Работает только для таблиц семейства *MergeTree.

Возможные значения:

  • 0 — автоматическая оптимизация PREWHERE отключена.
  • 1 — автоматическая оптимизация PREWHERE включена.

optimize_move_to_prewhere_if_final

Включает или отключает автоматическую оптимизацию PREWHERE в запросах SELECT с модификатором FINAL.

Работает только для таблиц семейства *MergeTree.

Возможные значения:

  • 0 — автоматическая оптимизация PREWHERE в запросах SELECT с модификатором FINAL отключена.
  • 1 — автоматическая оптимизация PREWHERE в запросах SELECT с модификатором FINAL включена.

См. также

optimize_multiif_to_if

Заменяет функцию multiIf с единственным условием на функцию if.

optimize_normalize_count_variants

Переписывать агрегатные функции, семантически эквивалентные count(), в count().

optimize_on_insert

Включает или отключает преобразование данных перед вставкой, как если бы к этому блоку был применён merge (в соответствии с движком таблицы).

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

Пример

Разница между включённым и отключённым значениями:

Запрос:

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;

Результат:

┌─FirstTable─┐
│          0 │
│          1 │
└────────────┘

┌─SecondTable─┐
│           0 │
│           0 │
│           0 │
│           1 │
│           1 │
└─────────────┘

Обратите внимание, что данный параметр влияет на поведение materialized view.

optimize_or_like_chain

Оптимизирует несколько условий OR LIKE в multiMatchAny. Эту оптимизацию не следует включать по умолчанию, поскольку в некоторых случаях она нарушает анализ индексов.

optimize_qbit_distance_function_reads

Заменяет функции расстояния для типа данных QBit на эквивалентные функции, которые считывают из хранилища только те столбцы, которые требуются для вычисления.

optimize_read_in_order

Включает оптимизацию ORDER BY в запросах SELECT для чтения данных из таблиц MergeTree.

Возможные значения:

  • 0 — оптимизация ORDER BY отключена.
  • 1 — оптимизация ORDER BY включена.

См. также

optimize_read_in_window_order

Включает оптимизацию ORDER BY в оконном предложении для чтения данных в соответствующем порядке сортировки в таблицах MergeTree.

optimize_redundant_functions_in_order_by

Удаляет функции из ORDER BY, если их аргумент также указан в ORDER BY

optimize_respect_aliases

Если установлено значение true, используются алиасы в WHERE/GROUP BY/ORDER BY, что улучшает отсечение партиций, использование вторичных индексов, а также работу optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count.

optimize_rewrite_aggregate_function_with_if

Переписывает агрегатные функции с выражением if в качестве аргумента, когда это логически эквивалентно. Например, avg(if(cond, col, null)) может быть переписано как avgOrNullIf(cond, col). Это может улучшить производительность.

Примечание

Поддерживается только при использовании анализатора (enable_analyzer = 1).

optimize_rewrite_array_exists_to_has

Переписывает вызовы функции arrayExists() на has(), когда это логически эквивалентно. Например, arrayExists(x -> x = 1, arr) может быть переписана как has(arr, 1).

optimize_rewrite_like_perfect_affix

Переписывает выражения LIKE с точным префиксом или суффиксом (например, col LIKE 'ClickHouse%') в вызовы функций startsWith или endsWith (например, startsWith(col, 'ClickHouse')).

optimize_rewrite_regexp_functions

Преобразует функции, связанные с регулярными выражениями, в более простые и эффективные варианты

optimize_rewrite_sum_if_to_count_if

Переписывать вызовы sumIf() и sum(if()) в countIf(), когда это логически эквивалентно

optimize_skip_merged_partitions

Включает или отключает оптимизацию для запроса OPTIMIZE TABLE ... FINAL, если есть только одна часть с уровнем > 0 и для неё не истёк TTL.

  • OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1

По умолчанию запрос OPTIMIZE TABLE ... FINAL перезаписывает эту часть, даже если в таблице есть только одна часть.

Возможные значения:

  • 1 — включить оптимизацию.
  • 0 — отключить оптимизацию.

optimize_skip_unused_shards

Включает или отключает пропуск неиспользуемых сегментов для запросов SELECT, которые содержат условие по ключу шардинга в WHERE/PREWHERE (при условии, что данные распределены по ключу шардинга; в противном случае запрос может вернуть некорректный результат).

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

optimize_skip_unused_shards_limit

Ограничение на количество значений ключа сегментирования; при достижении лимита optimize_skip_unused_shards отключается.

Слишком большое количество значений может потребовать значительных ресурсов на обработку, при этом выгода сомнительна: если в IN (...) указано огромное количество значений, то, скорее всего, запрос всё равно будет отправлен на все сегменты.

optimize_skip_unused_shards_nesting

Определяет поведение optimize_skip_unused_shards (и, следовательно, по‑прежнему требует включённого optimize_skip_unused_shards) в зависимости от уровня вложенности распределённого запроса (когда у вас есть таблица Distributed, обращающаяся к другой таблице Distributed).

Возможные значения:

  • 0 — Отключено, optimize_skip_unused_shards всегда работает.
  • 1 — Включает optimize_skip_unused_shards только для первого уровня.
  • 2 — Включает optimize_skip_unused_shards до второго уровня.

optimize_skip_unused_shards_rewrite_in

Переписывает оператор IN в запросах к удалённым сегментам, чтобы исключить значения, которые не принадлежат этому сегменту (требуется настройка optimize_skip_unused_shards).

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

optimize_sorting_by_input_stream_properties

Оптимизирует сортировку на основе свойств сортировки входного потока

optimize_substitute_columns

Используйте ограничения для подстановки столбцов. По умолчанию — false.

Возможные значения:

  • true, false

optimize_syntax_fuse_functions

Включает объединение агрегатных функций с одинаковым аргументом. Переписывает запрос, если он содержит как минимум две агрегатные функции sum, count или avg с одинаковым аргументом, в sumCount.

Возможные значения:

  • 0 — функции с одинаковым аргументом не объединяются.
  • 1 — функции с одинаковым аргументом объединяются.

Пример

Запрос:

CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSV;

Результат:

SELECT
    sum(a),
    sumCount(b).1,
    sumCount(b).2,
    (sumCount(b).1) / (sumCount(b).2)
FROM fuse_tbl

optimize_throw_if_noop

Включает или отключает выбрасывание исключения, если запрос OPTIMIZE не выполнил слияние.

По умолчанию OPTIMIZE завершается успешно, даже если он ничего не сделал. Этот параметр позволяет различать такие ситуации и получать причину в сообщении об исключении.

Возможные значения:

  • 1 — Выбрасывание исключения включено.
  • 0 — Выбрасывание исключения отключено.

optimize_time_filter_with_preimage

Оптимизация предикатов для типов Date и DateTime за счёт преобразования функций в эквивалентные сравнения без преобразований типов (например, toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')

optimize_trivial_approximate_count_query

Использовать приблизительное значение для тривиальной оптимизации операции COUNT в хранилищах, поддерживающих такую оценку, например EmbeddedRocksDB.

Возможные значения:

  • 0 — оптимизация отключена.
    • 1 — оптимизация включена.

optimize_trivial_count_query

Включает или отключает оптимизацию тривиального запроса SELECT count() FROM table с использованием метаданных движка MergeTree. Если вам необходимо использовать защиту на уровне строк (row-level security), отключите эту настройку.

Возможные значения:

  • 0 — Optimization disabled.
    • 1 — Optimization enabled.

См. также:

optimize_trivial_insert_select

Оптимизировать тривиальный запрос 'INSERT INTO table SELECT ... FROM TABLES'

optimize_uniq_to_count

Заменяет uniq и его варианты (кроме uniqUpTo) на count, если подзапрос содержит DISTINCT или оператор GROUP BY.

optimize_use_implicit_projections

Автоматически использовать неявные PROJECTION при выполнении запроса SELECT

optimize_use_projection_filtering

Включает использование проекций для фильтрации диапазонов частей, даже если проекции не выбраны для выполнения запроса SELECT.

optimize_use_projections

Псевдонимы: allow_experimental_projection_optimization

Включает или отключает оптимизацию проекций при обработке запросов SELECT.

Возможные значения:

  • 0 — оптимизация проекций отключена.
  • 1 — оптимизация проекций включена.

optimize_using_constraints

Используйте ограничения для оптимизации запросов. По умолчанию — false.

Возможные значения:

  • true, false

os_threads_nice_value_materialized_view

Значение nice в Linux для потоков materialized view. Чем ниже значение, тем выше приоритет использования CPU.

Требуется привилегия CAP_SYS_NICE, иначе параметр не оказывает эффекта.

Возможные значения: от -20 до 19.

os_threads_nice_value_query

Псевдонимы: os_thread_priority

Значение параметра nice в Linux для потоков обработки запросов. Чем ниже значение, тем выше приоритет на CPU.

Требуется привилегия CAP_SYS_NICE, в противном случае параметр не оказывает эффекта.

Возможные значения: от -20 до 19.

output_format_compression_level

Уровень сжатия по умолчанию, если выходные данные запроса сжимаются. Настройка применяется, когда запрос SELECT содержит INTO OUTFILE или при записи в табличные функции file, url, hdfs, s3 или azureBlobStorage.

Возможные значения: от 1 до 22

output_format_compression_zstd_window_log

Может использоваться, когда метод сжатия выходных данных — zstd. Если значение больше 0, этот параметр явно задаёт размер окна сжатия (степень числа 2) и включает режим long-range для сжатия zstd. Это может помочь достичь лучшего коэффициента сжатия.

Возможные значения: неотрицательные числа. Обратите внимание, что если значение слишком маленькое или слишком большое, zstdlib выбросит исключение. Типичные значения — от 20 (размер окна = 1 МБ) до 30 (размер окна = 1 ГБ).

output_format_parallel_formatting

Включает или отключает параллельное форматирование данных. Поддерживается только для форматов TSV, TSKV, CSV и JSONEachRow.

Возможные значения:

  • 1 — включено.
  • 0 — отключено.

page_cache_block_size

Размер фрагментов файлов, которые сохраняются в кэше страниц в пространстве пользователя, в байтах. Все чтения, которые проходят через кэш, будут округлены до кратного этому размеру.

Этот параметр может настраиваться на уровне отдельного запроса, но записи кэша с разными размерами блоков не могут повторно использоваться. Изменение этого параметра фактически делает существующие записи в кэше недействительными.

Большее значение, например 1 MiB, подходит для запросов с высокой пропускной способностью, а меньшее значение, например 64 KiB, — для точечных запросов с низкой задержкой.

page_cache_inject_eviction

Кэш страниц в пространстве пользователя иногда будет случайным образом сбрасывать отдельные страницы. Предназначено для тестирования.

page_cache_lookahead_blocks

При промахе в кэше страниц в пространстве пользователя за один раз считывается до такого количества последовательных блоков из базового хранилища, если их также нет в кэше. Размер каждого блока — page_cache_block_size байт.

Большее значение подходит для высокопроизводительных запросов с большим объёмом данных, тогда как низколатентные точечные запросы будут работать лучше без опережающего чтения.

parallel_distributed_insert_select

Включает параллельное распределённое выполнение запроса INSERT ... SELECT.

Если выполняются запросы вида INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b, и обе таблицы используют один и тот же кластер, и обе таблицы либо реплицируемые, либо нереплицируемые, то такой запрос обрабатывается локально на каждом сегменте.

Возможные значения:

  • 0 — Отключено.
  • 1SELECT будет выполняться на каждом сегменте из базовой таблицы движка Distributed.
  • 2SELECT и INSERT будут выполняться на каждом сегменте из/в базовую таблицу движка Distributed.

При использовании этого SETTING необходимо задать enable_parallel_replicas = 1.

parallel_hash_join_threshold

Когда используется хеш-алгоритм соединения, этот порог помогает выбрать между использованием hash и parallel_hash (только если доступна оценка размера правой таблицы). Вариант hash используется, когда известно, что размер правой таблицы ниже этого порога.

parallel_replica_offset

Beta feature. Learn more.

Это внутренний параметр настройки, который не должен использоваться напрямую и отражает детали реализации режима parallel replicas. Этот параметр будет автоматически установлен сервером-инициатором для распределённых запросов к индексу реплики, участвующей в обработке запроса среди параллельных реплик.

parallel_replicas_allow_in_with_subquery

Beta feature. Learn more.

Если значение равно true, подзапрос для IN будет выполняться на каждой ведомой реплике.

parallel_replicas_connect_timeout_ms

Beta feature. Learn more.

Тайм-аут в миллисекундах для подключения к удалённой реплике при выполнении запроса с параллельными репликами. Если тайм-аут истекает, соответствующая реплика не используется для выполнения запроса.

parallel_replicas_count

Beta feature. Learn more.

Это внутренний параметр, не предназначенный для прямого использования, и является деталью реализации режима «parallel replicas». Этот параметр будет автоматически установлен инициирующим сервером для распределённых запросов и задаёт количество параллельных реплик, участвующих в обработке запроса.

parallel_replicas_custom_key

Beta feature. Learn more.

Произвольное целочисленное выражение, которое можно использовать для разделения нагрузки между репликами для отдельной таблицы. Значение может быть любым целочисленным выражением.

Предпочтительны простые выражения на основе первичного ключа.

Если SETTING используется в кластере, состоящем из одного сегмента с несколькими репликами, эти реплики будут преобразованы в виртуальные сегменты. В противном случае оно будет вести себя так же, как ключ SAMPLE: будут использоваться несколько реплик каждого сегмента.

parallel_replicas_custom_key_range_lower

Beta feature. Learn more.

Позволяет фильтру типа range равномерно распределять работу между репликами на основе заданного пользователем диапазона [parallel_replicas_custom_key_range_lower, INT_MAX].

При совместном использовании с parallel_replicas_custom_key_range_upper позволяет фильтру равномерно распределять работу между репликами для диапазона [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper].

Примечание: эта настройка не приводит к дополнительной фильтрации данных в процессе обработки запроса, а только изменяет точки, в которых фильтр по диапазону разбивает диапазон [0, INT_MAX] для параллельной обработки.

parallel_replicas_custom_key_range_upper

Beta feature. Learn more.

Позволяет фильтру типа range равномерно распределять работу между репликами на основе пользовательского диапазона [0, parallel_replicas_custom_key_range_upper]. Значение 0 отключает верхнюю границу, устанавливая её равной максимальному значению выражения пользовательского ключа.

При совместном использовании с parallel_replicas_custom_key_range_lower позволяет фильтру равномерно распределять работу между репликами для диапазона [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper].

Примечание: эта настройка не приводит к дополнительной фильтрации данных в процессе обработки запроса, а лишь изменяет точки, в которых диапазонный фильтр разбивает диапазон [0, INT_MAX] для параллельной обработки.

parallel_replicas_for_cluster_engines

Заменяет движки табличных функций на их аналоги -Cluster

parallel_replicas_for_non_replicated_merge_tree

Beta feature. Learn more.

Если значение установлено в true, ClickHouse также будет использовать алгоритм параллельных реплик для нереплицируемых таблиц MergeTree.

parallel_replicas_index_analysis_only_on_coordinator

Beta feature. Learn more.

Анализ индексов выполняется только на реплике-координаторе и не выполняется на остальных репликах. Действует только при включённом parallel_replicas_local_pla

parallel_replicas_insert_select_local_pipeline

Beta feature. Learn more.

Использовать локальный конвейер при выполнении распределённой операции INSERT SELECT с параллельными репликами

parallel_replicas_local_plan

Beta feature. Learn more.

Строить локальный план для локальной реплики

parallel_replicas_mark_segment_size

Beta feature. Learn more.

Части виртуально делятся на сегменты для распределения между репликами при параллельном чтении. Этот параметр определяет размер этих сегментов. Не рекомендуется изменять его, пока вы не будете полностью уверены в своих действиях. Значение должно быть в диапазоне [128; 16384].

parallel_replicas_min_number_of_rows_per_replica

Beta feature. Learn more.

Ограничивает число реплик, используемых в запросе, значением (оцениваемое число строк для чтения / min_number_of_rows_per_replica). Максимальное число по-прежнему ограничено параметром max_parallel_replicas.

parallel_replicas_mode

Beta feature. Learn more.

Тип фильтра, используемого с пользовательским ключом для parallel replicas. default — использовать операцию взятия по модулю для пользовательского ключа; range — использовать фильтр по диапазону для пользовательского ключа, перебирая все возможные значения его типа.

parallel_replicas_only_with_analyzer

Beta feature. Learn more.

Чтобы использовать параллельные реплики, анализатор должен быть включён. При отключённом анализаторе выполнение запроса переходит к локальному, даже если включено параллельное чтение с реплик. Использование параллельных реплик без включённого анализатора не поддерживается.

parallel_replicas_prefer_local_join

Beta feature. Learn more.

Если установлено значение true, JOIN может быть выполнен с использованием алгоритма параллельных реплик, и все хранилища правой части JOIN являются *MergeTree, будет использован локальный JOIN вместо GLOBAL JOIN.

parallel_replicas_support_projection

Beta feature. Learn more.

Оптимизация проекций может применяться на параллельных репликах. Действует только при включённом parallel_replicas_local_plan и отключённом aggregation_in_order.

parallel_view_processing

Включает параллельную отправку данных в присоединённые представления вместо последовательной.

parallelize_output_from_storages

Включает параллельный вывод на шаге чтения из хранилища. При возможности позволяет распараллелить обработку запроса сразу после чтения из хранилища.

parsedatetime_e_requires_space_padding

Форматтер '%e' в функции 'parseDateTime' ожидает, что однозначные значения дня будут дополняться пробелом; например, ' 2' принимается, а '2' приводит к ошибке.

parsedatetime_parse_without_leading_zeros

Спецификаторы формата '%c', '%l' и '%k' в функции 'parseDateTime' обрабатывают месяцы и часы без ведущих нулей.

partial_merge_join_left_table_buffer_bytes

Если значение не равно 0, объединяет блоки левой таблицы в более крупные для левой стороны partial merge join. При этом используется до 2× указанного объёма памяти на каждый поток, выполняющий соединение.

partial_merge_join_rows_in_right_blocks

Ограничивает размер блоков данных правой части соединения в алгоритме частичного объединения методом слияния для запросов JOIN.

Сервер ClickHouse:

  1. Разбивает данные правой части соединения на блоки с количеством строк не более указанного значения.
  2. Индексирует каждый блок по его минимальным и максимальным значениям.
  3. Выгружает подготовленные блоки на диск, если это возможно.

Возможные значения:

  • Любое положительное целое число. Рекомендуемый диапазон значений: [1000, 100000].

partial_result_on_first_cancel

Позволяет запросу возвращать частичный результат после его отмены.

parts_to_delay_insert

Если целевая таблица содержит как минимум такое количество активных частей в одной партиции, операции вставки в таблицу искусственно замедляются.

parts_to_throw_insert

Если в одной партиции целевой таблицы число активных частей превышает это значение, будет выброшено исключение 'Too many parts ...'.

per_part_index_stats

Логирует статистику индекса по каждой части

poll_interval

Задерживать выполнение цикла ожидания запроса на сервере на указанное число секунд.

postgresql_connection_attempt_timeout

Таймаут в секундах для отдельной попытки подключения к конечной точке PostgreSQL. Значение передается как параметр connect_timeout URL подключения.

postgresql_connection_pool_auto_close_connection

Закрывать соединение перед возвратом его в пул.

postgresql_connection_pool_retries

Количество попыток повторного выполнения операций push/pop в пуле соединений PostgreSQL для движка таблицы и движка базы данных.

postgresql_connection_pool_size

Размер пула подключений для табличного движка PostgreSQL и движка базы данных PostgreSQL.

postgresql_connection_pool_wait_timeout

Таймаут операций push/pop в пуле подключений при пустом пуле для движков PostgreSQL (движка таблиц и движка баз данных). По умолчанию при пустом пуле операции будут блокироваться.

postgresql_fault_injection_probability

Примерная вероятность отказа выполнения внутренних (для репликации) запросов PostgreSQL. Допустимое значение — в интервале [0.0f, 1.0f].

prefer_column_name_to_alias

Включает или отключает использование исходных имен столбцов вместо псевдонимов в выражениях и предложениях запроса. Это особенно важно, когда псевдоним совпадает с именем столбца, см. раздел Псевдонимы выражений. Включите этот параметр, чтобы сделать правила синтаксиса псевдонимов в ClickHouse более совместимыми с большинством других движков баз данных.

Возможные значения:

  • 0 — имя столбца заменяется псевдонимом.
  • 1 — имя столбца не заменяется псевдонимом.

Пример

Разница между включенным и отключенным параметром:

Запрос:

SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);

Результат:

Получено исключение от сервера (версия 21.5.1):
Код: 184. DB::Exception: Получено от localhost:9000. DB::Exception: Агрегатная функция avg(number) обнаружена внутри другой агрегатной функции в запросе: При обработке avg(number) AS number.

Запрос:

SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);

Результат:

┌─number─┬─max(number)─┐
│    4.5 │           9 │
└────────┴─────────────┘

prefer_external_sort_block_bytes

Использовать максимально возможный размер блока для внешней сортировки, чтобы уменьшить использование памяти при слиянии.

prefer_global_in_and_join

Включает замену операторов IN/JOIN на GLOBAL IN/GLOBAL JOIN.

Возможные значения:

  • 0 — Отключено. Операторы IN/JOIN не заменяются на GLOBAL IN/GLOBAL JOIN.
  • 1 — Включено. Операторы IN/JOIN заменяются на GLOBAL IN/GLOBAL JOIN.

Использование

Хотя SET distributed_product_mode=global может изменить поведение запросов для distributed таблиц, он не подходит для локальных таблиц или таблиц из внешних ресурсов. В таких случаях используется настройка prefer_global_in_and_join.

Например, у нас есть узлы обработки запросов, которые содержат локальные таблицы, не предназначенные для распределения. Нам нужно распределять их данные на лету во время распределённой обработки с использованием ключевого слова GLOBALGLOBAL IN/GLOBAL JOIN.

Ещё один вариант использования prefer_global_in_and_join — доступ к таблицам, созданным внешними движками. Эта настройка помогает сократить число обращений к внешним источникам при соединении таких таблиц: только один вызов на каждый запрос.

См. также:

  • Distributed subqueries для получения дополнительной информации о том, как использовать GLOBAL IN/GLOBAL JOIN

prefer_localhost_replica

Включает или отключает приоритетное использование локальной реплики (localhost) при обработке распределённых запросов.

Возможные значения:

  • 1 — ClickHouse всегда отправляет запрос на локальную реплику, если она существует.
  • 0 — ClickHouse использует стратегию балансировки нагрузки, заданную настройкой load_balancing.
Примечание

Отключите эту настройку, если вы используете max_parallel_replicas без parallel_replicas_custom_key. Если задан parallel_replicas_custom_key, отключайте эту настройку только в том случае, если он используется в кластере с несколькими сегментами, содержащими несколько реплик. Если он используется в кластере с одним сегментом и несколькими репликами, отключение этой настройки приведёт к негативным последствиям.

prefer_warmed_unmerged_parts_seconds

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Если слитая часть младше указанного количества секунд и не была заранее прогрета (см. cache_populated_by_fetch), но все ее исходные части доступны и заранее прогреты, запросы SELECT будут читать данные из этих исходных частей вместо слитой. Применяется только для Replicated-/SharedMergeTree. Обратите внимание, что здесь проверяется только, была ли часть обработана CacheWarmer; если часть была загружена в кэш чем-то другим, она все равно будет считаться «холодной», пока до нее не дойдет CacheWarmer; если часть была прогрета, а затем вытеснена из кэша, она по-прежнему будет считаться «теплой».

preferred_block_size_bytes

Этот параметр регулирует размер блока данных для обработки запроса и является дополнительной, более тонкой настройкой по сравнению с более грубым параметром max_block_size. Если столбцы большие и при числе строк, равном max_block_size, размер блока, вероятнее всего, превышает заданное количество байт, его размер будет уменьшен для улучшения локальности кэша CPU.

preferred_max_column_in_block_size_bytes

Ограничение на максимально допустимый размер столбца в блоке при чтении. Помогает уменьшить количество промахов кэша. Значение должно быть близко к размеру кэша L2.

preferred_optimize_projection_name

Если задано непустое строковое значение, ClickHouse будет пытаться использовать указанную проекцию в запросе.

Возможные значения:

  • string: имя предпочитаемой проекции

prefetch_buffer_size

Максимальный размер буфера предварительного чтения из файловой системы.

Позволяет выводить глубоко вложенные имена типов в удобочитаемом формате с отступами в запросе DESCRIBE и в функции toTypeName().

Пример:

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)
)

priority

Приоритет запроса. 1 — наивысший, чем больше значение, тем ниже приоритет; 0 — приоритет не используется.

promql_database

Experimental feature. Learn more.

Указывает имя базы данных, используемой диалектом «promql». Пустая строка означает текущую базу данных.

promql_evaluation_time

Experimental feature. Learn more.

Псевдонимы: evaluation_time

Устанавливает время вычисления, используемое для диалекта PromQL. Значение auto означает текущее время.

promql_table

Experimental feature. Learn more.

Указывает имя таблицы TimeSeries, используемой диалектом promql.

push_external_roles_in_interserver_queries

Включает передачу пользовательских ролей с узла-инициатора на другие узлы при выполнении запроса.

query_cache_compress_entries

Сжимает записи в кэше запросов. Это уменьшает потребление памяти кэшем запросов за счёт более медленных операций вставки и чтения.

Возможные значения:

  • 0 — отключено
  • 1 — включено

query_cache_max_entries

Максимальное количество результатов запросов, которые текущий пользователь может хранить в кэше запросов. 0 означает отсутствие ограничений.

Возможные значения:

  • Целое неотрицательное число (>= 0).

query_cache_max_size_in_bytes

Максимальный объем памяти (в байтах), который текущий пользователь может выделить в кеше запросов. Значение 0 означает отсутствие ограничений.

Возможные значения:

  • Положительное целое число >= 0.

query_cache_min_query_duration

Минимальная длительность выполнения запроса в миллисекундах, при которой его результат сохраняется в кэше запросов.

Возможные значения:

  • Положительное целое число >= 0.

query_cache_min_query_runs

Минимальное количество запусков запроса SELECT до того, как его результат будет сохранён в кеше запросов.

Возможные значения:

  • Целое число >= 0.

query_cache_nondeterministic_function_handling

Определяет, как кэш запросов обрабатывает запросы SELECT с недетерминированными функциями, такими как rand() или now().

Возможные значения:

  • 'throw' — вызывать исключение и не кэшировать результат запроса.
  • 'save' — кэшировать результат запроса.
  • 'ignore' — не кэшировать результат запроса и не вызывать исключение.

query_cache_share_between_users

Если включено, результат запросов SELECT, кэшированных в query cache, может быть прочитан другими пользователями. По соображениям безопасности не рекомендуется включать эту настройку.

Возможные значения:

  • 0 - Отключено
  • 1 - Включено

query_cache_squash_partial_results

Объединяет блоки частичных результатов в блоки размера max_block_size. Уменьшает производительность вставок в кэш запросов, но улучшает сжимаемость элементов кэша (см. query_cache_compress-entries).

Возможные значения:

  • 0 — Отключено
  • 1 — Включено

query_cache_system_table_handling

Определяет, как кэш запросов обрабатывает запросы SELECT к системным таблицам, то есть таблицам в базах данных system.* и information_schema.*.

Возможные значения:

  • 'throw' — Выдавать исключение и не кэшировать результат запроса.
  • 'save' — Кэшировать результат запроса.
  • 'ignore' — Не кэшировать результат запроса и не выдавать исключение.

query_cache_tag

Строка, которая используется как метка для записей кэша запросов. Одинаковые запросы с разными тегами считаются различными для кэша запросов.

Возможные значения:

  • Любая строка

query_cache_ttl

По истечении указанного количества секунд записи в кэше запросов считаются устаревшими.

Возможные значения:

  • Положительное целое число >= 0.

query_condition_cache_store_conditions_as_plaintext

Сохраняет условие фильтра для кэша условий запроса в виде открытого текста. Если параметр включён, system.query_condition_cache показывает условие фильтра дословно, что упрощает отладку проблем с кэшем. По умолчанию параметр отключён, так как условия фильтра в открытом виде могут раскрывать конфиденциальную информацию.

Возможные значения:

  • 0 — Отключено
  • 1 — Включено

query_metric_log_interval

Интервал в миллисекундах, с которым собирается query_metric_log для отдельных запросов.

Если задано отрицательное значение, будет использоваться значение collect_interval_milliseconds из настройки query_metric_log, либо 1000 по умолчанию, если оно не задано.

Чтобы отключить сбор метрик для отдельного запроса, установите query_metric_log_interval в 0.

Значение по умолчанию: -1

query_plan_aggregation_in_order

Переключает оптимизацию агрегирования in-order на уровне плана запроса. Оказывает эффект только если настройка query_plan_enable_optimizations установлена в 1.

Примечание

Это экспертная настройка, которую следует использовать только для отладки разработчиками. В будущем она может быть изменена с нарушением обратной совместимости или удалена.

Возможные значения:

  • 0 - Отключено
  • 1 - Включено

query_plan_convert_any_join_to_semi_or_anti_join

Разрешает преобразовывать ANY JOIN в SEMI или ANTI JOIN, если фильтр после JOIN всегда принимает значение false для несопоставленных или сопоставленных строк

query_plan_convert_join_to_in

Позволяет преобразовывать JOIN в подзапрос с IN, если выходные столбцы зависят только от левой таблицы. Может приводить к неверным результатам для типов JOIN, отличных от ANY (например, ALL JOIN, который используется по умолчанию).

query_plan_convert_outer_join_to_inner_join

Разрешает преобразовывать OUTER JOIN в INNER JOIN, если фильтр после JOIN всегда отфильтровывает только значения по умолчанию

query_plan_direct_read_from_text_index

Позволяет выполнять фильтрацию результатов полнотекстового поиска, используя только инвертированный текстовый индекс в плане выполнения запроса.

query_plan_display_internal_aliases

Показывать внутренние псевдонимы (например, __table1) в выводе EXPLAIN PLAN вместо тех, что указаны в исходном запросе.

query_plan_enable_multithreading_after_window_functions

Включает многопоточность после вычисления оконных функций, позволяя выполнять параллельную обработку потоков

query_plan_enable_optimizations

Переключает оптимизацию запроса на уровне плана запроса.

Примечание

Это настройка экспертного уровня, которую следует использовать только для отладки разработчиками. В будущем эта настройка может измениться несовместимым с предыдущими версиями образом или быть удалена.

Возможные значения:

  • 0 - Отключить все оптимизации на уровне плана запроса
  • 1 - Включить оптимизации на уровне плана запроса (но отдельные оптимизации всё ещё могут быть отключены через соответствующие параметры)

query_plan_execute_functions_after_sorting

Включает оптимизацию на уровне плана запроса, которая переносит вычисление выражений на этапы после сортировки. Применяется только если параметр query_plan_enable_optimizations установлен в значение 1.

Примечание

Это параметр для экспертов, который должен использоваться только для отладки разработчиками. В будущем его поведение может измениться с нарушением обратной совместимости или он может быть удалён.

Возможные значения:

  • 0 - Отключить
  • 1 - Включить

query_plan_filter_push_down

Включает оптимизацию на уровне плана запроса, которая переносит фильтры ниже по плану выполнения. Начинает действовать только если настройка query_plan_enable_optimizations имеет значение 1.

Примечание

Это параметр для экспертов, который разработчикам следует использовать только для отладки. В будущем он может быть изменён несовместимым образом или удалён.

Возможные значения:

  • 0 — Отключить
  • 1 — Включить

query_plan_join_shard_by_pk_ranges

Применять разбиение на сегменты при выполнении JOIN, если ключи соединения содержат префикс PRIMARY KEY для обеих таблиц. Поддерживается для алгоритмов hash, parallel_hash и full_sorting_merge. Обычно не ускоряет запросы, но может снизить потребление памяти.

query_plan_join_swap_table

Определяет, какая сторона соединения должна быть таблицей построения (также называемой внутренней, то есть той, которая вставляется в хеш-таблицу при хеш-соединении) в плане выполнения запроса. Эта настройка поддерживается только для строгости соединения ALL с использованием предложения JOIN ON. Возможные значения:

  • 'auto': планировщик сам выбирает таблицу, которую использовать в качестве таблицы построения.
    • 'false': никогда не менять таблицы местами (таблица построения — правая таблица).
    • 'true': всегда менять таблицы местами (таблица построения — левая таблица).

query_plan_lift_up_array_join

Переключает оптимизацию на уровне плана запроса, которая поднимает операции ARRAY JOIN вверх по плану выполнения. Применяется только если настройка query_plan_enable_optimizations установлена в 1.

Примечание

Это настройка экспертного уровня, которая должна использоваться только для отладки разработчиками. В будущем настройка может быть изменена с нарушением обратной совместимости или удалена.

Возможные значения:

  • 0 - Отключить
  • 1 - Включить

query_plan_lift_up_union

Переключает оптимизацию на уровне плана запроса, которая перемещает более крупные поддеревья плана запроса в UNION, чтобы позволить дальнейшие оптимизации. Действует только в том случае, если параметр query_plan_enable_optimizations равен 1.

Примечание

Это настройка для экспертов, которая должна использоваться только разработчиками для отладки. В будущем настройка может измениться с нарушением обратной совместимости или быть удалена.

Возможные значения:

  • 0 — Отключить
  • 1 — Включить

query_plan_max_limit_for_lazy_materialization

Задает максимальное значение лимита, при котором может использоваться план запроса для оптимизации ленивой материализации. Если значение равно нулю, лимит отсутствует.

query_plan_max_optimizations_to_apply

Ограничивает общее количество оптимизаций, применяемых к плану выполнения запроса, см. настройку query_plan_enable_optimizations. Полезна для предотвращения слишком долгой оптимизации сложных запросов. В запросе EXPLAIN PLAN оптимизации перестают применяться после достижения этого лимита, и возвращается план как есть. При обычном выполнении запроса, если фактическое число оптимизаций превышает это значение, генерируется исключение.

Примечание

Это настройка для экспертов, которую следует использовать только для отладки разработчиками. В будущем настройка может измениться несовместимым образом или быть удалена.

query_plan_max_step_description_length

Максимальная длина описания шага в EXPLAIN PLAN.

query_plan_merge_expressions

Включает или отключает оптимизацию на уровне плана запроса, которая объединяет последовательные фильтры. Применяется только в том случае, если параметр query_plan_enable_optimizations имеет значение 1.

Примечание

Это параметр для экспертов, который должен использоваться только для отладки разработчиками. В будущем он может быть изменён с нарушением обратной совместимости или удалён.

Возможные значения:

  • 0 — Отключить
  • 1 — Включить

query_plan_merge_filter_into_join_condition

Позволяет объединять фильтр с условием JOIN и преобразовывать CROSS JOIN в INNER JOIN.

query_plan_merge_filters

Разрешить объединение фильтров в плане запроса.

query_plan_optimize_join_order_limit

Оптимизирует порядок операций JOIN в рамках одного подзапроса. В настоящее время поддерживается только для очень ограниченных случаев. Значение задаёт максимальное количество таблиц, для которых выполняется оптимизация.

query_plan_optimize_lazy_materialization

Использует план запроса для оптимизации ленивой материализации.

query_plan_optimize_prewhere

Разрешает проталкивать фильтр в выражение PREWHERE для поддерживаемых хранилищ

query_plan_push_down_limit

Включает оптимизацию на уровне плана запроса, которая проталкивает операторы LIMIT вниз по плану выполнения. Применяется только, если настройка query_plan_enable_optimizations установлена в 1.

Примечание

Это настройка для экспертов, предназначенная исключительно для использования разработчиками при отладке. В будущем она может измениться с нарушением обратной совместимости или быть удалена.

Возможные значения:

  • 0 — отключить
  • 1 — включить

query_plan_read_in_order

Включает или отключает оптимизацию чтения в исходном порядке на уровне плана запроса. Вступает в силу только если настройка query_plan_enable_optimizations равна 1.

Примечание

Это настройка для экспертов, которую разработчики должны использовать только для отладки. В будущем она может быть изменена с нарушением обратной совместимости или удалена.

Возможные значения:

  • 0 - Отключить
  • 1 - Включить

query_plan_remove_redundant_distinct

Переключает оптимизацию на уровне плана запроса, которая удаляет избыточные шаги DISTINCT. Вступает в силу только если настройка query_plan_enable_optimizations установлена в 1.

Примечание

Это настройка для экспертов, предназначенная только для отладки разработчиками. В будущем она может быть изменена несовместимым образом или удалена.

Возможные значения:

  • 0 - Отключить
  • 1 - Включить

query_plan_remove_redundant_sorting

Переключает оптимизацию на уровне плана запроса, которая удаляет избыточные шаги сортировки, например в подзапросах. Вступает в силу только если настройка query_plan_enable_optimizations равна 1.

Примечание

Это настройка для экспертов, которая должна использоваться только разработчиками для отладки. В будущем её поведение может измениться несовместимым образом или она может быть удалена.

Возможные значения:

  • 0 - Отключить
  • 1 - Включить

query_plan_remove_unused_columns

Переключает оптимизацию на уровне плана запроса, которая пытается удалить неиспользуемые столбцы (как входные, так и выходные) из шагов плана запроса. Оказывает эффект только если настройка query_plan_enable_optimizations равна 1.

Примечание

Это настройка уровня экспертов, которую разработчики должны использовать только для отладки. В будущем она может измениться без сохранения обратной совместимости или быть удалена.

Возможные значения:

  • 0 — Отключить
  • 1 — Включить

query_plan_reuse_storage_ordering_for_window_functions

Включает оптимизацию на уровне плана запроса, которая использует сортировку в хранилище при сортировке для оконных функций. Применяется только если настройка query_plan_enable_optimizations имеет значение 1.

Примечание

Это настройка для экспертов, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.

Возможные значения:

  • 0 - Отключить
  • 1 - Включить

query_plan_split_filter

Примечание

Это настройка экспертного уровня, которую следует использовать только разработчикам для отладки. В будущем она может измениться с нарушением обратной совместимости или быть удалена.

Включает оптимизацию на уровне плана запроса, которая разбивает фильтры на выражения. Оказывает эффект только если настройка query_plan_enable_optimizations установлена в 1.

Возможные значения:

  • 0 — Отключить
  • 1 — Включить

query_plan_text_index_add_hint

Разрешает добавлять подсказку (дополнительный предикат) к фильтрации на основе инвертированного текстового индекса в плане запроса.

Переключает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства. Вступает в силу только если значение настройки query_plan_enable_optimizations равно 1.

Примечание

Это параметр для экспертов, который должен использоваться только разработчиками для отладки. Параметр может измениться в будущем с нарушением обратной совместимости или быть удалён.

Возможные значения:

  • 0 — Отключить
  • 1 — Включить

query_plan_use_new_logical_join_step

Псевдонимы: query_plan_use_logical_join_step

Использует логический шаг JOIN в плане запроса.
Примечание: настройка query_plan_use_new_logical_join_step устарела, вместо неё используйте query_plan_use_logical_join_step.

query_profiler_cpu_time_period_ns

Устанавливает период тактового таймера CPU для профилировщика запросов. Этот таймер учитывает только процессорное время.

Возможные значения:

  • Положительное целое число наносекунд.

    Рекомендуемые значения:

    • 10000000 (100 раз в секунду) наносекунд и более для одиночных запросов.
    • 1000000000 (один раз в секунду) для профилирования на уровне всего кластера.
  • 0 для отключения таймера.

Временно отключено в ClickHouse Cloud.

См. также:

  • Системная таблица trace_log

query_profiler_real_time_period_ns

Устанавливает период таймера по реальному времени для query profiler. Таймер по реальному времени отсчитывает время по настенным часам (wall-clock time).

Возможные значения:

  • Положительное целое число в наносекундах.

    Рекомендуемые значения:

    • 10000000 (100 раз в секунду) наносекунд и меньше для одиночных запросов.
    • 1000000000 (раз в секунду) для профилирования всего кластера.
  • 0 для отключения таймера.

Временно недоступен в ClickHouse Cloud.

См. также:

  • Системная таблица trace_log

queue_max_wait_ms

Время ожидания в очереди запросов, если число одновременных запросов превышает максимально допустимое значение.

rabbitmq_max_wait_ms

Время ожидания при чтении из RabbitMQ перед повторной попыткой.

read_backoff_max_throughput

Настройка для уменьшения числа потоков при медленном чтении. События учитываются, когда пропускная способность чтения меньше указанного количества байт в секунду.

read_backoff_min_concurrency

Настройка, позволяющая стараться сохранять минимальное число потоков при медленном чтении.

read_backoff_min_events

Параметр для уменьшения числа потоков в случае медленного чтения. Количество событий, после достижения которого число потоков будет уменьшено.

read_backoff_min_interval_between_events_ms

Параметр для уменьшения числа потоков в случае медленного чтения. Событие игнорируется, если с момента предыдущего прошло меньше определённого промежутка времени.

read_backoff_min_latency_ms

Параметр для уменьшения числа потоков в случае медленного чтения. Учитываются только операции чтения, которые длятся не менее указанного времени.

read_from_distributed_cache_if_exists_otherwise_bypass_cache

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Аналогично read_from_filesystem_cache_if_exists_otherwise_bypass_cache, но для распределённого кэша.

read_from_filesystem_cache_if_exists_otherwise_bypass_cache

Разрешает использовать файловый кэш в пассивном режиме — использовать уже существующие записи в кэше, но не добавлять новые. Если включать этот параметр для тяжёлых ad‑hoc‑запросов и оставлять его выключенным для коротких запросов реального времени, это позволяет избежать трешинга кэша из‑за слишком тяжёлых запросов и повысить общую эффективность системы.

read_from_page_cache_if_exists_otherwise_bypass_cache

Использовать кэш страниц в пространстве пользователя в пассивном режиме, аналогично read_from_filesystem_cache_if_exists_otherwise_bypass_cache.

read_in_order_two_level_merge_threshold

Минимальное число частей, которые нужно прочитать, чтобы выполнить предварительный шаг слияния при многопоточном чтении в порядке первичного ключа.

read_in_order_use_buffering

Использовать буферизацию перед слиянием при чтении в порядке первичного ключа. Это повышает параллелизм выполнения запросов.

read_in_order_use_virtual_row

Использовать виртуальную строку при чтении в порядке первичного ключа или его монотонной функции. Полезно при поиске по нескольким частям, так как затрагиваются только нужные части.

read_overflow_mode

Что делать при превышении предела.

read_overflow_mode_leaf

Определяет, что происходит, когда объём считываемых данных превышает один из лимитов на уровне листового узла.

Возможные значения:

  • throw: сгенерировать исключение (по умолчанию).
  • break: прекратить выполнение запроса и вернуть частичный результат.

read_priority

Приоритет чтения данных из локальной или удалённой файловой системы. Поддерживается только в методе 'pread_threadpool' для локальной файловой системы и в методе threadpool для удалённой файловой системы.

read_through_distributed_cache

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Разрешает чтение из распределённого кэша

readonly

0 — без ограничений (чтение и запись разрешены). 1 — только запросы на чтение, а также изменение явно разрешённых настроек. 2 — только запросы на чтение, а также изменение настроек, за исключением настройки 'readonly'.

receive_data_timeout_ms

Таймаут ожидания получения первого пакета данных или пакета с положительным значением прогресса от реплики

receive_timeout

Тайм-аут получения данных из сети, в секундах. Если за этот интервал не было получено ни одного байта, генерируется исключение. Если вы задаёте этот параметр на клиенте, то send_timeout для сокета также будет установлен на серверной стороне соединения.

regexp_max_matches_per_row

Задает максимальное количество совпадений одного регулярного выражения для одной строки. Используйте этот параметр для защиты от чрезмерного расхода памяти при использовании жадных регулярных выражений в функции extractAllGroupsHorizontal.

Возможные значения:

  • Положительное целое число.

reject_expensive_hyperscan_regexps

Отклонять шаблоны, вычисление которых с использованием hyperscan, вероятнее всего, будет слишком ресурсоёмким (из‑за взрывного роста числа состояний NFA)

remerge_sort_lowered_memory_bytes_ratio

Если использование памяти после повторной сортировки не снизится как минимум в заданное число раз, повторная сортировка будет отключена.

remote_filesystem_read_method

Метод чтения данных из удалённой файловой системы, одно из следующих значений: read, threadpool.

remote_filesystem_read_prefetch

Использовать упреждающее чтение (prefetching) при чтении данных из удалённой файловой системы.

remote_fs_read_backoff_max_tries

Максимальное количество повторных попыток чтения с задержкой (backoff)

remote_fs_read_max_backoff_ms

Максимальное время ожидания при попытке прочитать данные с удалённого диска.

remote_read_min_bytes_for_seek

Минимальный объём данных в байтах, необходимый при удалённом чтении (url, S3), чтобы выполнять переход по смещению (seek), а не последовательное чтение с отбросом данных.

rename_files_after_processing

  • Тип: String

  • Значение по умолчанию: Пустая строка

Этот параметр позволяет указать шаблон переименования для файлов, обрабатываемых табличной функцией file. Если параметр задан, все файлы, прочитанные табличной функцией file, будут переименованы по указанному шаблону с плейсхолдерами, но только если обработка файлов завершилась успешно.

Подстановки

  • %a — Полное исходное имя файла (например, «sample.csv»).
  • %f — Исходное имя файла без расширения (например, «sample»).
  • %e — Исходное расширение файла с точкой (например, «.csv»).
  • %t — Метка времени (в микросекундах).
  • %% — Символ процента («%»).

Пример

  • Опция: --rename_files_after_processing="processed_%f_%t%e"

  • Запрос: SELECT * FROM file('sample.csv')

Если чтение файла sample.csv прошло успешно, файл будет переименован в processed_sample_1683473210851438.csv

replace_running_query

При использовании HTTP-интерфейса можно передать параметр query_id. Это произвольная строка, которая служит идентификатором запроса. Если в данный момент уже существует запрос от того же пользователя с тем же query_id, поведение зависит от параметра replace_running_query.

0 (по умолчанию) – выбрасывать исключение (не разрешать выполнение запроса, если запрос с тем же query_id уже выполняется).

1 – отменить старый запрос и начать выполнение нового.

Установите значение этого параметра равным 1 для реализации подсказок при задании условий сегментации. После ввода следующего символа, если старый запрос ещё не завершён, он должен быть отменён.

replace_running_query_max_wait_ms

Время ожидания завершения запроса с тем же query_id, когда включена настройка replace_running_query.

Возможные значения:

  • Положительное целое число.
  • 0 — генерируется исключение, которое не позволяет запустить новый запрос, если сервер уже выполняет запрос с тем же query_id.

replication_wait_for_inactive_replica_timeout

Определяет, сколько времени (в секундах) ждать выполнения неактивными репликами запросов ALTER, OPTIMIZE или TRUNCATE.

Возможные значения:

  • 0 — не ждать;
  • отрицательное целое число — ждать неограниченное время;
  • положительное целое число — количество секунд ожидания.

restore_replace_external_dictionary_source_to_null

Заменять источники внешних словарей на Null при восстановлении. Полезно для тестирования.

restore_replace_external_engines_to_null

Для тестирования. Заменяет все внешние движки на Null, чтобы не инициировать внешние подключения.

restore_replace_external_table_functions_to_null

В целях тестирования. Заменяет все внешние табличные функции на значение Null, чтобы не устанавливать внешние соединения.

restore_replicated_merge_tree_to_shared_merge_tree

Меняет движок таблицы с ReplicatedMergeTree на SharedMergeTree во время выполнения RESTORE.

result_overflow_mode

Значение по умолчанию в Cloud: throw

Определяет, что делать, если объем результата превышает один из лимитов.

Возможные значения:

  • throw: сгенерировать исключение (по умолчанию).
  • break: прекратить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.

Использование break аналогично использованию LIMIT. break прерывает выполнение только на уровне блока. Это означает, что количество возвращаемых строк будет больше, чем значение max_result_rows, кратно max_block_size и зависит от max_threads.

Пример

SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';

SELECT *
FROM numbers_mt(100000)
FORMAT Null;
6666 строк в наборе. ...

rewrite_count_distinct_if_with_count_distinct_implementation

Позволяет переписывать countDistcintIf с использованием настройки count_distinct_implementation.

Возможные значения:

  • true — Разрешить.
  • false — Запретить.

rewrite_in_to_join

Experimental feature. Learn more.

Преобразует выражения вида 'x IN subquery' в JOIN. Это может быть полезно для оптимизации всего запроса за счёт перестановки соединений (JOIN).

s3_allow_multipart_copy

Разрешает многокомпонентное копирование в S3.

s3_allow_parallel_part_upload

Использует несколько потоков для multipart-загрузки в S3. Это может привести к незначительному увеличению расхода памяти.

s3_check_objects_after_upload

Проверять каждый загруженный объект в S3 с помощью HEAD‑запроса, чтобы убедиться, что загрузка прошла успешно.

s3_connect_timeout_ms

Тайм-аут подключения к хосту для S3-дисков.

s3_create_new_file_on_insert

Включает или отключает создание нового файла при каждой вставке в таблицы движка s3. Если параметр включен, при каждой вставке будет создаваться новый объект S3 с ключом по шаблону, например:

data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz и т.д.

Возможные значения:

  • 0 — запрос INSERT создает новый файл или завершится с ошибкой, если файл уже существует и s3_truncate_on_insert не задан.
  • 1 — запрос INSERT создает новый файл при каждой вставке, используя суффикс (начиная со второго), если s3_truncate_on_insert не задан.

Подробнее см. здесь.

s3_disable_checksum

Не вычислять контрольную сумму при отправке файла в S3. Это ускоряет операции записи, так как нет необходимости выполнять лишние проходы обработки файла. В большинстве случаев это безопасно, поскольку данные таблиц MergeTree в любом случае снабжаются контрольными суммами на стороне ClickHouse, а при доступе к S3 по HTTPS уровень TLS уже обеспечивает целостность данных при передаче по сети. При этом дополнительные контрольные суммы на S3 дают дополнительный уровень защиты.

s3_ignore_file_doesnt_exist

Игнорировать отсутствие файла при чтении определённых ключей.

Возможные значения:

  • 1 — SELECT возвращает пустой результат.
  • 0 — SELECT генерирует исключение.

s3_list_object_keys_size

Максимальное количество файлов, которое может быть возвращено в одном ответе на запрос ListObject

s3_max_connections

Максимальное количество соединений для одного сервера.

s3_max_get_burst

Максимальное количество запросов, которые могут быть выполнены одновременно до достижения ограничения на число запросов в секунду. По умолчанию значение 0 соответствует s3_max_get_rps.

s3_max_get_rps

Порог числа S3 GET-запросов в секунду, после которого включается ограничение скорости. Ноль означает отсутствие ограничений.

s3_max_inflight_parts_for_one_file

Максимальное количество одновременно загружаемых частей в запросе multipart-загрузки. 0 означает отсутствие ограничений.

s3_max_part_number

Максимальный номер части при многочастичной загрузке в S3.

s3_max_put_burst

Максимальное количество запросов, которые могут быть выполнены одновременно до достижения предела запросов в секунду. По умолчанию значение 0 соответствует s3_max_put_rps.

s3_max_put_rps

Ограничение на скорость (RPS) запросов S3 PUT перед применением троттлинга. Ноль означает отсутствие ограничения.

s3_max_single_operation_copy_size

Максимальный размер для операции копирования за один вызов в S3. Этот SETTING используется только, если s3_allow_multipart_copy имеет значение true.

s3_max_single_part_upload_size

Максимальный размер объекта, загружаемого одной частью в S3.

s3_max_single_read_retries

Максимальное количество повторных попыток чтения из S3 за одну операцию.

s3_max_unexpected_write_error_retries

Максимальное количество повторных попыток в случае непредвиденных ошибок при записи в S3.

s3_max_upload_part_size

Максимальный размер части, загружаемой при многочастичной загрузке в S3.

s3_min_upload_part_size

Минимальный размер части при многочастичной загрузке в S3.

s3_request_timeout_ms

Таймаут простоя при отправке и получении данных в/из S3. Операция завершается с ошибкой, если отдельный вызов чтения или записи по TCP блокируется дольше этого значения.

s3_skip_empty_files

Включает или отключает пропуск пустых файлов в таблицах движка S3.

Возможные значения:

  • 0 — SELECT выбрасывает исключение, если пустой файл не соответствует запрошенному формату.
  • 1 — SELECT возвращает пустой результат для пустого файла.

s3_slow_all_threads_after_network_error

Если установлено значение true, все потоки, выполняющие запросы к S3 к одной и той же конечной точке резервного копирования, замедляются после того, как любой запрос к S3 сталкивается с повторяемой сетевой ошибкой, например тайм-аутом сокета. Если установлено значение false, каждый поток обрабатывает задержку повторных запросов к S3 (backoff) независимо от остальных.

s3_strict_upload_part_size

Точный размер части, отправляемой при multipart-загрузке в S3 (некоторые реализации не поддерживают части переменного размера).

s3_throw_on_zero_files_match

Выдавать ошибку, если запрос ListObjects не находит ни одного файла

s3_truncate_on_insert

Включает или отключает усечение (очистку) файлов перед вставками в таблицы с движком S3. При отключённой опции при попытке вставки будет сгенерировано исключение, если объект S3 уже существует.

Возможные значения:

  • 0 — запрос INSERT создаёт новый файл или завершается с ошибкой, если файл уже существует и s3_create_new_file_on_insert не установлен.
  • 1 — запрос INSERT заменяет существующее содержимое файла новыми данными.

Подробнее см. здесь.

s3_upload_part_size_multiply_factor

Умножайте s3_min_upload_part_size на этот коэффициент каждый раз, когда при одной операции записи в S3 было загружено s3_multiply_parts_count_threshold частей.

s3_upload_part_size_multiply_parts_count_threshold

Каждый раз, когда в S3 загружается указанное количество частей, значение s3_min_upload_part_size умножается на s3_upload_part_size_multiply_factor.

s3_use_adaptive_timeouts

Если установлено значение true, для всех запросов к S3 первые две попытки выполняются с уменьшенными таймаутами отправки и получения. Если установлено значение false, все попытки выполняются с одинаковыми таймаутами.

s3_validate_request_settings

Включает проверку настроек запросов к S3. Возможные значения:

  • 1 — проверять настройки.
  • 0 — не проверять настройки.

s3queue_default_zookeeper_path

Префикс пути в ZooKeeper для движка S3Queue по умолчанию

s3queue_enable_logging_to_s3queue_log

Включает запись в system.s3queue_log. Значение может быть переопределено для отдельной таблицы с помощью настроек таблицы.

s3queue_keeper_fault_injection_probability

Вероятность инъекции отказов Keeper для S3Queue.

s3queue_migrate_old_metadata_to_buckets

Перенос старой структуры метаданных таблицы S3Queue на новую.

schema_inference_cache_require_modification_time_for_url

Использовать схему из кэша для URL-адресов с проверкой времени последней модификации (для URL-адресов с заголовком Last-Modified)

schema_inference_use_cache_for_azure

Использовать кэш при выводе схемы при использовании табличной функции azure

schema_inference_use_cache_for_file

Использовать кэш при определении схемы при использовании табличной функции file

schema_inference_use_cache_for_hdfs

Использовать кэш при определении схемы для табличной функции hdfs

schema_inference_use_cache_for_s3

Использовать кэш при определении схемы при использовании табличной функции S3

schema_inference_use_cache_for_url

Использовать кэш при определении схемы при использовании табличной функции url

secondary_indices_enable_bulk_filtering

Включает алгоритм пакетной фильтрации для индексов. Предполагается, что он всегда работает лучше, но эта настройка сохранена для совместимости и контроля.

select_sequential_consistency

Примечание

Эта настройка отличается по поведению в SharedMergeTree и ReplicatedMergeTree. Дополнительную информацию о поведении select_sequential_consistency в SharedMergeTree см. в разделе SharedMergeTree consistency.

Включает или отключает последовательную согласованность для запросов SELECT. Требует, чтобы insert_quorum_parallel был отключён (по умолчанию он включён).

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

Использование

Когда последовательная согласованность включена, ClickHouse позволяет клиенту выполнять запрос SELECT только на тех репликах, которые содержат данные из всех предыдущих запросов INSERT, выполненных с insert_quorum. Если клиент обращается к реплике с неполными данными, ClickHouse выдаст исключение. Запрос SELECT не будет включать данные, которые ещё не были записаны в кворум реплик.

Когда insert_quorum_parallel включён (значение по умолчанию), select_sequential_consistency не работает. Это связано с тем, что параллельные запросы INSERT могут быть записаны в разные наборы реплик кворума, поэтому нет гарантии, что одна реплика получила все записи.

См. также:

send_logs_level

Отправлять текстовые логи сервера клиенту с указанным минимальным уровнем. Допустимые значения: 'trace', 'debug', 'information', 'warning', 'error', 'fatal', 'none'

send_logs_source_regexp

Отправлять текстовые серверные логи, имя источника которых соответствует указанному регулярному выражению. Пустое значение означает все источники.

send_profile_events

Включает или отключает отправку клиенту пакетов ProfileEvents.

Можно отключить, чтобы сократить сетевой трафик для клиентов, которым не требуются события профилирования.

Возможные значения:

  • 0 — отключено.
  • 1 — включено.

send_progress_in_http_headers

Включает или отключает HTTP-заголовки X-ClickHouse-Progress в ответах clickhouse-server.

Дополнительные сведения см. в описании HTTP-интерфейса.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

send_timeout

Тайм-аут отправки данных по сети в секундах. Если клиенту необходимо отправить данные, но в течение этого интервала не удаётся отправить ни одного байта, генерируется исключение. Если вы задаёте этот параметр на клиенте, то receive_timeout для сокета также будет установлен на соответствующей стороне соединения на сервере.

serialize_query_plan

Сериализовать план запроса для распределённой обработки

session_timezone

Beta feature. Learn more.

Устанавливает неявный часовой пояс для текущей сессии или запроса. Неявный часовой пояс — это часовой пояс, применяемый к значениям типа DateTime/DateTime64, для которых явно не указан часовой пояс. Настройка имеет приоритет над глобально сконфигурированным (на уровне сервера) неявным часовым поясом. Значение '' (пустая строка) означает, что неявный часовой пояс текущей сессии или запроса равен часовому поясу сервера.

Можно использовать функции timeZone() и serverTimeZone() для получения часового пояса сессии и часового пояса сервера.

Возможные значения:

  • Любое имя часового пояса из system.time_zones, например Europe/Berlin, UTC или Zulu

Примеры:

SELECT timeZone(), serverTimeZone() FORMAT CSV

"Europe/Berlin","Europe/Berlin"
SELECT timeZone(), serverTimeZone() SETTINGS session_timezone = 'Asia/Novosibirsk' FORMAT CSV

"Asia/Novosibirsk","Europe/Berlin"

Установите часовой пояс сеанса 'America/Denver' для внутреннего DateTime без явно указанного часового пояса:

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
Примечание

Не все функции, которые обрабатывают DateTime/DateTime64, учитывают session_timezone. Это может приводить к малозаметным ошибкам. См. следующий пример и пояснение.

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 строк в результате.

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 │
└─────────────────────┴──────────────────┘

Это происходит из-за различных конвейеров разбора:

  • toDateTime() без явного указания часового пояса, используемая в первом запросе SELECT, учитывает настройку session_timezone и глобальный часовой пояс.
  • Во втором запросе значение типа DateTime разбирается из значения типа String и наследует тип и часовой пояс существующего столбца d. Поэтому настройка session_timezone и глобальный часовой пояс не учитываются.

См. также

set_overflow_mode

Задает, что происходит, когда объем данных превышает один из лимитов.

Возможные значения:

  • throw: сгенерировать исключение (по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.

shared_merge_tree_sync_parts_on_partition_operations

Автоматически синхронизирует набор частей данных после операций с партициями MOVE|REPLACE|ATTACH в таблицах SMT. Только для Cloud

short_circuit_function_evaluation

Позволяет выполнять функции if, multiIf, and и or с использованием укороченного (short-circuit) вычисления. Это помогает оптимизировать выполнение сложных выражений в этих функциях и предотвращать возможные исключения (например, деление на ноль в ветке, которая фактически не должна вычисляться).

Возможные значения:

  • enable — Включает укороченное вычисление для функций, к которым оно применимо (которые могут выбрасывать исключения или являются вычислительно затратными).
  • force_enable — Включает укороченное вычисление для всех функций.
  • disable — Отключает укороченное вычисление функций.

short_circuit_function_evaluation_for_nulls

Оптимизирует вычисление функций, которые возвращают NULL, если любой из аргументов равен NULL. Если доля значений NULL в аргументах функции превышает short_circuit_function_evaluation_for_nulls_threshold, система пропускает построчное вычисление функции. Вместо этого она немедленно возвращает NULL для всех строк, избегая лишних вычислений.

short_circuit_function_evaluation_for_nulls_threshold

Пороговое значение доли значений NULL, при котором функции с аргументами типа Nullable выполняются только для строк, где все аргументы имеют значения, отличные от NULL. Применяется, когда включена настройка short_circuit_function_evaluation_for_nulls. Если отношение количества строк, содержащих значения NULL, к общему количеству строк превышает этот порог, строки, содержащие значения NULL, не будут участвовать в вычислении.

show_data_lake_catalogs_in_system_tables

Включает отображение каталогов озер данных в системных таблицах.

show_processlist_include_internal

Показывать внутренние служебные процессы в выводе запроса SHOW PROCESSLIST.

К внутренним процессам относятся перезагрузки словарей, перезагрузки refreshable materialized view, служебные SELECT-запросы, выполняемые в рамках SHOW ...-запросов, служебные CREATE DATABASE ...-запросы, выполняемые внутренне для обработки повреждённых таблиц, и другие.

show_table_uuid_in_table_create_query_if_not_nil

Определяет формат отображения результата запроса SHOW TABLE.

Возможные значения:

  • 0 — запрос отображается без UUID таблицы.
  • 1 — запрос отображается с UUID таблицы.

single_join_prefer_left_table

При одиночном JOIN в случае неоднозначности идентификаторов предпочитать левую таблицу

skip_redundant_aliases_in_udf

Избыточные псевдонимы не используются (подставляются) в определяемых пользователем функциях, чтобы упростить их использование.

Возможные значения:

  • 1 — Псевдонимы пропускаются (подставляются) в UDF.
  • 0 — Псевдонимы не пропускаются (подставляются) в UDF.

Пример

Разница между включённым и выключенным параметром:

Запрос:

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);

Результат:

SELECT ((4 + 2) + 1 AS y, y + 2)

Запрос:

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);

Результат:

SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2)

skip_unavailable_shards

Включает или отключает молчаливый пропуск недоступных сегментов.

Сегмент считается недоступным, если все его реплики недоступны. Реплика недоступна в следующих случаях:

  • ClickHouse не может подключиться к реплике по любой причине.

    При подключении к реплике ClickHouse выполняет несколько попыток. Если все эти попытки завершаются неудачно, реплика считается недоступной.

  • Имя реплики не удаётся разрешить через DNS.

    Если имя хоста реплики не может быть разрешено через DNS, это может указывать на следующие ситуации:

    • У хоста реплики нет DNS-записи. Это может происходить в системах с динамическим DNS, например, в Kubernetes, где узлы могут быть неразрешимыми во время простоя, и это не является ошибкой.

    • Ошибка конфигурации. Конфигурационный файл ClickHouse содержит некорректное имя хоста.

Возможные значения:

  • 1 — пропуск включён.

    Если сегмент недоступен, ClickHouse возвращает результат на основе неполных данных и не сообщает о проблемах с доступностью узла.

  • 0 — пропуск выключен.

    Если сегмент недоступен, ClickHouse генерирует исключение.

sleep_after_receiving_query_ms

Задержка после получения запроса в TCPHandler

sleep_in_send_data_ms

Время паузы при отправке данных в TCPHandler

sleep_in_send_tables_status_ms

Время паузы при отправке ответа о статусе таблиц в TCPHandler

sort_overflow_mode

Задает поведение при превышении одного из лимитов количеством строк, полученных до сортировки.

Возможные значения:

  • throw: выбросить исключение.
  • break: прекратить выполнение запроса и вернуть частичный результат.

split_intersecting_parts_ranges_into_layers_final

Разбивает пересекающиеся диапазоны частей на слои при оптимизации FINAL

split_parts_ranges_into_intersecting_and_non_intersecting_final

Разделяет диапазоны частей на пересекающиеся и непересекающиеся при оптимизации с использованием FINAL

splitby_max_substrings_includes_remaining_string

Определяет, будет ли функция splitBy*() с аргументом max_substrings > 0 включать оставшуюся часть строки в последний элемент результирующего массива.

Возможные значения:

  • 0 - Оставшаяся часть строки не включается в последний элемент результирующего массива.
  • 1 - Оставшаяся часть строки включается в последний элемент результирующего массива. Это соответствует поведению функции Spark split() и метода Python string.split().

stop_refreshable_materialized_views_on_startup

Experimental feature. Learn more.

При запуске сервера предотвращает планирование refreshable materialized views, как если бы была выполнена команда SYSTEM STOP VIEWS. Позже вы можете запустить их вручную с помощью SYSTEM START VIEWS или SYSTEM START VIEW <name>. Распространяется также на вновь создаваемые представления. Не влияет на non-refreshable materialized views.

storage_file_read_method

Метод чтения данных из файла хранилища; возможные значения: read, pread, mmap. Метод mmap не применяется к clickhouse-server (он предназначен для clickhouse-local).

storage_system_stack_trace_pipe_read_timeout_ms

Максимальное время чтения из канала для получения информации из потоков при выполнении запроса к таблице system.stack_trace. Этот параметр используется для целей тестирования и не предназначен для изменения пользователями.

stream_flush_interval_ms

Применяется к таблицам с потоковой записью в случае тайм-аута или когда поток выполнения генерирует max_insert_block_size строк.

Значение по умолчанию — 7500.

Чем меньше значение, тем чаще данные записываются в таблицу. Слишком маленькое значение приводит к снижению производительности.

stream_like_engine_allow_direct_select

Разрешает выполнение прямого запроса SELECT для движков Kafka, RabbitMQ, FileLog, Redis Streams и NATS. При наличии подключённых materialized views выполнение запроса SELECT запрещено, даже если этот параметр включён.

stream_like_engine_insert_queue

Когда движок stream-like читает из нескольких очередей, пользователю необходимо выбрать одну очередь для вставки при записи. Используется в Redis Streams и NATS.

stream_poll_timeout_ms

Таймаут опроса при чтении и записи данных в потоковые хранилища.

system_events_show_zero_values

Позволяет выбирать события с нулевыми значениями из system.events.

Некоторые системы мониторинга требуют передавать им все значения метрик для каждой контрольной точки, даже если значение метрики равно нулю.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

Примеры

Запрос

SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';

Результат

Ok.

Запрос

SET system_events_show_zero_values = 1;
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';

Результат

┌─event────────────────────┬─value─┬─description───────────────────────────────────────────┐
│ QueryMemoryLimitExceeded │     0 │ Количество превышений лимита памяти для запроса. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘

table_engine_read_through_distributed_cache

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Позволяет читать данные из распределённого кэша через движки таблиц и табличные функции (S3, Azure и т. д.).

table_function_remote_max_addresses

Устанавливает максимальное количество адресов, сгенерированных по шаблонам для функции remote.

Возможные значения:

  • Положительное целое число.

tcp_keep_alive_timeout

Время в секундах, в течение которого соединение должно оставаться в состоянии простоя, прежде чем TCP начнёт отправлять keepalive‑пакеты

temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds

Время ожидания получения блокировки кэша для резервирования места под временные данные в файловом кэше

temporary_files_buffer_size

Размер буфера для записи во временные файлы. Увеличение размера буфера приводит к меньшему количеству системных вызовов, но к большему потреблению памяти.

temporary_files_codec

Задает кодек сжатия для временных файлов, используемых при операциях сортировки и соединения на диске.

Возможные значения:

  • LZ4 — применяется сжатие LZ4.
  • NONE — сжатие не применяется.

text_index_hint_max_selectivity

Максимальная селективность фильтра для использования подсказки, сформированной по инвертированному текстовому индексу.

text_index_use_bloom_filter

Для целей тестирования включает или отключает использование блум-фильтра в текстовом индексе.

throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert

Генерирует исключение при выполнении запроса INSERT, когда настройка deduplicate_blocks_in_dependent_materialized_views включена одновременно с async_insert. Это обеспечивает корректность, поскольку эти функции несовместимы.

throw_if_no_data_to_insert

Разрешает или запрещает пустые INSERT-запросы, по умолчанию параметр включен (выдает ошибку при попытке пустого INSERT). Применяется только к INSERT-запросам, выполняемым через clickhouse-client или gRPC-интерфейс.

throw_on_error_from_cache_on_write_operations

Игнорировать ошибки кэша при кэшировании в операциях записи (INSERT, слияния)

throw_on_max_partitions_per_insert_block

Позволяет управлять тем, как система ведёт себя при достижении max_partitions_per_insert_block.

Возможные значения:

  • true - Когда вставляемый блок достигает max_partitions_per_insert_block, выбрасывается исключение.
  • false - При достижении max_partitions_per_insert_block записывается предупреждение в журнал.
Совет

Это может быть полезно, если вы пытаетесь оценить влияние на пользователей при изменении max_partitions_per_insert_block.

throw_on_unsupported_query_inside_transaction

Experimental feature. Learn more.

Выбрасывать исключение, если внутри транзакции используется неподдерживаемый запрос.

timeout_before_checking_execution_speed

Проверяет, что скорость выполнения не слишком низкая (не меньше min_execution_speed), по истечении указанного количества секунд.

timeout_overflow_mode

Определяет, что делать, если запрос выполняется дольше, чем max_execution_time, или оценочное время выполнения превышает max_estimated_execution_time.

Возможные значения:

  • throw: бросить исключение (значение по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные исчерпались.

timeout_overflow_mode_leaf

Определяет, что происходит, когда запрос на листовом узле выполняется дольше, чем max_execution_time_leaf.

Возможные значения:

  • throw: вызвать исключение (значение по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.

totals_auto_threshold

Пороговое значение для totals_mode = 'auto'. См. раздел «Модификатор WITH TOTALS».

totals_mode

Способ вычисления TOTALS при наличии HAVING, а также при использовании max_rows_to_group_by и group_by_overflow_mode = 'any'. См. раздел «Модификатор WITH TOTALS».

trace_profile_events

Включает или отключает сбор стек-трейсов при каждом обновлении события профиля вместе с именем события профиля и значением инкремента, а также их отправку в trace_log.

Возможные значения:

  • 1 — трассировка событий профиля включена.
  • 0 — трассировка событий профиля отключена.

transfer_overflow_mode

Задаёт поведение при превышении одного из лимитов по объёму данных.

Возможные значения:

  • throw: выбрасывает исключение (значение по умолчанию).
  • break: останавливает выполнение запроса и возвращает частичный результат, как если бы исходные данные закончились.

transform_null_in

Включает трактовку значений NULL как равных для оператора IN.

По умолчанию значения NULL невозможно сравнивать, потому что NULL означает неопределённое значение. Поэтому сравнение expr = NULL всегда должно возвращать false. При включении этого параметра выражение NULL = NULL для оператора IN возвращает true.

Возможные значения:

  • 0 — Сравнение значений NULL в операторе IN возвращает false.
  • 1 — Сравнение значений NULL в операторе IN возвращает true.

Пример

Рассмотрим таблицу null_in:

┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
│    3 │     3 │
└──────┴───────┘

Запрос:

SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;

Результат:

┌──idx─┬────i─┐
│    1 │    1 │
└──────┴──────┘

Запрос:

SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;

Результат:

┌──idx─┬─────i─┐
│    1 │     1 │
│    2 │  NULL │
└──────┴───────┘

См. также

traverse_shadow_remote_data_paths

Обходить замороженные данные (теневой каталог) в дополнение к основным данным таблиц при выполнении запросов к таблице system.remote_data_paths

union_default_mode

Устанавливает режим объединения результатов запроса SELECT. Настройка используется только при использовании с UNION без явного указания UNION ALL или UNION DISTINCT.

Возможные значения:

  • 'DISTINCT' — ClickHouse выводит строки как результат объединения запросов, удаляя дубликаты строк.
  • 'ALL' — ClickHouse выводит все строки как результат объединения запросов, включая дубликаты строк.
  • '' — ClickHouse генерирует исключение при использовании с UNION.

См. примеры в UNION.

unknown_packet_in_send_data

Отправлять неизвестный пакет вместо N-го пакета данных

update_parallel_mode

Определяет поведение одновременных запросов UPDATE.

Возможные значения:

  • sync - выполнять все запросы UPDATE последовательно.
  • auto - выполнять последовательно только те запросы UPDATE, между которыми есть зависимости между столбцами, изменяемыми в одном запросе, и столбцами, используемыми в выражениях другого запроса.
  • async - не синхронизировать запросы UPDATE.

update_sequential_consistency

Если установлено значение true, набор частей обновляется до последней версии перед выполнением обновления.

use_async_executor_for_materialized_views

Включает асинхронное и потенциально многопоточное выполнение запроса materialized view, что может ускорить обработку представлений при INSERT, но также приводит к большему расходу памяти.

use_cache_for_count_from_files

Включает кэширование количества строк при подсчёте по файлам с помощью табличных функций file/s3/url/hdfs/azureBlobStorage.

Включено по умолчанию.

use_client_time_zone

Использовать часовой пояс клиента при интерпретации строковых значений типа DateTime вместо часового пояса сервера.

use_compact_format_in_distributed_parts_names

Использует компактный формат для хранения блоков при фоновых (distributed_foreground_insert) операциях INSERT в таблицы с движком Distributed.

Возможные значения:

  • 0 — Используется формат каталога user[:password]@host:port#default_database.
  • 1 — Используется формат каталога [shard{shard_index}[_replica{replica_index}]].
Примечание
  • при use_compact_format_in_distributed_parts_names=0 изменения из определения кластера не будут применяться для фоновых операций INSERT.
  • при use_compact_format_in_distributed_parts_names=1 изменение порядка узлов в определении кластера изменит значения shard_index/replica_index, имейте это в виду.

use_concurrency_control

Учитывать контроль параллелизма на сервере (см. глобальные серверные настройки concurrent_threads_soft_limit_num и concurrent_threads_soft_limit_ratio_to_cores). При отключении параметра можно использовать большее число потоков, даже если сервер перегружен (не рекомендуется для обычного использования и в основном требуется для тестов).

use_hedged_requests

Включает логику hedged-запросов для удалённых запросов. Позволяет устанавливать несколько подключений к разным репликам для одного запроса. Новое подключение создаётся, если существующие подключения к репликам не были установлены в течение hedged_connection_timeout или данные не были получены в течение receive_data_timeout. Запрос использует первое подключение, которое отправит непустой пакет прогресса (или пакет данных, если включено allow_changing_replica_until_first_data_packet); остальные подключения отменяются. Поддерживаются запросы с max_parallel_replicas > 1.

Включено по умолчанию.

Значение по умолчанию в Cloud: 1

use_hive_partitioning

При включённой настройке ClickHouse будет распознавать Hive‑стиль партиционирования в пути (/name=value/) в табличных движках файлового типа File/S3/URL/HDFS/AzureBlobStorage и позволит использовать партиционные столбцы как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути партиций, но с префиксом _.

use_iceberg_metadata_files_cache

Если параметр включён, табличная функция iceberg и хранилище iceberg могут использовать кэш файлов метаданных iceberg.

Возможные значения:

  • 0 - Отключено
  • 1 - Включено

use_iceberg_partition_pruning

Использует отсечение партиций Iceberg для таблиц Iceberg

use_index_for_in_with_subqueries

Попробуйте использовать индекс, если справа от оператора IN находится подзапрос или табличное выражение.

use_index_for_in_with_subqueries_max_values

Максимальный размер множества в правой части оператора IN, при котором для фильтрации может использоваться индекс таблицы. Это позволяет избежать деградации производительности и повышенного расхода памяти из‑за подготовки дополнительных структур данных для больших запросов. Ноль означает отсутствие ограничения.

use_join_disjunctions_push_down

Включает проталкивание (pushdown) частей условий JOIN, соединённых оператором OR, на соответствующие входы («частичный pushdown»). Это позволяет движкам хранилища выполнять фильтрацию раньше, что может уменьшить объём считываемых данных. Оптимизация сохраняет семантику запроса и применяется только тогда, когда каждая ветвь верхнего уровня по OR вносит по крайней мере один детерминированный предикат для целевой стороны.

use_legacy_to_time

Если параметр включён, позволяет использовать устаревшую функцию toTime, которая преобразует дату со временем в определённую фиксированную дату, сохраняя время. В противном случае используется новая функция toTime, которая преобразует различные типы данных в тип Time. Старая функция также всегда доступна как toTimeWithFixedDate.

use_page_cache_for_disks_without_file_cache

Использует userspace-кэш страниц для удалённых дисков, для которых не включён кэш файловой системы.

use_page_cache_with_distributed_cache

Использовать кэш страниц в пространстве пользователя при работе с распределённым кэшем.

use_paimon_partition_pruning

Experimental feature. Learn more.

Включает использование отсечения партиций Paimon для табличных функций Paimon

use_query_cache

Если включено, SELECT-запросы могут использовать кэш запросов. Параметры enable_reads_from_query_cache и enable_writes_to_query_cache более детально контролируют использование кэша.

Возможные значения:

  • 0 - Отключено
  • 1 - Включено

use_query_condition_cache

Включает кэш условий запроса. Кэш сохраняет диапазоны гранул в частях данных, которые не удовлетворяют условию в предложении WHERE, и повторно использует эту информацию как временный индекс для последующих запросов.

Возможные значения:

  • 0 — Отключено
  • 1 — Включено

use_roaring_bitmap_iceberg_positional_deletes

Использовать roaring bitmap для позиционных удалений в Iceberg.

use_skip_indexes

Использовать индексы пропуска данных при выполнении запросов.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

use_skip_indexes_for_disjunctions

Вычислять фильтры WHERE со смешанными условиями AND и OR с использованием пропускающих индексов. Пример: WHERE A = 5 AND (B = 5 OR C = 5). Если отключено, пропускающие индексы по-прежнему используются для вычисления условий WHERE, но они должны содержать только выражения, объединённые оператором AND.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

use_skip_indexes_if_final

Определяет, используются ли пропускающие индексы при выполнении запроса с модификатором FINAL.

Пропускающие индексы могут исключать строки (гранулы), содержащие самые свежие данные, что может привести к некорректным результатам запроса с модификатором FINAL. Когда этот параметр включён, пропускающие индексы применяются даже с модификатором FINAL, что потенциально улучшает производительность, но несёт риск пропуска недавних обновлений. Этот параметр следует включать согласованно с параметром use_skip_indexes_if_final_exact_mode (по умолчанию он включён).

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

use_skip_indexes_if_final_exact_mode

Определяет, нужно ли разворачивать гранулы, возвращаемые пропускающим индексом, в более новых частях для получения корректных результатов при выполнении запроса с модификатором FINAL.

Использование пропускающих индексов может исключать строки (гранулы), содержащие самые свежие данные, что может приводить к некорректным результатам. Эта настройка позволяет обеспечить корректные результаты за счёт сканирования более новых частей, пересекающихся с диапазонами, возвращёнными пропускающим индексом. Эту настройку следует отключать только в том случае, если для приложения допустимы приблизительные результаты, основанные на использовании пропускающего индекса.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

use_skip_indexes_on_data_read

Включает использование индексов пропуска данных при чтении данных.

Если настройка включена, индексы пропуска данных оцениваются динамически во время чтения каждой гранулы данных, а не анализируются заранее до начала выполнения запроса. Это может уменьшить задержку запуска запроса.

Возможные значения:

  • 0 — Отключено.
  • 1 — Включено.

use_statistics_cache

Experimental feature. Learn more.

Использовать кэш статистики в запросах, чтобы избежать накладных расходов на загрузку статистики для каждой части.

use_structure_from_insertion_table_in_table_functions

Использовать структуру таблицы, в которую выполняется вставка, вместо определения схемы на основе данных. Возможные значения: 0 - отключено, 1 - включено, 2 - авто

use_text_index_dictionary_cache

Определяет, использовать ли кэш десериализованного блока словаря текстового индекса. Использование кэша блока словаря текстового индекса может существенно снизить задержку и увеличить пропускную способность при обработке большого числа запросов по текстовому индексу.

use_text_index_header_cache

Определяет, использовать ли кэш десериализованного заголовка текстового индекса. Использование кэша заголовка текстового индекса может значительно уменьшить задержку и увеличить пропускную способность при выполнении большого количества запросов к текстовому индексу.

use_text_index_postings_cache

Определяет, использовать ли кэш десериализованных списков вхождений текстового индекса. Использование кэша списков вхождений текстового индекса может значительно снизить задержку и увеличить пропускную способность при выполнении большого числа запросов по текстовому индексу.

use_uncompressed_cache

Использовать ли кэш несжатых блоков. Принимает значения 0 или 1. По умолчанию — 0 (отключено). Использование кэша несжатых данных (только для таблиц семейства MergeTree) может существенно снизить задержку и увеличить пропускную способность при работе с большим количеством коротких запросов. Включите этот параметр для пользователей, которые отправляют частые короткие запросы. Также обратите внимание на параметр конфигурации uncompressed_cache_size (задаётся только в конфигурационном файле) — размер блоков кэша несжатых данных. По умолчанию он равен 8 ГиБ. Кэш несжатых данных заполняется по мере необходимости, а наименее востребованные данные автоматически удаляются.

Для запросов, которые читают хотя бы относительно большой объём данных (один миллион строк и более), кэш несжатых данных автоматически отключается, чтобы освободить место для действительно небольших запросов. Это означает, что вы можете всегда держать параметр use_uncompressed_cache равным 1.

use_variant_as_common_type

Разрешает использовать тип Variant как результирующий тип для функций if/multiIf/array/map при отсутствии общего типа для типов аргументов.

Пример:

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_with_fill_by_sorting_prefix

Столбцы, предшествующие столбцам WITH FILL в предложении ORDER BY, образуют префикс сортировки. Строки с разными значениями префикса сортировки заполняются независимо друг от друга

validate_enum_literals_in_operators

Если параметр включён, выполняется проверка литералов перечислений в операторах IN, NOT IN, ==, != на соответствие типу перечисления, и генерируется исключение, если литерал не является допустимым значением перечисления.

validate_mutation_query

Проверять запросы мутаций перед их принятием. Мутации выполняются в фоновом режиме, и запуск некорректного запроса приведёт к зависанию мутаций и необходимости ручного вмешательства.

Изменяйте этот параметр только при возникновении ошибки, нарушающей обратную совместимость.

validate_polygons

Включает или отключает выбрасывание исключения в функции pointInPolygon, если полигон самопересекается или имеет точки самокасания.

Возможные значения:

  • 0 — выбрасывание исключения отключено. pointInPolygon принимает некорректные полигоны и возвращает для них потенциально неверные результаты.
  • 1 — выбрасывание исключения включено.

vector_search_filter_strategy

Если запрос векторного поиска содержит предикат WHERE, этот параметр определяет, будет ли он вычисляться первым (предварительная фильтрация) ИЛИ сначала будет использоваться векторный индекс сходства (постфильтрация). Возможные значения:

  • 'auto' — постфильтрация (точная семантика может измениться в будущем).
  • 'postfilter' — использовать векторный индекс сходства для определения ближайших соседей, затем применять остальные фильтры.
  • 'prefilter' — сначала вычислять остальные фильтры, затем выполнять поиск полным перебором для определения соседей.

vector_search_index_fetch_multiplier

Псевдонимы: vector_search_postfilter_multiplier

Умножает число извлекаемых ближайших соседей из индекса векторного сходства на этот множитель. Применяется только при постфильтрации с другими предикатами или если установлена настройка 'vector_search_with_rescoring = 1'.

vector_search_with_rescoring

Определяет, выполняет ли ClickHouse повторную оценку результатов (rescoring) для запросов, использующих индекс векторного сходства. Без повторной оценки индекс векторного сходства напрямую возвращает строки с наилучшими совпадениями. При включённой повторной оценке результаты расширяются до уровня гранулы, и все строки в грануле проверяются повторно. В большинстве случаев повторная оценка лишь незначительно повышает точность, но при этом существенно ухудшает производительность запросов векторного поиска. Примечание: запрос, выполняемый без повторной оценки и с включёнными параллельными репликами, может в итоге выполняться с повторной оценкой.

wait_changes_become_visible_after_commit_mode

Experimental feature. Learn more.

Ожидать, пока зафиксированные изменения не станут действительно видимыми в последнем снепшоте

wait_for_async_insert

Если установлено значение true, ожидать завершения обработки асинхронной вставки.

wait_for_async_insert_timeout

Время ожидания обработки асинхронной вставки

wait_for_window_view_fire_signal_timeout

Experimental feature. Learn more.

Таймаут ожидания сигнала срабатывания window view при обработке по времени события

window_view_clean_interval

Experimental feature. Learn more.

Интервал очистки представления window view в секундах для удаления устаревших данных.

window_view_heartbeat_interval

Experimental feature. Learn more.

Интервал в секундах между сигналами, подтверждающими, что наблюдаемый запрос активен.

workload

Имя рабочей нагрузки, используемое для доступа к ресурсам

write_full_path_in_iceberg_metadata

Experimental feature. Learn more.

Записывает полные пути (включая s3://) в файлы метаданных Iceberg.

write_through_distributed_cache

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Разрешает выполнять запись в распределённый кэш (запись в S3 также будет выполняться через распределённый кэш).

write_through_distributed_cache_buffer_size

ClickHouse Cloud only

Действует только в ClickHouse Cloud. Задает размер буфера для сквозного распределенного кэша (write-through distributed cache). Если значение равно 0, используется размер буфера, который был бы использован при отсутствии распределенного кэша.

zstd_window_log_max

Позволяет задать максимальный window log для ZSTD (не используется для семейства MergeTree)