Перейти к основному содержанию
Все настройки, приведенные ниже, также доступны в таблице 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’.

ai_function_max_api_calls_per_query

Максимальное количество HTTP-запросов, которые функции ИИ могут отправить в рамках одного запроса. Установите 0, чтобы отключить.

ai_function_max_input_tokens_per_query

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

ai_function_max_output_tokens_per_query

Максимальное суммарное количество выходных токенов (completion) во всех вызовах API функции ИИ в рамках одного запроса. Подсчитывается накопительно на основе ответов провайдера. Обратите внимание, что этот предел может быть превышен на количество выходных токенов одного вызова, поскольку число выходных токенов для вызова заранее неизвестно. Установите 0, чтобы отключить.

ai_function_max_retries

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

ai_function_request_timeout_sec

Тайм-аут в секундах для отдельных HTTP-запросов, выполняемых функциями ИИ (запросы AI chat completions и вызовы API embedding). Если запрос не завершается за это время, он считается неуспешным и может быть повторён в соответствии с ai_function_max_retries.

ai_function_retry_initial_delay_ms

Начальная задержка в миллисекундах перед первой повторной попыткой после неудачного API-запроса функции ИИ. При каждой следующей попытке задержка удваивается (экспоненциальная задержка). Например, при настройках по умолчанию: 1000ms, 2000ms, 4000ms.

ai_function_throw_on_error

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

ai_function_throw_on_quota_exceeded

Если true (значение по умолчанию), при превышении лимита квоты функции ИИ (ai_function_max_input_tokens_per_query, ai_function_max_output_tokens_per_query или ai_function_max_api_calls_per_query) запрос прерывается с исключением. Если false, для оставшихся строк используется значение по умолчанию для типа столбца (пустая строка для String).

allow_aggregate_partitions_independently

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

allow_archive_path_syntax

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

allow_asynchronous_read_from_io_pool_for_merge_tree

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

allow_calculating_subcolumns_sizes_for_merge_tree_reading

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

allow_changing_replica_until_first_data_packet

Если параметр включен, при hedged-запросах можно устанавливать новое соединение до получения первого пакета данных, даже если уже есть некоторый прогресс (но он не обновлялся в течение тайм-аута 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_ai_functions

Включает экспериментальные функции ИИ (например, aiGenerateContent). Эти функции выполняют внешние HTTP-запросы к поставщикам ИИ.

allow_experimental_analyzer

Псевдонимы: enable_analyzer Разрешает использование нового анализатора запросов.

allow_experimental_cleanup_old_data_files_compaction

Разрешает удалять старые файлы данных при компакции Iceberg.

allow_experimental_codecs

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

allow_experimental_correlated_subqueries

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

allow_experimental_database_glue_catalog

Псевдонимы: allow_database_glue_catalog Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = ‘glue’ Значение по умолчанию в Cloud: 1.

allow_experimental_database_hms_catalog

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

allow_experimental_database_iceberg

Псевдонимы: allow_database_iceberg Разрешает использование экспериментального движка базы данных DataLakeCatalog с catalog_type = 'iceberg' Значение по умолчанию в Cloud: 1.

allow_experimental_database_materialized_postgresql

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

allow_experimental_database_paimon_rest_catalog

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

allow_experimental_database_unity_catalog

Псевдонимы: allow_database_unity_catalog Разрешить использование экспериментального движка базы данных DataLakeCatalog с catalog_type = ‘unity’ Значение по умолчанию в Cloud: 1.

allow_experimental_delta_kernel_rs

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

allow_experimental_delta_lake_writes

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

allow_experimental_expire_snapshots

Разрешает выполнение экспериментальной команды Iceberg ALTER TABLE ... EXECUTE expire_snapshots.

allow_experimental_funnel_functions

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

allow_experimental_geo_types_in_iceberg

Разрешает интерпретировать типы полей geometry и geography в Iceberg как тип ClickHouse Geometry (Variant).

allow_experimental_hash_functions

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

allow_experimental_iceberg_compaction

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

allow_experimental_join_right_table_sorting

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

allow_experimental_json_lazy_type_hints

Включает экспериментальные ленивые подсказки типов для типа JSON. Эта возможность позволяет оптимизировать преобразования типа JSON, откладывая обработку подсказок типов.

allow_experimental_kafka_offsets_storage_in_keeper

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

allow_experimental_kusto_dialect

Включает Kusto Query Language (KQL) — альтернативный SQL-диалект.

allow_experimental_materialized_postgresql_table

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

allow_experimental_nlp_functions

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

allow_experimental_nullable_tuple_type

Разрешает создание в таблицах столбцов типа Nullable Tuple. Эта настройка не определяет, могут ли извлечённые подстолбцы Tuple быть Nullable (например, из столбцов Dynamic, Variant, JSON или Tuple). Используйте allow_nullable_tuple_in_extracted_subcolumns, чтобы управлять тем, могут ли извлечённые подстолбцы Tuple быть Nullable.

allow_experimental_object_storage_queue_hive_partitioning

Разрешает использовать партиционирование Hive с движками S3Queue/AzureQueue

allow_experimental_paimon_storage_engine

Разрешает создавать таблицы с движком таблицы Paimon*.

allow_experimental_parallel_reading_from_replicas

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

allow_experimental_polyglot_dialect

Включает транспайлер polyglot SQL — преобразует SQL из более чем 30 диалектов (MySQL, PostgreSQL, SQLite, Snowflake, DuckDB и т. д.) в ClickHouse SQL.

allow_experimental_prql_dialect

Включает PRQL — альтернативный язык запросов по отношению к SQL.

allow_experimental_query_deduplication

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

allow_experimental_time_series_aggregate_functions

Псевдонимы: allow_experimental_ts_to_grid_aggregate_function Экспериментальные агрегатные функции timeSeries* для передискретизации временных рядов, а также вычисления rate и delta в стиле Prometheus.

allow_experimental_time_series_table

Разрешает создавать таблицы с использованием движка таблицы TimeSeries. Возможные значения:
  • 0 — движок таблицы TimeSeries отключен.
  • 1 — движок таблицы TimeSeries включен.

allow_experimental_unique_key

Разрешает создавать таблицы с конструкцией UNIQUE KEY на движках семейства MergeTree.

allow_experimental_window_view

Включает WINDOW VIEW. Функция ещё недостаточно зрелая.

allow_experimental_ytsaurus_dictionary_source

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

allow_experimental_ytsaurus_table_engine

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

allow_experimental_ytsaurus_table_function

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

allow_fuzz_query_functions

Включает функцию fuzzQuery, которая применяет случайные мутации AST к строке запроса.

allow_general_join_planning

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

allow_get_client_http_header

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

allow_hyperscan

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

allow_iceberg_remove_orphan_files

Разрешает использовать ‘ALTER TABLE … EXECUTE remove_orphan_files()’ для таблиц Iceberg.

allow_insert_into_iceberg

Псевдонимы: allow_experimental_insert_into_iceberg Разрешает выполнять запросы insert в Iceberg.

allow_introspection_functions

Включает или отключает функции интроспекции при профилировании запросов. Возможные значения:
  • 1 — Функции интроспекции включены.
  • 0 — Функции интроспекции отключены.
См. также

allow_key_condition_coalesce_rewrite

Преобразует предикаты вида coalesce(a_1, ..., a_N) <op> const (а также эквивалентные выражения с ifNull или с константой слева) в дизъюнкцию (a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const) перед анализом индексов, чтобы можно было использовать первичный ключ по отдельным столбцам и индексы пропуска данных для каждого a_i. Поддерживаются и формы с частичными константами, такие как coalesce(a, 42, b) и coalesce(a, b, 42): список аргументов нормализуется так же, как в самом coalesce (литералы NULL отбрасываются, аргументы после первого не-Nullable отбрасываются), а завершающая не-NULL константа, если она есть, добавляется как последняя ветвь. Это преобразование используется только для дополнительного отсечения по индексам; фильтрация во время выполнения по-прежнему использует исходный предикат.

allow_materialized_view_with_bad_select

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

allow_named_collection_override_by_default

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

allow_non_metadata_alters

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

allow_nonconst_timezone_arguments

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

allow_nondeterministic_mutations

Пользовательская настройка, которая разрешает мутациям в реплицируемых таблицах использовать недетерминированные функции, такие как dictGet. Поскольку, например, словари могут быть не синхронизированы между узлами, мутации, которые получают из них значения, по умолчанию запрещены для реплицируемых таблиц. Включение этой настройки разрешает такое поведение, и пользователь должен сам обеспечить синхронизацию используемых данных на всех узлах. Пример
<profiles>
    <default>
        <allow_nondeterministic_mutations>1</allow_nondeterministic_mutations>

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

    <!-- ... -->

</profiles>

allow_nondeterministic_optimize_skip_unused_shards

Разрешает использовать недетерминированные функции (например, rand или dictGet, поскольку у последней есть некоторые особенности, связанные с обновлениями) в ключе сегментирования. Возможные значения:
  • 0 — Запрещено.
  • 1 — Разрешено.

allow_nullable_tuple_in_extracted_subcolumns

Определяет, могут ли извлечённые подстолбцы типа Tuple(...) иметь тип Nullable(Tuple(...)).
  • false: Возвращает Tuple(...) и использует значения кортежа по умолчанию для строк, в которых подстолбец отсутствует.
  • true: Возвращает Nullable(Tuple(...)) и использует NULL для строк, в которых подстолбец отсутствует.
Эта настройка влияет только на поведение извлечённых подстолбцов. Она не определяет, можно ли создавать в таблицах столбцы Nullable(Tuple(...)); это регулируется параметром allow_experimental_nullable_tuple_type. ClickHouse использует значение этой настройки, загруженное при запуске сервера. Изменения, внесённые с помощью SET или SETTINGS на уровне запроса, не меняют поведение извлечённых подстолбцов. Чтобы изменить поведение извлечённых подстолбцов, обновите allow_nullable_tuple_in_extracted_subcolumns в конфигурации профиля запуска (например, в users.xml) и перезапустите сервер.

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_rank_dense_rank_arguments

Разрешает передавать аргументы оконным функциям RANK и DENSE_RANK для обратной совместимости. Согласно стандарту SQL, RANK и DENSE_RANK не принимают аргументов — они ранжируют строки только по окну OVER (ORDER BY ...). В версиях ClickHouse до 26.5 запросы вида RANK(x) OVER (...) молча принимались, а аргумент игнорировался, что вызывало путаницу у пользователей (видимый аргумент создавал впечатление, что он влияет на ранжирование, хотя это не так). Когда этот параметр имеет значение false (по умолчанию), RANK и DENSE_RANK отклоняют любые аргументы и выдают ошибку NUMBER_OF_ARGUMENTS_DOESNT_MATCH. Если установить значение true, восстанавливается прежнее более мягкое поведение — аргументы молча игнорируются, как и до версии 26.5.

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

Псевдонимы: allow_experimental_statistics Позволяет задавать для столбцов статистику и управлять статистикой.

allow_statistics_optimize

Псевдонимы: 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 хранит числовой индекс для каждой строки. В результате:
  • Может увеличиться использование дискового пространства.
  • Потребление оперативной памяти может возрасти в зависимости от размера словаря.
  • Некоторые функции могут работать медленнее из-за дополнительных операций кодирования и декодирования.
В таблицах с движком 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

Разрешает неограниченное чтение (без условия для path) из таблицы 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 PARTITION202101       │ 202101_7_7_0 │ 202101_5_5_0  │
ATTACH PARTITION202101       │ 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 — Ждать выполнения на всех репликах.
  • 3 - Ждать только активные реплики.
Значение по умолчанию в Cloud: 0.
alter_sync применим только к таблицам Replicated и SharedMergeTree; для таблиц без Replicated или Shared при выполнении ALTER он ничего не делает.

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) JOIN будет выполняться по условию t1.a + 1 = t2.b, а не t1.b = t2.b).

analyzer_inline_views

При включении анализатор разворачивает обычные (нематериализованные, непараметризованные) представления в их определяющие подзапросы, что делает возможными сквозные оптимизации, такие как pushdown предикатов и отсечение столбцов.

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

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

apply_mutations_on_fly

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

apply_patch_parts

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

apply_patch_parts_join_cache_buckets

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

apply_prewhere_after_final

Если включено, условия PREWHERE для ReplacingMergeTree и схожих движков применяются после обработки FINAL. Это может быть полезно, когда PREWHERE ссылается на столбцы, значения которых могут различаться в дублирующихся строках, и вы хотите, чтобы FINAL сначала выбрал итоговую строку, а фильтрация выполнялась уже после этого. Если отключено, PREWHERE применяется при чтении. Примечание: если включен apply_row_level_security_after_final и политика доступа к строкам использует столбцы, не входящие в ключ сортировки, PREWHERE также будет отложен, чтобы сохранить правильный порядок выполнения (политика доступа к строкам должна применяться до PREWHERE).

apply_row_policy_after_final

Если настройка включена, row policies и PREWHERE применяются после обработки FINAL для таблиц семейства *MergeTree. (Особенно актуально для ReplacingMergeTree) Если настройка выключена, row policies применяются до FINAL, что может приводить к различающимся результатам, если политика отфильтровывает строки, которые должны использоваться для дедупликации в ReplacingMergeTree или аналогичных движках. Если выражение row policy зависит только от столбцов из ORDER BY, оно всё равно будет применяться до FINAL в целях оптимизации, поскольку такая фильтрация не может повлиять на результат дедупликации. Возможные значения:
  • 0 — Row policy и PREWHERE применяются до FINAL (по умолчанию).
  • 1 — Row policy и PREWHERE применяются после FINAL.

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

archive_adaptive_buffer_max_size_bytes

Ограничивает максимальный размер адаптивного буфера, используемого при записи в архивные файлы (например, tar-архивы

arrow_flight_request_descriptor_type

Тип дескриптора для запросов Arrow Flight. ‘path’ отправляет имя набора данных в виде дескриптора PATH. ‘command’ отправляет SQL-запрос в виде дескриптора команды (требуется для Dremio). Возможные значения:
  • ‘path’ — Использовать FlightDescriptor::Path (по умолчанию; работает с большинством серверов Arrow Flight)
  • ‘command’ — Использовать FlightDescriptor::Command с запросом SELECT (требуется для Dremio)

ast_fuzzer_any_query

Если установлено значение false (по умолчанию), AST-фаззер на стороне сервера (управляется параметром ast_fuzzer_runs) выполняет фаззинг только запросов в режиме только для чтения (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). Если true, фаззингу подвергаются все типы запросов, включая DDL и INSERT.

ast_fuzzer_runs

Включает серверный AST-фаззер, который после каждого обычного запроса запускает случайно сгенерированные запросы, отбрасывая их результаты.
  • 0: отключено (по умолчанию).
  • Значение между 0 и 1 (не включая границы): вероятность запуска одного фаззинг-запроса.
  • Значение >= 1: число фаззинг-запросов, запускаемых на каждый обычный запрос.
Фаззер накапливает AST-фрагменты из всех запросов во всех сеансах, со временем создавая всё более интересные мутации. Фаззинг-запросы, завершающиеся ошибкой, молча отбрасываются; результаты клиенту не возвращаются.

asterisk_include_alias_columns

Учитывать столбцы ALIAS в запросе с подстановочным символом (SELECT *). Возможные значения:
  • 0 - отключено
  • 1 - включено

asterisk_include_materialized_columns

Включать столбцы MATERIALIZED в запросах с подстановочным знаком (SELECT *). Возможные значения:
  • 0 - отключено
  • 1 - включено

asterisk_include_virtual_columns

Включать виртуальные столбцы в запросе с подстановочным символом (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 Максимальное время ожидания перед сбросом собранных данных по каждому запросу с момента поступления первых данных. Значение по умолчанию в Cloud: 1000 (1s).

async_insert_busy_timeout_min_ms

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

async_insert_deduplicate

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

async_insert_max_data_size

Максимальный размер в байтах неразобранных данных, накапливаемых для каждого запроса перед вставкой Значение по умолчанию в Cloud: 104857600 (100 MiB).

async_insert_max_query_number

Максимальное количество запросов на вставку до выполнения вставки. Применяется только в том случае, если значение настройки 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

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

automatic_parallel_replicas_min_bytes_per_replica

Порог количества байт для чтения на одну реплику, при достижении которого параллельные реплики включаются автоматически (применяется только при automatic_parallel_replicas_mode=1). 0 означает отсутствие порога. Общее количество байт для чтения оценивается на основе собранной статистики.

automatic_parallel_replicas_mode

Включает автоматическое переключение на выполнение с параллельными репликами на основе собранной статистики. Требует enable_analyzer = 1, enable_parallel_replicas != 0, parallel_replicas_local_plan = 1 и указания cluster_for_parallel_replicas. 0 — отключено, 1 — включено, 2 — включен только сбор статистики (переключение на выполнение с параллельными репликами отключено).

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-запросов в секунду до начала throttling. Ноль означает отсутствие ограничений.

azure_max_inflight_parts_for_one_file

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

azure_max_put_burst

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

azure_max_put_rps

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

azure_max_redirects

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

azure_max_single_part_copy_size

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

azure_max_single_part_upload_size

Максимальный размер объекта для загрузки в 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

Минимальный размер части, загружаемой при multipart-загрузке в 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

Включает или отключает выполнение TRUNCATE перед вставкой в таблицы движка 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 — случайное начальное значение генератора случайных чисел, иначе — значение настройки

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

Тайм-аут начальной задержки перед повторной попыткой для операций [Zoo]Keeper при резервном копировании или восстановлении

backup_restore_keeper_retry_max_backoff_ms

Максимальный тайм-аут задержки между повторными попытками для операций [Zoo]Keeper при резервном копировании или восстановлении Значение по умолчанию в Cloud: 60000.

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 при повторных попытках в Aws::Client::RetryStrategy во время операций резервного копирования и восстановления. Вычисленная задержка backoff умножается на случайный коэффициент в диапазоне [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, допускающую повторную попытку, например ‘Slow Down’. Если установлено значение false, каждый поток обрабатывает задержку запросов S3 независимо от остальных.

cache_warmer_threads

Действует только в ClickHouse Cloud. Количество фоновых потоков для упреждающей загрузки новых частей данных в файловый кэш при включенном cache_populated_by_fetch. Значение 0 отключает эту возможность.

calculate_text_stack_trace

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

cancel_http_readonly_queries_on_client_close

Отменяет HTTP-запросы только для чтения (например, SELECT), если клиент закрывает соединение, не дождавшись ответа. Значение по умолчанию в Cloud: 1.

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. Возможные значения:
  • '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_named_collection_dependencies

Проверяет, что DROP NAMED COLLECTION не приведёт к нарушению работы зависящих от неё таблиц

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: 1.

cloud_mode_database_engine

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

cloud_mode_engine

Семейство движков, разрешённых в Cloud.
  • 0 - разрешить всё
  • 1 - переписывать DDL-запросы с использованием *ReplicatedMergeTree
  • 2 - переписывать DDL-запросы с использованием SharedMergeTree
  • 3 - переписывать DDL-запросы с использованием SharedMergeTree, кроме случаев, когда явно указан удалённый диск
  • 4 - то же, что и 3, но дополнительно использовать Alias вместо Distributed (таблица Alias будет указывать на целевую таблицу таблицы Distributed, поэтому будет использоваться соответствующая локальная таблица)
UInt64 для минимизации публичной части Значение по умолчанию в Cloud: 2.

cluster_for_parallel_replicas

Кластер для сегмента, в котором находится текущий сервер Значение по умолчанию в Cloud: default.

cluster_function_process_archive_on_multiple_nodes

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

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 значение параметра compatibility по умолчанию на уровне сервиса должна задавать служба поддержки ClickHouse Cloud. Чтобы его установили, создайте обращение. Однако параметр compatibility можно переопределить на уровне пользователя, роли, profile, запроса или сеанса с помощью стандартных механизмов настройки 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

compatibility_s3_presigned_url_query_in_path

Совместимость: если включено, параметры запроса предподписанного URL (например, X-Amz-*) включаются в ключ S3 (устаревшее поведение), поэтому ’?’ обрабатывается как подстановочный знак в пути. Если отключено (по умолчанию), параметры запроса предподписанного URL сохраняются в строке запроса URL, чтобы ’?’ не интерпретировался как подстановочный знак.

compile_aggregate_expressions

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

compile_expressions

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

compile_sort_description

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

connect_timeout

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

connect_timeout_with_failover_ms

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

connect_timeout_with_failover_secure_ms

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

connection_pool_max_wait_ms

Время ожидания соединения в миллисекундах, если пул соединений заполнен. Possible values:
  • Положительное целое число.
  • 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.

correlated_subqueries_use_in_memory_buffer

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

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

Вероятность внедрения сбоя при создании table после создания метаданных в 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. Нулевое значение означает, что этот порог отключён. Блок сжимается при достижении любого из двух порогов — по числу строк или по числу байтов.

cross_to_inner_join_rewrite

Использовать INNER JOIN вместо JOIN через запятую/CROSS JOIN, если в секции WHERE есть условия JOIN. Значения: 0 — без переписывания, 1 — применять, если возможно, для JOIN через запятую/CROSS, 2 — принудительно переписывать все JOIN через запятую, а CROSS — если возможно

data_type_default_nullable

Позволяет использовать Nullable для типов данных без явных модификаторов NULL или NOT NULL в определениях столбцов. Возможные значения:
  • 1 — Типы данных в определениях столбцов по умолчанию имеют тип Nullable.
  • 0 — Типы данных в определениях столбцов по умолчанию не имеют типа Nullable.

database_atomic_wait_for_drop_and_detach_synchronously

Добавляет модификатор SYNC ко всем запросам DROP и DETACH. Возможные значения:
  • 0 — запросы будут выполняться с задержкой.
  • 1 — запросы будут выполняться без задержки.

database_datalake_require_metadata_access

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

database_replicated_allow_explicit_uuid

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

database_replicated_allow_heavy_create

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

database_replicated_allow_only_replicated_engine

Разрешает создавать в базе данных с движком Replicated только таблицы Replicated Значение по умолчанию в Cloud: 1.

database_replicated_allow_replicated_engine_arguments

0 - Запрещает явно указывать путь ZooKeeper и имя реплики для таблиц семейства *MergeTree в базах данных Replicated. 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 database. Это позволяет восстановить таблицу в течение этого времени с помощью оператора UNDROP TABLE.

decimal_check_overflow

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

deduplicate_blocks_in_dependent_materialized_views

Включает или отключает проверку дедупликации для materialized view, получающих данные из таблиц Replicated*. Возможные значения: 0 — Отключено. 1 — Включено. Если параметр включен, ClickHouse выполняет дедупликацию блоков в materialized view, зависящих от таблиц Replicated*. Этот параметр полезен, чтобы materialized view не содержали дублирующиеся данные, когда операция вставки повторяется из-за сбоя. См. также

deduplicate_insert

Включает или отключает дедупликацию блоков для INSERT INTO (для таблиц Replicated*). Эта настройка переопределяет параметры insert_deduplicate и async_insert_deduplicate. У этой настройки есть три возможных значения:
  • disable — Дедупликация для запроса INSERT INTO отключена.
  • enable — Дедупликация для запроса INSERT INTO включена.
  • backward_compatible_choice — Дедупликация включается, если insert_deduplicate или async_insert_deduplicate включены для соответствующего типа вставки.

deduplicate_insert_select

Включает или отключает дедупликацию блоков для INSERT SELECT (для таблиц Replicated*). Этот параметр переопределяет insert_deduplicate и deduplicate_insert для запросов INSERT SELECT. У этого параметра есть четыре возможных значения:
  • disable — Дедупликация отключена для запроса INSERT SELECT.
  • force_enable — Дедупликация включена для запроса INSERT SELECT. Если результат SELECT нестабилен, генерируется исключение.
  • enable_when_possible — Дедупликация включается, если insert_deduplicate включен и результат SELECT стабилен, в противном случае отключается.
  • enable_even_for_bad_queries - Дедупликация включается, если insert_deduplicate включен. Если результат SELECT нестабилен, в журнал записывается предупреждение, но запрос выполняется с дедупликацией. Этот вариант предназначен для обратной совместимости. Рекомендуется использовать другие варианты, так как он может приводить к неожиданным результатам.

default_materialized_view_sql_security

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

default_max_bytes_in_join

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

default_normal_view_sql_security

Позволяет задать значение SQL SECURITY по умолчанию при создании обычного представления. Подробнее о безопасности SQL. Значение по умолчанию — 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.

defer_partition_pruning_after_final

Когда настройка включена (по умолчанию), отсечение партиций пропускается для запросов FINAL к таблицам, у которых столбцы ключа партиции не входят в ключ сортировки. Это безопасное с точки зрения корректности поведение, введённое в 26.3: FINAL может потребоваться выполнить дедупликацию строк с одинаковым первичным ключом, но находящихся в разных партициях, а отсечение партиций в таком случае незаметно исключило бы эти строки из входных данных для дедупликации. Когда настройка отключена, отсечение партиций применяется даже с FINAL, восстанавливая поведение до 26.3. Это может быть значительно быстрее для запросов с условиями WHERE по столбцу партиции, но корректно только в тех случаях, когда строки с одним и тем же первичным ключом не могут находиться в разных партициях — например, в таблицах логов событий, где столбец партиции задаётся во время вставки и больше никогда не изменяется. Эта настройка влияет только на партиционированные таблицы, у которых столбцы ключа партиции не входят в ключ сортировки; для остальных таблиц отсечение партиций применяется всегда. Возможные значения:
  • 0 — Применять отсечение партиций до FINAL (поведение до 26.3, быстрее, но в общем случае небезопасно).
  • 1 — Откладывать отсечение партиций до завершения FINAL (по умолчанию, безопасно с точки зрения корректности).

delta_lake_enable_engine_predicate

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

delta_lake_enable_expression_visitor_logging

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

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_reload_schema_for_consistency

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

delta_lake_snapshot_end_version

Конечная версия снимка delta lake, которую нужно прочитать. Значение -1 означает чтение последней версии (значение 0 — допустимая версия снимка).

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

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

describe_include_subcolumns

Включает отображение подстолбцов в запросе DESCRIBE. Например, элементов Tuple или подстолбцов типа данных Map, Nullable или Array. Возможные значения:
  • 0 — Подстолбцы не включаются в запросы DESCRIBE.
  • 1 — Подстолбцы включаются в запросы DESCRIBE.
Пример См. пример для оператора DESCRIBE.

describe_include_virtual_columns

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

диалект

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

dictionary_use_async_executor

Запускает конвейер чтения источника словаря в несколько потоков. Поддерживается только для словарей с локальным источником CLICKHOUSE.

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 Тайм-аут для запроса вставки в Distributed. Эта настройка используется только при включенном insert_distributed_sync. Нулевое значение означает отсутствие тайм-аута.

distributed_cache_alignment

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

distributed_cache_bypass_connection_pool

Действует только в ClickHouse Cloud. Позволяет обходить пул соединений Distributed Cache

distributed_cache_connect_backoff_max_ms

Действует только в ClickHouse Cloud. Максимальная задержка в миллисекундах при установлении подключения к distributed cache.

distributed_cache_connect_backoff_min_ms

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

distributed_cache_connect_max_tries

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

distributed_cache_connect_timeout_ms

Действует только в ClickHouse Cloud. Тайм-аут подключения к серверу distributed cache.

distributed_cache_credentials_refresh_period_seconds

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

distributed_cache_data_packet_ack_window

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

distributed_cache_discard_connection_if_unread_data

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

distributed_cache_fetch_metrics_only_from_current_az

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

distributed_cache_file_cache_name

Действует только в ClickHouse Cloud. Настройка, используемая только для CI-тестов: имя файлового кэша для distributed cache.

distributed_cache_log_mode

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

distributed_cache_max_unacked_inflight_packets

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

distributed_cache_min_bytes_for_seek

Действует только в ClickHouse Cloud. Минимальное количество байт для выполнения seek в distributed cache.

distributed_cache_pool_behaviour_on_limit

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

distributed_cache_prefer_bigger_buffer_size

Действует только в ClickHouse Cloud. То же, что и filesystem_cache_prefer_bigger_buffer_size, но для distributed cache.

distributed_cache_read_only_from_current_az

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

distributed_cache_read_request_max_tries

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

distributed_cache_receive_response_wait_milliseconds

Действует только в ClickHouse Cloud. Время ожидания в миллисекундах при получении данных для запроса из distributed cache

distributed_cache_receive_timeout_milliseconds

Действует только в ClickHouse Cloud. Время ожидания в миллисекундах до получения любого ответа от distributed cache Значение по умолчанию в Cloud: 20000.

distributed_cache_receive_timeout_ms

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

distributed_cache_send_timeout_ms

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

distributed_cache_tcp_keep_alive_timeout_ms

Действует только в ClickHouse Cloud. Время в миллисекундах, в течение которого соединение с сервером distributed cache должно оставаться бездействующим, прежде чем TCP начнет отправлять keepalive-пакеты.

distributed_cache_throw_on_error

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

distributed_cache_use_clients_cache_for_read

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

distributed_cache_use_clients_cache_for_write

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

distributed_cache_wait_connection_from_pool_milliseconds

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

distributed_cache_write_request_max_tries

Действует только в ClickHouse Cloud. Количество попыток выполнить запрос на запись в distributed cache в случае неудачи.

distributed_connections_pool_size

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

distributed_ddl_entry_format_version

Версия совместимости распределённых DDL-запросов с предложением ON CLUSTER Значение по умолчанию в Cloud: 6.

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: none_only_active.

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: 1. См. также

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_index_analysis

Анализ индексов будет распределён между репликами. Полезно для общего хранилища и очень больших объёмов данных в кластере. Использует реплики из cluster_for_parallel_replicas. См. также

distributed_index_analysis_for_non_shared_merge_tree

Включает распределённый анализ индексов даже для движков, отличных от SharedMergeTree (движка, доступного только в Cloud).

distributed_index_analysis_only_on_coordinator

Если параметр включен, распределенный анализ индексов выполняется только на координаторе. Это предотвращает появление запросов O(N^2), когда предикат содержит подзапросы (например, IN (SELECT ...)), поскольку в противном случае каждая реплика-follower независимо запускала бы собственный распределенный анализ индексов, но делает распределенный анализ индексов менее эффективным, если в подзапросах используются большие таблицы.

distributed_insert_skip_read_only_replicas

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

distributed_plan_default_reader_bucket_count

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

distributed_plan_default_shuffle_join_bucket_count

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

distributed_plan_execute_locally

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

distributed_plan_force_exchange_kind

Принудительно задаёт указанный тип операторов Exchange между стадиями распределённого запроса. Возможные значения:
  • ” - не задавать принудительно какой-либо тип операторов Exchange, а предоставить выбор оптимизатору,
  • ‘Persisted’ - использовать временные файлы в объектном хранилище,
  • ‘Streaming’ - передавать данные Exchange по сети в потоковом режиме.

distributed_plan_force_shuffle_aggregation

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

distributed_plan_max_rows_to_broadcast

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

distributed_plan_optimize_exchanges

Убирает лишние операции exchange в распределённом плане запроса. Для отладки отключите эту настройку.

distributed_plan_prefer_replicas_over_workers

Сериализует распределенный план запроса для выполнения на репликах.

distributed_product_mode

Изменяет поведение распределённых подзапросов. ClickHouse применяет эту настройку, когда запрос содержит произведение distributed таблиц, то есть когда запрос к distributed таблице содержит не-GLOBAL подзапрос для distributed таблицы. Ограничения:
  • Применяется только к подзапросам IN и JOIN.
  • Только если в секции FROM используется distributed таблица, содержащая более одного сегмента.
  • Если подзапрос относится к distributed таблице, содержащей более одного сегмента.
  • Не используется для табличной функции 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

  • Тип: беззнаковое целое число
  • Значение по умолчанию: 0
Количество ошибок, которые игнорируются при выборе реплик (в соответствии с алгоритмом load_balancing). См. также:

do_not_merge_across_partitions_select_final

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

dynamic_disk_allow_from_env

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

dynamic_disk_allow_from_zk

Разрешает использовать подстановки from_zk в конфигурации динамических дисков (то есть в аргументах функции disk()). По умолчанию отключена.

dynamic_disk_allow_include

Разрешает использовать include в конфигурации динамического диска (то есть в аргументах функции disk()). По умолчанию отключено.

dynamic_throw_on_type_mismatch

При применении функции к столбцу Dynamic со стандартной реализацией эта настройка определяет, что происходит со строками, фактический тип которых несовместим с функцией:
  • true (по умолчанию) — сгенерировать исключение.
  • false — вместо этого вернуть NULL для таких строк.

empty_result_for_aggregation_by_constant_keys_on_empty_set

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

empty_result_for_aggregation_by_empty_set

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

enable_adaptive_memory_spill_scheduler

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

enable_add_distinct_to_in_subqueries

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

enable_automatic_decision_for_merging_across_partitions_for_final

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

enable_blob_storage_log

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

enable_blob_storage_log_for_read_operations

Записывает информацию об операциях чтения из blob storage в таблицу system.blob_storage_log. Также требуется включить enable_blob_storage_log.

enable_early_constant_folding

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

enable_extended_results_for_datetime_functions

Включает или отключает возврат результатов типа Date32 с расширенным диапазоном (по сравнению с типом Date) или типа DateTime64 с расширенным диапазоном (по сравнению с типом DateTime). Возможные значения:
  • 0 — Функции возвращают Date или DateTime для аргументов любых типов.
  • 1 — Функции возвращают Date32 или DateTime64 для аргументов типа Date32 или DateTime64, а в остальных случаях — Date или DateTime.
В таблице ниже показано, как эта настройка влияет на поведение различных функций даты и времени.
Functionenable_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

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

enable_filesystem_cache_log

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

enable_filesystem_cache_on_write_operations

Включает или отключает кэш со сквозной записью (write-through). Если установлено значение false, кэш со сквозной записью отключается для операций записи. Если установлено значение true, кэш со сквозной записью включается, если параметр cache_on_write_operations включен в разделе конфигурации cache disk в config сервера. Подробнее см. в разделе “Использование локального кэша”. Значение по умолчанию в Cloud: 1.

enable_filesystem_read_prefetches_log

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

enable_full_text_index

Псевдонимы: allow_experimental_full_text_index Если установлено значение true, разрешается использование текстового индекса.

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_fixed_hash_table_conversion

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

enable_join_runtime_filters

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

enable_join_transitive_predicates

Выводит транзитивные предикаты эквисоединения на основе существующих условий JOIN. Например, если заданы A.x = B.x и B.x = C.x, добавляется синтетический предикат A.x = C.x, чтобы оптимизатор порядка JOIN мог учитывать прямые планы (A JOIN C).

enable_lazy_columns_replication

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

enable_lightweight_delete

Псевдонимы: allow_experimental_lightweight_delete Включает поддержку легковесных DELETE-мутаций для таблиц MergeTree.

enable_lightweight_update

Псевдонимы: allow_experimental_lightweight_update Позволяет использовать легковесные обновления.

enable_materialized_cte

Включает материализованные общие табличные выражения; этот параметр имеет приоритет над enable_global_with_statement

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

Включает pushdown предикатов в запросах SELECT. Pushdown предикатов может значительно сократить сетевой трафик при распределенных запросах. Возможные значения:
  • 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, данные можно разбирать непосредственно в столбцы с пользовательской сериализацией (например, Sparse) согласно подсказкам о сериализации, полученным из таблицы.

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_positional_arguments_for_projections

Включает или отключает поддержку позиционных аргументов в определениях PROJECTION. См. также настройку enable_positional_arguments.
Это настройка экспертного уровня; не изменяйте её, если вы только начинаете работать с ClickHouse.
Возможные значения:
  • 0 — Позиционные аргументы не поддерживаются.
  • 1 — Позиционные аргументы поддерживаются: вместо имён столбцов можно использовать номера столбцов.

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

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

enable_software_prefetch_in_aggregation

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

enable_software_prefetch_in_join

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

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 - Включено

enforce_strict_identifier_format

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

engine_file_allow_create_multiple_files

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

exact_rows_before_limit

Если включено, ClickHouse будет возвращать точное значение статистики rows_before_limit_at_least, но для этого потребуется полностью прочитать данные до лимита

except_default_mode

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

exclude_materialize_skip_indexes_on_insert

Исключает построение и сохранение указанных индексов пропуска данных при INSERT. Исключённые индексы пропуска данных всё равно будут построены и сохранены при слияниях или явным запросом 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 как скалярные подзапросы. Как и для скалярных подзапросов, используется кэш, а к результату применяется свёртка констант. Значение по умолчанию в Cloud: 0.

external_storage_connect_timeout_sec

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

external_storage_max_read_bytes

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

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

Принудительно направляет запрос к устаревшей реплике, если обновлённые данные недоступны. См. репликацию. ClickHouse выбирает наиболее подходящую из устаревших реплик таблицы. Используется при выполнении SELECT из distributed таблицы, указывающей на реплицируемые таблицы. По умолчанию — 1 (включено).

filesystem_cache_allow_background_download

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

filesystem_cache_boundary_alignment

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

filesystem_cache_enable_background_download_during_fetch

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

filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage

Действует только в 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

Максимальный объём памяти для операций предварительного чтения. Значение по умолчанию в Cloud: 10% от общего объёма памяти.

filesystem_prefetch_step_bytes

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

filesystem_prefetch_step_marks

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

filesystem_prefetches_limit

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

final

Автоматически применяет модификатор FINAL ко всем таблицам в запросе, к которым применим FINAL, включая таблицы, участвующие в JOIN, таблицы в подзапросах и 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───┐
1second
└─────┴────────┘
┌─key─┬─some──┐
1first
└─────┴───────┘

SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
1second
└─────┴────────┘

SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
1second
└─────┴────────┘

finalize_projection_parts_synchronously

Если параметр включен, части проекций финализируются синхронно во время INSERT, что снижает пиковое потребление памяти ценой уменьшения параллелизма загрузки в S3. По умолчанию выходной поток каждой проекции остается активным, пока не будет финализирована вся часть (включая все проекции), что позволяет выполнять параллельно перекрывающиеся загрузки в S3, но увеличивает пиковое потребление памяти пропорционально числу проекций. Эта настройка влияет только на INSERT; операции merge и mutation уже финализируют проекции синхронно.

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 проверяет, есть ли в запросе условие по ключу даты, которое можно использовать для ограничения диапазонов данных. Если подходящего условия нет, генерируется исключение. Однако ClickHouse не проверяет, уменьшает ли это условие объём читаемых данных. Например, условие Date != ' 2000-01-01 ' допустимо, даже если ему соответствуют все данные в таблице (то есть для выполнения запроса потребуется полное сканирование). Дополнительные сведения о диапазонах данных в таблицах MergeTree см. в разделе MergeTree.

force_optimize_projection

Включает или отключает обязательное использование проекций в запросах SELECT, если включена оптимизация проекций (см. настройку optimize_use_projections). Возможные значения:
  • 0 — Использование оптимизации проекций не является обязательным.
  • 1 — Использование оптимизации проекций является обязательным.

force_optimize_projection_name

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

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 выводит только число цифр, соответствующее scale, а не фиксированные 6 цифр.

formatdatetime_f_выводит_один_ноль

Форматтер «%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 row in set. Elapsed: 0.001 sec.
Возможные значения:
  • 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 row in set. Elapsed: 0.001 sec.
Возможные значения:
  • 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 — корректно учитывать символы нулевой ширины и комбинируемые символы, считать полноширинные символы за два, оценивать ширину табуляции, учитывать символы удаления.

functions_h3_default_if_invalid

Если false, функции h3, например h3CellAreaM2, сгенерируют исключение, если входные данные недопустимы. Если true, они возвращают 0 или значение по умолчанию.

geo_distance_returns_float64_on_float64_arguments

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

geotoh3_argument_order

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

glob_expansion_max_elements

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

grace_hash_join_initial_buckets

Начальное количество бакетов для grace hash join

grace_hash_join_max_buckets

Ограничение на количество бакетов в 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

Включает или отключает создание нового файла при каждой вставке в таблицы с движком 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

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

hedged_connection_timeout_ms

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

highlight_max_matches_per_row

Задаёт максимальное количество выделяемых совпадений в строке в функции highlight. Используйте её для защиты от чрезмерного использования памяти при выделении сильно повторяющихся шаблонов в больших текстах. Возможные значения:
  • Положительное целое число.
Размер динамического списка кандидатов при поиске в индексе векторного сходства, также известный как ‘ef_search’.

hsts_max_age

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

http_connection_timeout

Тайм-аут HTTP-соединения (в секундах). Возможные значения:
  • Любое положительное целое число.
  • 0 — отключено (бесконечный тайм-аут).

http_headers_progress_interval_ms

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

http_headers_read_timeout

Максимальное время в секундах, отведенное на чтение всех заголовков HTTP-запроса. Это общий предельный срок для всего этапа разбора заголовков, а не тайм-аут отдельной операции чтения. Защищает от атак типа slowloris, при которых клиент медленно передает данные заголовков, чтобы удерживать соединения открытыми.

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_header_size

Максимальный суммарный размер всех заголовков 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, полученных от клиента. Используется только для native-формата сжатия 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. Если вы разрабатываете приложение с графическим интерфейсом, которое позволяет пользователям изменять настройки, но при этом использует возвращаемые заголовки для принятия решений, рекомендуется ограничить эту настройку режимом только для чтения. Пример: 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-адреса для глоб-шаблонов при ошибке 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_compaction_data_cleanup

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

iceberg_compaction_delay_bias

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

iceberg_data_file_size_lower_threshold_compaction

Нижний порог размера файлов данных для compaction в Iceberg.

iceberg_data_file_size_upper_threshold_compaction

Порог для compaction файлов данных в Iceberg.

iceberg_delete_data_on_drop

Следует ли удалять все файлы Iceberg при drop.

iceberg_expire_default_max_ref_age_ms

Значение по умолчанию для свойства history.expire.max-ref-age-ms таблицы Iceberg, которое используется функцией expire_snapshots, если это свойство отсутствует.

iceberg_expire_default_max_snapshot_age_ms

Значение по умолчанию для свойства Iceberg table history.expire.max-snapshot-age-ms, которое expire_snapshots использует, если это свойство отсутствует.

iceberg_expire_default_min_snapshots_to_keep

Значение по умолчанию для свойства таблицы Iceberg history.expire.min-snapshots-to-keep, которое использует expire_snapshots, если это свойство отсутствует.

iceberg_insert_max_bytes_in_data_file

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

iceberg_insert_max_partitions

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

iceberg_insert_max_rows_in_data_file

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

iceberg_max_number_datafiles_to_compact

Пороговое значение для компакции файлов данных в Iceberg.

iceberg_metadata_compression_method

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

iceberg_metadata_log_level

Управляет уровнем журналирования метаданных для Iceberg-таблиц в таблицу system.iceberg_metadata_log. Обычно эту настройку изменяют в целях отладки. Возможные значения:
  • none - Без журнала метаданных.
  • metadata - Корневой файл metadata.json.
  • manifest_list_metadata - Всё вышеперечисленное + метаданные из avro manifest list, соответствующего снимку.
  • manifest_list_entry - Всё вышеперечисленное + записи avro manifest list.
  • manifest_file_metadata - Всё вышеперечисленное + метаданные из просмотренных avro manifest files.
  • manifest_file_entry - Всё вышеперечисленное + записи просмотренных avro manifest files.

iceberg_metadata_staleness_ms

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

iceberg_orphan_files_older_than_seconds

Порог возраста по умолчанию в секундах для удаления файлов-сирот в таблицах Iceberg. Файлы новее этого значения не считаются сиротами. Используется, если в вызове процедуры remove_orphan_files() опущен аргумент older_than. Значение по умолчанию — 259200 (3 дня).

iceberg_snapshot_id

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

iceberg_timestamp_ms

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

idle_connection_timeout

Тайм-аут закрытия бездействующих TCP-соединений по истечении указанного количества секунд. Возможные значения:
  • Положительное целое число (0 — закрыть немедленно, через 0 секунд).

ignore_cold_parts_seconds

Действует только в 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'; -- Ok.
SELECT * FROM data SETTINGS ignore_data_skipping_indices='na_idx'; -- Ok.

SELECT * FROM data WHERE x = 1 AND y = 1 SETTINGS ignore_data_skipping_indices='xy_idx',force_data_skipping_indices='xy_idx' ; -- запрос вернёт ошибку 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_format_null_for_explain

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

ignore_materialized_views_with_dropped_target_table

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

ignore_on_cluster_for_replicated_access_entities_queries

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

ignore_on_cluster_for_replicated_database

Всегда игнорировать предложение ON CLUSTER для DDL-запросов с базами данных Replicated.

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

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

inject_random_order_for_select_without_order_by

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

insert_allow_materialized_columns

Если настройка включена, разрешается вставка в материализованные столбцы.

insert_deduplicate

Включает или отключает дедупликацию блоков для INSERT (для таблиц Replicated*). Возможные значения:
  • 0 — отключено.
  • 1 — включено.
По умолчанию блоки, вставляемые в реплицируемые таблицы оператором INSERT, подвергаются дедупликации (см. репликация данных). Для реплицируемых таблиц по умолчанию дедуплицируются только 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 — начальное значение генератора случайных чисел, иначе — значение настройки

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 consistency.
Включает запись с кворумом.
  • Если 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.
Включает или отключает параллельное выполнение запросов INSERT с quorum. Если параметр включен, дополнительные запросы 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

Собирать в 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. См. Профилирование выделений памяти

jemalloc_profile_text_collapsed_use_count

При использовании выходного формата collapsed для профиля кучи jemalloc агрегация выполняется по числу выделений, а не по байтам. Если false (по умолчанию), каждый стек взвешивается по объёму используемых байтов; если true — по числу используемых выделений.

jemalloc_profile_text_output_format

Формат вывода профиля кучи jemalloc в таблице system.jemalloc_profile_text. Может принимать значения: ‘raw’ (необработанный профиль), ‘symbolized’ (формат jeprof с символами) или ‘collapsed’ (формат флеймграфа).

jemalloc_profile_text_symbolize_with_inline

Определяет, нужно ли включать инлайн-фреймы при символизации профиля кучи jemalloc. Если настройка включена, инлайн-фреймы добавляются, что может существенно замедлить процесс символизации; если отключена, они пропускаются. Влияет только на форматы вывода ‘symbolized’ и ‘collapsed’.

join_algorithm

Указывает, какой алгоритм JOIN используется. Можно указать несколько алгоритмов; для конкретного запроса будет выбран подходящий в зависимости от kind/strictness и движка таблицы. Возможные значения:
  • grace_hash
Используется Grace hash join. Grace hash — это вариант алгоритма, который обеспечивает производительное выполнение сложных JOIN при ограниченном потреблении памяти. На первом этапе grace join считывает правую таблицу и разбивает её на N бакетов в зависимости от хеш-значения столбцов ключа (изначально N равно grace_hash_join_initial_buckets). Это делается так, чтобы каждый бакет можно было обрабатывать независимо. Строки из первого бакета добавляются в хеш-таблицу в оперативной памяти, а остальные сохраняются на диск. Если хеш-таблица превышает лимит памяти (например, заданный в max_bytes_in_join), количество бакетов увеличивается, и для каждой строки заново определяется назначенный бакет. Все строки, которые не относятся к текущему бакету, сбрасываются на диск и перераспределяются. Поддерживает INNER/LEFT/RIGHT/FULL ALL/ANY JOIN.
  • hash
Используется алгоритм hash join. Это наиболее универсальная реализация, которая поддерживает все комбинации kind и strictness, а также несколько ключей JOIN, объединённых с помощью OR в секции JOIN ON. При использовании алгоритма hash правая часть JOIN загружается в оперативную память.
  • parallel_hash
Вариант hash join, который разбивает данные на бакеты и параллельно строит несколько хеш-таблиц вместо одной, чтобы ускорить этот процесс. При использовании алгоритма parallel_hash правая часть JOIN загружается в оперативную память.
  • partial_merge
Вариант алгоритма sort-merge, в котором полностью сортируется только правая таблица. RIGHT JOIN и FULL JOIN поддерживаются только со strictness ALL (SEMI, ANTI, ANY и ASOF не поддерживаются). При использовании алгоритма partial_merge ClickHouse сортирует данные и выгружает их на диск. Алгоритм partial_merge в ClickHouse немного отличается от классической реализации. Сначала ClickHouse сортирует правую таблицу по ключам JOIN блоками и создаёт min-max индекс для отсортированных блоков. Затем он сортирует части левой таблицы по join key и выполняет JOIN с правой таблицей. Min-max индекс также используется для пропуска ненужных блоков правой таблицы.
  • direct
Алгоритм direct (также известный как nested loop) выполняет lookup в правой таблице, используя строки из левой таблицы в качестве ключей. Он поддерживается специальными хранилищами, такими как Dictionary, EmbeddedRocksDB и таблицы MergeTree. Для таблиц MergeTree алгоритм передаёт фильтры по ключу JOIN напрямую на уровень хранения. Это может быть эффективнее, если по ключу можно выполнять lookup с использованием индекса primary key таблицы; в противном случае для каждого блока левой таблицы выполняется полное сканирование правой таблицы. Поддерживает INNER и LEFT JOIN, а также только одно-столбцовые ключи join по равенству без дополнительных условий.
  • auto
Если установлено значение auto, сначала используется hash join, а затем алгоритм на лету переключается на другой, если превышается лимит памяти.
  • full_sorting_merge
Алгоритм sort-merge с полной сортировкой соединяемых таблиц перед выполнением JOIN.
  • prefer_partial_merge
ClickHouse всегда пытается использовать partial_merge join, если это возможно; в противном случае используется hash. Устарело, то же самое, что partial_merge,hash.
  • default (устарело)
Устаревшее значение, больше не используйте его. То же самое, что direct,hash, то есть сначала выполняется попытка использовать direct join, затем hash join (в таком порядке).

join_any_take_last_row

Изменяет поведение операций JOIN со строгостью ANY.
Этот параметр применяется только к операциям JOIN с таблицами, использующими движок Join.
Возможные значения:
  • 0 — Если в правой таблице есть несколько совпадающих строк, JOIN выполняется только с первой найденной.
  • 1 — Если в правой таблице есть несколько совпадающих строк, JOIN выполняется только с последней найденной.
См. также:

join_default_strictness

Устанавливает строгость по умолчанию для секций JOIN. Возможные значения:
  • ALL — Если в правой таблице есть несколько совпадающих строк, ClickHouse создаёт декартово произведение из совпадающих строк. Это стандартное поведение JOIN в SQL.
  • ANY — Если в правой таблице есть несколько совпадающих строк, присоединяется только первая найденная. Если в правой таблице есть только одна совпадающая строка, результаты ANY и ALL совпадают.
  • ASOF — Для соединения последовательностей при неточном совпадении.
  • Пустая строка — Если в запросе не указаны 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

Размер в байтах фильтра Блума, используемого в качестве runtime-фильтра для JOIN (см. настройку enable_join_runtime_filters).

join_runtime_bloom_filter_hash_functions

Количество хеш-функций в фильтре Блума, используемом в качестве runtime-фильтра для JOIN (см. настройку enable_join_runtime_filters).

join_runtime_bloom_filter_max_ratio_of_set_bits

Если доля установленных битов в runtime-фильтре Блума превышает этот порог, фильтр полностью отключается, чтобы уменьшить накладные расходы.

join_runtime_filter_blocks_to_skip_before_reenabling

Количество блоков, пропускаемых перед попыткой динамически повторно включить runtime-фильтр, который ранее был отключён из-за низкой эффективности фильтрации.

join_runtime_filter_exact_values_limit

Максимальное количество элементов runtime filter, которые хранятся в множестве в исходном виде; при превышении этого порога используется фильтр Блума.

join_runtime_filter_pass_ratio_threshold_for_disabling

Если отношение числа прошедших строк к числу проверенных строк превышает этот порог, runtime-фильтр считается недостаточно эффективным и отключается на следующие join_runtime_filter_blocks_to_skip_before_reenabling блоков, чтобы уменьшить накладные расходы.

join_to_sort_maximum_table_rows

Максимальное количество строк в правой таблице, при котором определяется, следует ли переупорядочить правую таблицу по ключу в LEFT JOIN или INNER JOIN.

join_to_sort_minimum_perkey_rows

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

join_use_nulls

Определяет поведение JOIN. При слиянии таблиц могут появляться пустые ячейки. ClickHouse заполняет их по-разному в зависимости от этой настройки. Возможные значения:
  • 0 — Пустые ячейки заполняются значением по умолчанию для типа соответствующего поля.
  • 1 — JOIN ведёт себя так же, как в стандартном SQL. Тип соответствующего поля преобразуется в Nullable, а пустые ячейки заполняются NULL.

joined_block_split_single_row

Разрешает разбивать результат hash join на фрагменты по строкам, соответствующим одной строке левой таблицы. Это может уменьшить использование памяти в случае строки с большим количеством совпадений в правой таблице, но может увеличить загрузку 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

Максимальный тайм-аут задержки перед повторной попыткой для общих операций Keeper

least_greatest_legacy_null_behavior

Если включено, функции ‘least’ и ‘greatest’ возвращают NULL, если один из аргументов равен NULL.

legacy_column_name_of_tuple_literal

Использует в именах столбцов больших литералов Tuple имена всех их элементов вместо hash. Этот параметр существует только из соображений совместимости. Его имеет смысл установить в ‘true’ при выполнении rolling update кластера с версии ниже 21.7 на более высокую.

lightweight_delete_mode

Режим внутреннего запроса обновления, выполняемого в рамках легковесного удаления. Возможные значения:
  • alter_update - выполнить запрос ALTER UPDATE, который создаёт тяжёлую мутацию.
  • lightweight_update - выполнить легковесное обновление, если это возможно; в противном случае выполнить ALTER UPDATE.
  • lightweight_update_force - выполнить легковесное обновление, если это возможно; в противном случае сгенерировать исключение.

lightweight_deletes_sync

То же, что и mutations_sync, но управляет только выполнением легковесных удалений. Возможные значения:
ValueDescription
0Мутации выполняются асинхронно.
1Запрос ожидает завершения легковесных удалений на текущем сервере.
2Запрос ожидает завершения легковесных удалений на всех репликах (если они есть).
3Запрос ожидает завершения легковесных удалений только на активных репликах. Поддерживается только для SharedMergeTree. Для ReplicatedMergeTree ведет себя так же, как mutations_sync = 2.
См. также Значение по умолчанию в Cloud: 1.

limit

Устанавливает максимальное количество строк в результате запроса. Это значение корректирует ограничение, заданное оператором LIMIT, так что ограничение, указанное в запросе, не может превышать ограничение, заданное этой настройкой. Возможные значения:
  • 0 — количество строк не ограничено.
  • Положительное целое число.

load_balancing

Задаёт алгоритм выбора реплик, используемый при распределённой обработке запросов. ClickHouse поддерживает следующие алгоритмы выбора реплик: См. также:

Random (по умолчанию)

load_balancing = random
Количество ошибок подсчитывается для каждой реплики. Запрос отправляется на реплику с наименьшим числом ошибок, а если таких реплик несколько — на любую из них. Недостатки: близость сервера не учитывается; если у реплик разные данные, вы также получите разные данные.

Ближайшее имя хоста

load_balancing = nearest_hostname
Количество ошибок подсчитывается для каждой реплики. Каждые 5 минут количество ошибок делится на 2 с округлением вниз. Таким образом, количество ошибок для недавнего периода рассчитывается с экспоненциальным сглаживанием. Если есть одна реплика с минимальным количеством ошибок (то есть на других репликах ошибки возникали недавно), запрос отправляется на неё. Если есть несколько реплик с одинаковым минимальным количеством ошибок, запрос отправляется на реплику, имя хоста которой наиболее похоже на имя хоста сервера в файле config (по числу различающихся символов в одинаковых позициях, до минимальной длины обоих имён хостов). Например, 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 Значение по умолчанию в Cloud: 1.

local_filesystem_read_method

Метод чтения данных из локальной файловой системы; одно из следующих значений: read, pread, mmap, io_uring, pread_threadpool. Метод ‘io_uring’ является экспериментальным и не работает для Log, TinyLog, StripeLog, File, Set и Join, а также других таблиц с файлами, допускающими дозапись, при одновременном чтении и записи. Если вы читали в Интернете разные статьи об ‘io_uring’, не стоит принимать их на веру. Это не лучший метод чтения файлов, кроме случаев с большим количеством мелких IO-запросов, что для 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 при включенной этой настройке, есть связанные представления (materialized views или live views), сведения о них записываются в лог, заданный параметром конфигурации сервера 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

Когда используется механизм приоритизации запросов (см. настройку priority), низкоприоритетные запросы ждут завершения запросов с более высоким приоритетом. Эта настройка определяет время ожидания.

make_distributed_plan

Строить распределённый план запроса.

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 использование памяти превышает этот порог, включается режим «внешняя агрегация» (сброс данных на диск).Рекомендуемое значение — половина доступной системной памяти.

max_bytes_before_external_join

Если задано ненулевое значение и join_algorithm имеет значение hash, parallel_hash, default или auto, hash JOIN будет автоматически преобразован в grace hash join, чтобы включить выгрузку на диск, когда объём данных с правой стороны превысит указанное количество байт. Если задано значение 0 (по умолчанию), этот абсолютный порог в байтах отключён, но автоматическая выгрузка всё равно может происходить через max_bytes_ratio_before_external_join (по умолчанию 0.5); задайте для обоих значение 0, чтобы полностью отключить автоматическую выгрузку. Это предотвращает оптимизацию чтения in order через JOIN.

max_bytes_before_external_sort

Значение по умолчанию в Cloud: половина объема памяти на реплику. Включает или отключает выполнение ORDER BY с использованием внешней памяти. См. Подробности реализации ORDER BY Если во время операции ORDER BY использование памяти превышает этот порог в байтах, включается режим «внешней сортировки» (сброс данных на диск). Возможные значения:
  • Максимальный объем оперативной памяти (в байтах), который может использовать одна операция ORDER BY. Рекомендуемое значение — половина доступной системной памяти
  • 0ORDER BY с использованием внешней памяти отключен.

max_bytes_before_remerge_sort

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

max_bytes_for_lazy_final

Максимальное количество байтов в наборе для оптимизации lazy FINAL. При превышении этого значения используется обычный FINAL.

max_bytes_in_distinct

Максимальный размер состояния в памяти (в несжатых байтах), используемого хеш-таблицей при применении DISTINCT.

max_bytes_in_join

Максимальный размер хеш-таблицы, используемой при JOIN таблиц, в байтах. Эта настройка применяется к операциям SELECT … JOIN и к движку таблицы Join. Если запрос содержит JOIN, ClickHouse проверяет эту настройку для каждого промежуточного результата. Когда лимит достигнут, ClickHouse может выполнить разные действия. Используйте настройку join_overflow_mode, чтобы выбрать нужное действие. Возможные значения:
  • Положительное целое число.
  • 0 — контроль памяти отключён.

max_bytes_in_set

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

max_bytes_ratio_before_external_group_by

Доля доступной памяти, которую разрешено использовать для GROUP BY. После достижения этого значения для агрегации будет использоваться внешняя память. Например, если задано значение 0.6, GROUP BY позволит использовать 60% доступной памяти (для server/user/merges) в начале выполнения, после чего начнёт использовать внешнюю агрегацию.

max_bytes_ratio_before_external_join

Доля доступной памяти, которую разрешено использовать для JOIN. При достижении этого значения hash join будет преобразован в grace hash join, чтобы выгружать данные с правой стороны на диск. Например, если задано 0.6, JOIN позволит использовать 60% доступной памяти (для server/user/merges) для хеш-таблицы правой стороны в начале выполнения; после этого начнется выгрузка на диск. Если заданы и max_bytes_before_external_join, и max_bytes_ratio_before_external_join, используется меньший из получившихся порогов. Если доля равна 0, применяется только абсолютная настройка. Действует только в случае, если join_algorithm имеет значение hash, parallel_hash, default или auto и настроен путь для временных данных.

max_bytes_ratio_before_external_sort

Доля доступной памяти, которую можно использовать для ORDER BY. После достижения этого порога применяется внешняя сортировка. Например, если установлено значение 0.6, ORDER BY позволит использовать 60% доступной памяти (для server/user/merges) в начале выполнения, после чего начнёт использовать внешнюю сортировку. Обратите внимание: значение 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>
См. также Значение по умолчанию в Cloud: 1000.

max_concurrent_queries_for_user

Максимальное количество одновременно выполняемых запросов для одного пользователя. Возможные значения:
  • Положительное целое число.
  • 0 — без ограничений.
Пример
<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>

max_consume_snapshots

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

max_distributed_connections

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

max_distributed_depth

Ограничивает максимальную глубину рекурсивных запросов к таблицам Distributed. Если это значение превышено, сервер генерирует исключение. Возможные значения:
  • Положительное целое число.
  • 0 — неограниченная глубина.

max_download_buffer_size

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

max_download_threads

Максимальное количество потоков для загрузки данных (например, для URL engine).

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, вам придется доверять не только удаленному серверу, но и своему интернет-провайдеру, а также всем сетям между вами и сервером. Значение по умолчанию в Cloud: 10.

max_hyperscan_regexp_length

Определяет максимальную длину каждого регулярного выражения в функциях hyperscan multi-match. Возможные значения:
  • Положительное целое число.
  • 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;
Результат:
Exception: Regexp length too large.
См. также

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;
Результат:
Exception: Total regexp lengths too large.
См. также

max_insert_block_size

Псевдонимы: max_insert_block_size_rows Максимальный размер блоков (по числу строк), формируемых для вставки в таблицу. Этот параметр управляет формированием блоков в двух контекстах:
  1. Разбор форматов: когда сервер разбирает построчные входные форматы (CSV, TSV, JSONEachRow и т. д.) через любой интерфейс (HTTP, clickhouse-client со встроенными данными, gRPC, по протоколу PostgreSQL), блоки формируются, когда:
    • достигнуты оба порога: min_insert_block_size_rows И min_insert_block_size_bytes, ИЛИ
    • достигнут любой из максимальных порогов: max_insert_block_size_rows ИЛИ max_insert_block_size_bytes
    Примечание: при использовании clickhouse-client или clickhouse-local для чтения из файла данные разбирает сам клиент, и этот параметр применяется на стороне клиента.
  2. Операции INSERT: во время запросов INSERT и при прохождении данных через materialized views поведение этого параметра зависит от use_strict_insert_block_limits:
    • Если включен: блоки формируются, когда:
      • Минимальные пороги (И): достигнуты оба порога min_insert_block_size_rows И min_insert_block_size_bytes
      • Максимальные пороги (ИЛИ): достигнут любой из порогов max_insert_block_size_rows ИЛИ max_insert_block_size_bytes
    • Если отключен: блоки формируются, когда достигнут min_insert_block_size_rows ИЛИ min_insert_block_size_bytes. Параметры max_insert_block_size не применяются.
Возможные значения:
  • Положительное целое число.

max_insert_block_size_bytes

Максимальный размер блоков (в байтах), формируемых для вставки в таблицу. Эта настройка работает вместе с max_insert_block_size_rows и управляет формированием блоков в том же контексте. Подробную информацию о том, когда и как применяются эти настройки, см. в описании max_insert_block_size_rows. Возможные значения:
  • Положительное целое число.
  • 0 — настройка не участвует в формировании блоков.

max_insert_delayed_streams_for_parallel_write

Максимальное количество потоков (столбцов), для которых откладывается окончательный сброс части. По умолчанию — auto (100, если нижележащее хранилище поддерживает параллельную запись, например S3, и отключено в противном случае) Значение по умолчанию в Cloud: 50.

max_insert_threads

Максимальное количество потоков для выполнения запроса INSERT SELECT. Возможные значения:
  • 0 (или 1) — для INSERT SELECT параллельное выполнение не используется.
  • Положительное целое число больше 1.
Значение по умолчанию в Cloud:
  • 1 для узлов с 8 GiB памяти
  • 2 для узлов с 16 GiB памяти
  • 4 для более крупных узлов
Параллельное выполнение INSERT SELECT имеет эффект только в том случае, если часть SELECT также выполняется параллельно, см. настройку max_threads. Более высокие значения приводят к большему использованию памяти.

max_insert_threads_min_free_memory_per_thread

То же, что и max_threads_min_free_memory_per_thread, но применяется к max_insert_threads, а не к max_threads. Значение по умолчанию выше, поскольку конвейеры вставки обычно используют более крупные буферы на поток (части MergeTree, блоки сжатия), чем конвейеры чтения. Если объем свободной памяти меньше значения max_insert_threads, умноженного на это значение, max_insert_threads уменьшается до допустимого уровня, но не ниже 1. Установите 0, чтобы отключить это ограничение.

max_joined_block_size_bytes

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

max_joined_block_size_rows

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

max_limit_for_vector_search_queries

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

max_local_read_bandwidth

Максимальная скорость локального чтения в байтах в секунду.

max_local_write_bandwidth

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

max_memory_usage

Значение по умолчанию в Cloud: зависит от объема оперативной памяти на реплике. Максимальный объем оперативной памяти, используемой для выполнения запроса на одном сервере. Значение 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. Например, если вы хотите установить для пользователя с именем clickhouse_read значение max_memory_usage_for_user, равное 1000 байт, можно использовать оператор
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

Максимальное количество реплик для каждого сегмента при выполнении запроса. Возможные значения:
  • Положительное целое число.
Дополнительная информация Этот параметр может давать разные результаты в зависимости от используемых настроек.

Параллельная обработка с использованием ключа SAMPLE

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

Параллельная обработка с использованием parallel_replicas_custom_key

Эта настройка полезна для любой реплицируемой таблицы.

max_parser_backtracks

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

max_parser_depth

Ограничивает максимальную глубину рекурсии в рекурсивном нисходящем анализаторе. Позволяет управлять размером стека. Возможные значения:
  • Положительное целое число.
  • 0 — глубина рекурсии не ограничена.

max_parsing_threads

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

max_partition_size_to_drop

Ограничение на удаление партиций на этапе выполнения запроса. Значение 0 означает, что партиции можно удалять без каких-либо ограничений. Значение по умолчанию в Cloud: 1 TB.
Эта настройка запроса переопределяет соответствующую настройку сервера, см. 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. Текст исключения следующий:
“Слишком много партиций для одного блока INSERT (partitions_count партиций, предел — ” + toString(max_partitions) + ”). Этот предел задается настройкой ‘max_partitions_per_insert_block’. Большое количество партиций — распространенное заблуждение. Это приведет к серьезному снижению производительности, включая медленный запуск сервера, медленные запросы INSERT и медленные запросы SELECT. Рекомендуемое общее количество партиций для таблицы — менее 1000..10000. Обратите внимание, что партиционирование не предназначено для ускорения запросов SELECT (ключа ORDER BY достаточно, чтобы диапазонные запросы выполнялись быстро). Партиции предназначены для манипуляций с данными (DROP PARTITION и т. д.).”
Эта настройка является защитным порогом, поскольку использование большого количества партиций — распространенное заблуждение.

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) оперативной памяти) и не подпадают под это ограничение.
max_query_size нельзя задать внутри SQL-запроса (например, SELECT now() SETTINGS max_query_size=10000), поскольку ClickHouse должен выделить буфер для разбора запроса, а размер этого буфера определяется настройкой max_query_size, которая должна быть задана до выполнения запроса.

max_rand_distribution_parameter

Максимальное значение параметров формы распределения в функциях случайных распределений, таких как randChiSquared, randStudentT и randFisherF. Это предотвращает чрезмерно долгое время вычислений при экстремальных значениях параметров.

max_rand_distribution_trials

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

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

Отключает отстающие реплики для распределённых запросов. См. Репликация. Задаёт время в секундах. Если отставание реплики больше или равно заданному значению, эта реплика не используется. Возможные значения:
  • Положительное целое число.
  • 0 — отставание реплик не проверяется.
Чтобы исключить использование любой реплики с ненулевым отставанием, установите этот параметр в 1. Используется при выполнении SELECT из distributed таблицы, которая указывает на реплицированные таблицы.

max_result_bytes

Ограничивает размер результата в байтах (в несжатом виде). Запрос остановится после обработки блока данных, если порог достигнут, но последний блок результата обрезан не будет, поэтому размер результата может превысить порог. Ограничения Для этого порога учитывается размер результата в памяти. Даже если сам результат небольшой, он может ссылаться на более крупные структуры данных в памяти, такие как словари для столбцов LowCardinality и Arena для столбцов AggregateFunction, поэтому порог может быть превышен, несмотря на небольшой размер результата.
Этот параметр является довольно низкоуровневым и должен использоваться с осторожностью

max_result_rows

Значение по умолчанию в Cloud: 0. Ограничивает количество строк в результате. Проверяется также для подзапросов и на удалённых серверах при выполнении частей распределённого запроса. Если значение равно 0, ограничение не применяется. Запрос остановится после обработки блока данных, если порог достигнут, но последний блок результата обрезан не будет, поэтому размер результата может превышать порог.

max_reverse_dictionary_lookup_cache_size_bytes

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

max_rows_for_lazy_final

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

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

Максимальный размер множества, используемого для фильтрации объединяемых таблиц по множествам строк друг друга перед выполнением 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

Максимальное количество строк, которое можно прочитать из локальной таблицы на листовом узле при выполнении распределённого запроса. Хотя распределённые запросы могут отправлять несколько подзапросов к каждому сегменту (листовому узлу), это ограничение проверяется только на этапе чтения на листовых узлах и игнорируется на этапе слияния результатов на корневом узле. Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со 100 строками. Распределённый запрос, который должен прочитать все данные из обеих таблиц с настройкой max_rows_to_read=150, завершится ошибкой, так как всего будет 200 строк. Запрос с max_rows_to_read_leaf=150 выполнится успешно, поскольку листовые узлы прочитают не более 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 server. Пример:
<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

Для какого количества элементов разрешено суммарно заранее выделять место во всех хеш-таблицах перед aggregatio

max_size_to_preallocate_for_joins

Для какого количества элементов разрешено заранее выделять место во всех хеш-таблицах в сумме перед joi

max_skip_unavailable_shards_num

Когда skip_unavailable_shards включен, ограничивает максимальное количество сегментов, которые можно пропустить без ошибки. Если количество недоступных сегментов превышает это значение, вместо пропуска без ошибки генерируется исключение. Значение 0 означает отсутствие ограничения (поведение по умолчанию — можно пропустить все недоступные сегменты).

max_skip_unavailable_shards_ratio

Когда skip_unavailable_shards включен, ограничивает максимальную долю (от 0 до 1) сегментов, которые можно пропустить без уведомления. Если доля недоступных сегментов от общего числа сегментов превышает это значение, вместо пропуска без уведомления будет сгенерировано исключение. Значение 0 означает отсутствие ограничения (поведение по умолчанию — можно пропустить все недоступные сегменты).

max_streams_for_files_processing_in_cluster_functions

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

max_streams_for_merge_tree_reading

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

max_streams_for_union_step

Ограничивает количество одновременно активных потоков данных на шаге UNION (применяется как к UNION ALL, так и к UNION DISTINCT, поскольку UNION DISTINCT реализуется как шаг UNION ALL, за которым следует шаг DISTINCT). Когда запрос UNION содержит много подзапросов, все они одновременно открывают свои буферы чтения, из-за чего использование памяти становится пропорциональным количеству подзапросов. Эта настройка добавляет процессоры Concat, чтобы сузить конвейер и гарантировать, что одновременно активно не более указанного числа потоков, что значительно снижает пиковое потребление памяти. Фактическое ограничение — минимум из этого значения и max_threads * max_streams_for_union_step_to_max_threads_ratio (если любое из них равно 0, оно не учитывается). Если оба значения равны 0, сужение не применяется.

max_streams_for_union_step_to_max_threads_ratio

Это соотношение, умноженное на max_threads, задаёт ограничение на число одновременно активных потоков на шаге UNION (применяется как к UNION ALL, так и к UNION DISTINCT). Фактическое ограничение — минимум из этого вычисленного значения и max_streams_for_union_step (если любое из них равно 0, оно игнорируется). Например, при max_threads = 8 и значении этого соотношения 1 одновременно будет активно не более 8 потоков. Установите 0, чтобы отключить это ограничение, зависящее от соотношения.

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 TB.
Эта настройка запроса переопределяет соответствующую настройку сервера, см. 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’. Например, если нужное число записей находится в каждом block и max_threads = 8, то будут считаны 8 blocks, хотя достаточно было бы прочитать только один. Чем меньше значение max_threads, тем меньше расход памяти. По умолчанию значение настройки max_threads соответствует числу аппаратных потоков (числу ядер CPU), доступных ClickHouse. В особом случае для процессоров x86 с менее чем 32 ядрами CPU и SMT (например, Intel HyperThreading) ClickHouse по умолчанию использует число логических ядер (= 2 x число физических ядер). Без SMT (например, Intel HyperThreading) это соответствует числу ядер CPU. Для пользователей ClickHouse Cloud значение по умолчанию отображается как auto(N), где N соответствует размеру vCPU вашего сервиса, например 2vCPU/8GiB, 4vCPU/16GiB и т. д. Список всех размеров сервисов см. на вкладке Settings в консоли Cloud.

max_threads_for_indexes

Максимальное количество потоков для обработки индексов.

max_threads_min_free_memory_per_thread

Уменьшает max_threads, когда сервер испытывает нехватку памяти, чтобы не запускать сильно распараллеленные запросы, которые с высокой вероятностью упрутся в лимит памяти. Свободная память вычисляется как max_server_memory_usage сервера минус память, которая в данный момент учитывается глобальным трекер памяти. Если этой свободной памяти меньше, чем max_threads, умноженное на это значение, max_threads уменьшается до наибольшего N, для которого N * value <= free_memory, при минимальном значении 1. Установите 0, чтобы отключить это ограничение. Например, при значении по умолчанию 1 GiB и 32 GiB свободной памяти max_threads ограничивается значением 32; при 1 GiB свободной памяти оно снижается до 1. Эта настройка применяется к параллелизму на стороне чтения (SELECT, UNION, INTERSECT/EXCEPT и часть SELECT в INSERT ... SELECT). Для стороны записи см. max_insert_threads_min_free_memory_per_thread.

max_untracked_memory

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

max_wkb_geometry_elements

Максимальное количество точек, колец или полигонов, допустимое в одном элементе WKB-геометрии при разборе функцией readWKB и связанными с ней функциями. Это защищает от чрезмерного выделения памяти из-за некорректных данных WKB. Установите 0, чтобы использовать жёстко заданный предел (100 миллионов).

memory_overcommit_ratio_denominator

Определяет мягкий лимит памяти при достижении жёсткого лимита на глобальном уровне. Это значение используется для вычисления коэффициента оверкоммита памяти для запроса. Значение 0 означает, что запрос будет пропущен. Подробнее см. в разделе оверкоммит памяти.

memory_overcommit_ratio_denominator_for_user

Задает мягкий лимит памяти на уровне пользователя, который применяется при достижении жёсткого лимита. Это значение используется для вычисления коэффициента оверкоммита памяти для запроса. Значение 0 означает, что запрос будет пропущен. Подробнее см. в разделе оверкоммит памяти.

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’. Вероятность применяется к каждому alloc/free независимо от размера выделения памяти (это можно изменить с помощью 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

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

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. Количество гранул в stripe компактной части таблиц MergeTree, начиная с которого используется multibuffer reader, поддерживающий параллельное чтение и prefetch. При чтении из remote fs использование multibuffer reader увеличивает число read request.

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 не выполняет seek по файлу, а читает данные последовательно. Возможные значения:
  • Любое положительное целое число.

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 для типов JSON и Dynamic будет использоваться версия сериализации V1 вместо V2. Изменение этой настройки вступает в силу только после перезапуска сервера.

metrics_perf_events_enabled

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

metrics_perf_events_list

Список perf-метрик, разделённых запятыми, которые будут измеряться во время выполнения запросов. Пустое значение означает, что будут измеряться все события. Список доступных событий см. в PerfEventInfo в sources.

min_bytes_to_use_direct_io

Минимальный объём данных, необходимый для использования прямого ввода-вывода при доступе к диску хранилища. ClickHouse использует эту настройку при чтении данных из таблиц. Если общий объём всех данных, которые необходимо прочитать, превышает min_bytes_to_use_direct_io байт, ClickHouse читает данные с диска хранилища с опцией O_DIRECT. Возможные значения:
  • 0 — прямой ввод-вывод отключён.
  • Положительное целое число.

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_filtered_ratio_for_lazy_final

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

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

Минимальный размер блоков (в байтах), формируемых для вставки в таблицу. Этот параметр работает вместе с min_insert_block_size_rows и управляет формированием блоков в тех же контекстах (при разборе формата и в операциях INSERT). Подробную информацию о том, когда и как применяются эти параметры, см. в описании min_insert_block_size_rows. Возможные значения:
  • Положительное целое число.
  • 0 — параметр не участвует в формировании блоков.

min_insert_block_size_bytes_for_materialized_views

Задает минимальное количество байт в block, который может быть вставлен в таблицу запросом INSERT. Блоки меньшего размера объединяются в более крупные. Эта настройка применяется только к block, вставляемым в materialized view. Настраивая этот параметр, вы управляете объединением block при отправке в materialized view и избегаете чрезмерного использования памяти. Возможные значения:
  • Любое положительное целое число.
  • 0 — объединение отключено.
См. также

min_insert_block_size_rows

Минимальный размер блоков (в строках), формируемых для вставки в таблицу. Этот параметр управляет формированием блоков в двух контекстах:
  1. Разбор форматов: Когда сервер разбирает построчные форматы ввода (CSV, TSV, JSONEachRow и т. д.) через любой интерфейс (HTTP, clickhouse-client со встроенными данными, gRPC, PostgreSQL wire protocol), блоки формируются, когда:
    • Достигнуты оба значения min_insert_block_size_rows AND min_insert_block_size_bytes, OR
    • Достигнуто либо значение max_insert_block_size_rows OR max_insert_block_size_bytes
    Примечание: При использовании clickhouse-client или clickhouse-local для чтения из файла клиент сам разбирает данные, и этот параметр применяется на стороне клиента.
  2. Операции INSERT: Во время запросов INSERT и когда данные проходят через materialized view, поведение этого параметра зависит от use_strict_insert_block_limits:
    • Когда включен: Блоки формируются, когда:
      • Минимальные пороги (AND): достигнуты оба значения min_insert_block_size_rows AND min_insert_block_size_bytes
      • Максимальные пороги (OR): достигнуто либо значение max_insert_block_size_rows OR max_insert_block_size_bytes
    • Когда отключен (по умолчанию): Блоки формируются, когда достигнуто min_insert_block_size_rows OR min_insert_block_size_bytes. Параметры max_insert_block_size не применяются.
Возможные значения:
  • Положительное целое число.
  • 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 в строках (если алгоритм JOIN это поддерживает). Маленькие блоки будут укрупнены. 0 означает отсутствие ограничений.

min_os_cpu_wait_time_ratio_to_throw

Минимальное соотношение между временем ожидания CPU ОС (метрика OSCPUWaitMicroseconds) и временем занятости (метрика OSCPUVirtualTimeMicroseconds), при котором запросы могут начать отклоняться. Для вычисления вероятности используется линейная интерполяция между минимальным и максимальным соотношением; в этой точке вероятность равна 0.

min_outstreams_per_resize_after_split

Задаёт минимальное количество выходных потоков процессора Resize или StrictResize после выполнения разделения при генерации конвейера. Если итоговое количество потоков меньше этого значения, операция разделения не выполняется.

Что такое узел Resize

Узел Resize — это процессор в конвейере запроса, который изменяет количество потоков данных, проходящих через конвейер. Он может как увеличивать, так и уменьшать число потоков, чтобы сбалансировать рабочую нагрузку между несколькими потоками выполнения или процессорами. Например, если запросу требуется больший параллелизм, узел Resize может разделить один поток на несколько. И наоборот, он может объединить несколько потоков в меньшее число, чтобы укрупнить обработку данных. Узел Resize обеспечивает равномерное распределение данных между потоками, сохраняя структуру блоков данных. Это помогает оптимизировать использование ресурсов и повысить производительность запроса.

Почему узел Resize нужно разделить

Во время выполнения конвейера за ExecutingGraph::Node::status_mutex центрального узла Resize возникает высокая конкуренция, особенно в средах с большим числом ядер. Это приводит к следующему:
  1. Растёт задержка при выполнении ExecutingGraph::updateNode, что напрямую влияет на производительность запросов.
  2. Избыточные такты CPU тратятся на конкуренцию за spin-lock (native_queued_spin_lock_slowpath), что снижает эффективность.
  3. Снижается загрузка CPU, что ограничивает параллелизм и пропускную способность.

Как разделяется узел 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

Если установлено значение true, скалярные подзапросы выполняются на узле-инициаторе и заменяются литеральными значениями в запросах 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, datetime64, date2Date32) включены по умолчанию.
  • decimal: преобразовывать типы NUMERIC и DECIMAL в Decimal, если это позволяет precision.
  • datetime64: преобразовывать типы DATETIME и TIMESTAMP в DateTime64 вместо DateTime, если precision не равна 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.
  • 0 - Использовать BLOB.
  • 1 - Использовать TEXT.

mysql_map_string_to_text_in_show_columns

Если параметр включен, тип данных ClickHouse String будет отображаться как TEXT в SHOW COLUMNS. Действует только при подключении через протокол MySQL.
  • 0 - Использовать BLOB.
  • 1 - Использовать TEXT.

mysql_max_rows_to_insert

Максимальное количество строк при батчевой вставке в MySQL для движка 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. Если значение равно 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_keeper_trace_probability

Вероятность запуска трассировки для запроса ZooKeeper — независимо от наличия родительской трассировки. Возможные значения:
  • ‘auto’ - Эквивалентно настройке opentelemetry_start_trace_probability
  • 0 — Трассировка отключена
  • от 0 до 1 — Вероятность (например, 1.0 = всегда включена)

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

Используйте ограничения, чтобы добавить условие индекса. Значение по умолчанию — 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_dictget_tuple_element

Переписывает tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) в dictGet('dict', 'b', key), чтобы избежать извлечения ненужных атрибутов словаря. Поддерживает позиционный (.1, .2, …) и именованный (.b) доступ, а также применяется к dictGetOrDefault, когда аргумент значения по умолчанию представляет собой константный кортеж или tuple(...) из констант.

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_dry_run_check_part

Если настройка включена, OPTIMIZE ... DRY RUN проверяет итоговую слитую часть с помощью checkDataPart. Если проверка не проходит, генерируется исключение.

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

Заменяет аргументы типа String в 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

Включает или отключает преобразование данных перед вставкой, как если бы для этого блока было выполнено слияние (в соответствии с движком таблицы). Возможные значения:
  • 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_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, если есть только одна часть данных с level > 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 run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSV;
Результат:
SELECT
    sum(__table1.a) AS `sum(a)`,
    tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
    tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
    divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1

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

Использовать приблизительное значение при оптимизации простого подсчета для хранилищ, поддерживающих такую оценку, например EmbeddedRocksDB. Возможные значения:
  • 0 — Оптимизация отключена.
    • 1 — Оптимизация включена.

optimize_trivial_count_query

Включает или отключает оптимизацию простого запроса SELECT count() FROM table с использованием метаданных MergeTree. Если вам требуется безопасность на уровне строк, отключите эту настройку. Возможные значения:
  • 0 — оптимизация отключена.
    • 1 — оптимизация включена.
См. также:

optimize_trivial_group_by_limit_query

Включает или отключает оптимизацию тривиального запроса SELECT key_expr FROM table GROUP BY key_expr LIMIT n (без агрегатных функций в списке SELECT, без секций HAVING/ORDER BY/LIMIT BY/window и без модификаторов GROUP BY) за счет установки max_rows_to_group_by = n + offset и group_by_overflow_mode = 'any'. Агрегация останавливается, как только будет получено n + offset различных ключей. Оптимизация не применяется, если пользователь явно установил для group_by_overflow_mode значение, отличное от any (чтобы сохранить явно заданную семантику throw/break), а также если пользователь уже задал более жесткое значение max_rows_to_group_by (в этом случае оптимизация ничего не меняет). Возможные значения:
  • 0 — Оптимизация отключена.
    • 1 — Оптимизация включена.

optimize_trivial_insert_select

Оптимизация тривиального запроса ‘INSERT INTO table SELECT … FROM TABLES’

optimize_truncate_order_by_after_group_by_keys

Удаляет завершающие элементы ORDER BY, если все ключи GROUP BY уже входят в префикс ORDER BY.

optimize_uniq_to_count

Переписывает uniq и его варианты (кроме uniqUpTo) в count, если подзапрос содержит DISTINCT или секцию GROUP BY.

optimize_use_implicit_projections

Автоматически выбирать неявные проекции для выполнения запроса 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. Требуется capability CAP_SYS_NICE, иначе настройка не имеет эффекта. Возможные значения: от -20 до 19.

page_cache_block_size

Размер блоков файла, сохраняемых в кэше страниц в пространстве пользователя, в байтах. Все чтения, проходящие через кэш, округляются вверх до значения, кратного этому размеру. Этот параметр можно настраивать на уровне отдельного запроса, но записи в кэше с разными размерами блоков нельзя использовать повторно. Изменение этого параметра фактически делает существующие записи в кэше недействительными. Большее значение, например 1 MiB, хорошо подходит для запросов с высокой пропускной способностью, а меньшее, например 64 KiB, — для точечных запросов с низкой задержкой.

page_cache_inject_eviction

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

page_cache_lookahead_blocks

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

page_cache_max_coalesced_bytes

Когда readBigAt заполняет кэш страниц в пространстве пользователя, последовательные промахи кэша объединяются в одно чтение из нижележащего хранилища. Эта настройка ограничивает размер одного такого объединённого чтения в байтах; более длинные последовательности промахов разбиваются на несколько чтений. Она ограничивает пиковое кратковременное использование памяти временным буфером при параллельных холодных чтениях. Большее значение уменьшает число HTTP-запросов при холодном сканировании Объектного хранилища; меньшее — снижает пиковое кратковременное использование памяти.

paimon_target_snapshot_id

Чтение заданного снимка на уровне запроса в инкрементальном режиме Paimon. Если значение >0, модуль чтения будет считывать только дельту для указанного snapshot_id, не продвигая зафиксированную водяную метку. По умолчанию: -1 (отключено)

parallel_distributed_insert_select

Включает параллельное распределённое выполнение запроса INSERT ... SELECT. Если выполняется запрос INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b, обе таблицы используют один и тот же кластер, и обе таблицы либо реплицируемые, либо нереплицируемые, то такой запрос обрабатывается локально на каждом сегменте. Возможные значения:
  • 0 — Отключено.
  • 1SELECT будет выполняться на каждом сегменте из базовой таблицы движка Distributed.
  • 2SELECT и INSERT будут выполняться на каждом сегменте из/в базовую таблицу движка Distributed.
Начиная с v25.4, INSERT ... SELECT из источника ReplicatedMergeTree или SharedMergeTree также можно распараллелить между репликами. Чтобы включить это:
  • parallel_distributed_insert_select = 2
  • enable_parallel_replicas = 1

parallel_hash_join_threshold

Когда используется алгоритм JOIN на основе хеширования, этот порог помогает выбрать между hash и parallel_hash (только если доступна оценка размера правой таблицы). Первый используется, когда известно, что размер правой таблицы меньше порога.

parallel_non_joined_rows_processing

Позволяет нескольким потокам параллельно обрабатывать строки из правой таблицы, не вошедшие в соединение, при RIGHT и FULL JOIN. Это может ускорить фазу обработки строк, не вошедших в соединение, при использовании алгоритма JOIN parallel_hash с большими таблицами. Если настройка отключена, такие строки обрабатываются одним потоком.

parallel_replica_offset

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

parallel_replicas_allow_in_with_subquery

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

parallel_replicas_allow_materialized_views

Разрешает использование материализованных представлений с параллельными репликами

parallel_replicas_allow_view_over_mergetree

Разрешает параллельным репликам выполнять внешний запрос простого представления над таблицами MergeTree (вместо внутреннего запроса представления), что улучшает распараллеливание между узлами. Также применяется к представлениям UNION ALL, все ветви которых читают из разных таблиц MergeTree.

parallel_replicas_connect_timeout_ms

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

parallel_replicas_count

Это внутренний параметр, который не следует использовать напрямую: он отражает деталь реализации режима «параллельных реплик». Для распределённых запросов этот параметр автоматически задаётся сервером-инициатором и равен числу параллельных реплик, участвующих в обработке запроса.

parallel_replicas_custom_key

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

parallel_replicas_custom_key_range_lower

Позволяет фильтру 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

Позволяет фильтру 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_filter_pushdown

Разрешает pushdown фильтров в той части запроса, которую параллельные реплики выбирают для выполнения

parallel_replicas_for_cluster_engines

Заменяет движки табличных функций на их варианты с суффиксом -Cluster

parallel_replicas_for_non_replicated_merge_tree

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

parallel_replicas_index_analysis_only_on_coordinator

Анализ индексов выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel_replicas_local_pla

parallel_replicas_insert_select_local_pipeline

Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами

parallel_replicas_local_plan

Построение локального плана для локальной реплики

parallel_replicas_mark_segment_size

Части виртуально делятся на сегменты для распределения между репликами при параллельном чтении. Этот параметр задает размер этих сегментов. Не рекомендуется изменять его, если вы не абсолютно уверены в своих действиях. Значение должно находиться в диапазоне [128; 16384]

parallel_replicas_min_number_of_rows_per_replica

Ограничивает число реплик, используемых в запросе, значением (оценочное число строк для чтения / min_number_of_rows_per_replica). Максимальное число по-прежнему ограничено значением ‘max_parallel_replicas’

parallel_replicas_mode

Тип фильтра, используемого с пользовательским ключом для параллельных реплик. default — использовать операцию взятия по модулю для пользовательского ключа, range — использовать фильтр диапазона для пользовательского ключа со всеми возможными значениями его типа.

parallel_replicas_only_with_analyzer

Для использования параллельных реплик анализатор должен быть включен. Если анализатор отключен, запрос выполняется локально, даже если включено параллельное чтение с реплик. Использование параллельных реплик без включенного анализатора не поддерживается

parallel_replicas_prefer_local_join

Если значение равно true, JOIN может быть выполнен с использованием алгоритма параллельных реплик, а все хранилища правой части JOIN относятся к семейству *MergeTree, то вместо GLOBAL JOIN будет использоваться локальный JOIN.

parallel_replicas_prefer_local_replica

Когда включено (по умолчанию), локальная реплика всегда включается в набор реплик, используемых для параллельного чтения. Когда отключено, локальная реплика не получает предпочтения, и реплики выбираются исключительно алгоритмом балансировки нагрузки. Это позволяет направлять запросы с max_parallel_replicas = 1 на другой хост, что может улучшить локальность кэша, когда множество коротких запросов распределено по кластеру.

parallel_replicas_support_projection

Оптимизация проекций может использоваться в параллельных репликах. Работает только при включенном 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, блоки левой таблицы при частичном соединении слиянием объединяются в более крупные. Используется до 2x указанного объема памяти на каждый поток, выполняющий JOIN.

partial_merge_join_rows_in_right_blocks

Ограничивает размер блоков данных из правой части JOIN в алгоритме частичного соединения слиянием для запросов JOIN. Сервер ClickHouse:
  1. Разбивает данные правой части JOIN на блоки, содержащие не более указанного числа строк.
  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

Приостанавливает цикл ожидания запроса на сервере на указанное количество секунд.

polyglot_dialect

Исходный SQL-диалект для transpiler polyglot (например, ‘sqlite’, ‘mysql’, ‘postgresql’, ‘snowflake’, ‘duckdb’).

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]

predicate_statistics_sample_rate

Собирает статистику селективности предикатов в system.predicate_statistics_log. Если задано значение N > 0, в выборку попадает примерно 1/N запросов (по Query id). Значение 0 отключает сбор.

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);
Результат:
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.
Запрос:
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 — доступ к таблицам, созданным внешними движками. Эта настройка помогает сократить количество обращений к внешним источникам при JOIN таких таблиц: только один вызов на запрос. См. также:

prefer_localhost_replica

Включает или отключает предпочтительное использование реплики localhost при обработке распределённых запросов. Возможные значения:
  • 1 — ClickHouse всегда отправляет запрос на реплику localhost, если она существует.
  • 0 — ClickHouse использует стратегию балансировки, заданную настройкой load_balancing.
Отключите эту настройку, если используете max_parallel_replicas без parallel_replicas_custom_key. Если задан parallel_replicas_custom_key, отключайте эту настройку только в том случае, если она используется в кластере с несколькими сегментами, содержащими несколько реплик. Если она используется в кластере с одним сегментом и несколькими репликами, отключение этой настройки приведёт к негативным последствиям.

prefer_warmed_unmerged_parts_seconds

Действует только в ClickHouse Cloud. Если слитая часть младше указанного количества секунд и не была предварительно прогрета (см. cache_populated_by_fetch), но все её исходные части доступны и предварительно прогреты, запросы SELECT будут читать данные из этих частей вместо неё. Только для Replicated-/SharedMergeTree. Обратите внимание, что здесь проверяется только то, была ли часть обработана CacheWarmer; если часть была помещена в кэш каким-то другим способом, она всё равно будет считаться холодной, пока до неё не доберётся CacheWarmer; если же она была прогрета, а затем вытеснена из кэша, она всё равно будет считаться прогретой.

preferred_block_size_bytes

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

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

Задаёт имя базы данных, используемой диалектом ‘promql’. Пустая строка означает текущую базу данных.

promql_evaluation_time

Псевдонимы: evaluation_time Задаёт время оценки для диалекта promql. auto означает текущее время.

promql_table

Указывает имя таблицы TimeSeries, используемой в диалекте ‘promql’.

push_external_roles_in_interserver_queries

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

query_cache_compress_entries

Сжимает записи в кэше запросов. Уменьшает потребление памяти кэша запросов ценой более медленной вставки в него и чтения из него. Возможные значения:
  • 0 - Отключено
  • 1 - Включено

query_cache_for_subqueries

Если настройка включена, результаты подзапросов могут записываться в query cache и считываться из него. Это позволяет распространять use_query_cache на все подзапросы. Возможные значения:
  • 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. Одинаковые запросы с разными метками считаются в query cache разными. Возможные значения:
  • Любая строка

query_cache_ttl

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

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

Включает или отключает оптимизацию агрегации в порядке сортировки на уровне плана запроса. Действует только в том случае, если значение настройки 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

Показывать в EXPLAIN PLAN внутренние псевдонимы (например, __table1) вместо псевдонимов, указанных в исходном запросе.

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, если ключи JOIN содержат префикс PRIMARY KEY в обеих таблицах. Поддерживается для алгоритмов hash, parallel_hash и full_sorting_merge. Обычно не ускоряет запросы, но может уменьшить потребление памяти.

query_plan_join_swap_table

Определяет, какая сторона JOIN должна использоваться в плане запроса как build-таблица (также называемая inner — та, которая помещается в хеш-таблицу при hash join). Эта настройка поддерживается только для strictness ALL с условием JOIN ON. Возможные значения:
  • ‘auto’: Позволяет planner определить, какую таблицу использовать в качестве build-таблицы.
    • ‘false’: Никогда не менять таблицы местами (build-таблица — правая таблица).
    • ‘true’: Всегда менять таблицы местами (build-таблица — левая таблица).

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_limit_for_top_k_optimization

Определяет максимальное значение LIMIT, при котором можно оценивать план запроса для оптимизации TopK с использованием индекса пропуска данных minmax и динамической пороговой фильтрации. Если значение равно нулю, ограничение не применяется.

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.

query_plan_merge_filters

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

query_plan_optimize_join_order_algorithm

Указывает, какие алгоритмы порядка JOIN следует применять при оптимизации плана запроса. Доступны следующие алгоритмы:
  • ‘greedy’ — базовый жадный алгоритм: работает быстро, но может не обеспечить наилучший порядок JOIN
  • ‘dpsize’ — реализует алгоритм DPsize, в настоящее время только для Inner JOIN, — перебирает все возможные порядки JOIN и находит оптимальный, но может работать медленно для запросов с большим количеством таблиц и предикатов JOIN. Можно указать несколько алгоритмов, например ‘dpsize,greedy’.

query_plan_optimize_join_order_limit

Оптимизирует порядок JOIN в пределах одного подзапроса. В настоящее время поддерживается только в очень ограниченном числе случаев. Значение — максимальное количество таблиц для оптимизации.

query_plan_optimize_join_order_randomize

Если значение не равно нулю, оптимизатор порядка JOIN использует случайно сгенерированные кардинальности и NDV вместо фактической статистики. Если установлено значение 1, генерируется начальное значение генератора случайных чисел; если установлено значение > 1, это значение напрямую используется как начальное значение генератора случайных чисел. Это предназначено для тестирования, чтобы выявлять ошибки, вызванные различным порядком JOIN.

query_plan_optimize_lazy_final

Оптимизирует чтение из ReplacingMergeTree с FINAL, формируя множество первичных ключей и используя его для анализа индекса.

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_read_in_order_through_join

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

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

Псевдонимы: optimize_read_in_window_order Включает или отключает оптимизацию на уровне плана запроса, которая использует порядок сортировки в хранилище при сортировке для оконных функций. Имеет эффект только при значении 1 для настройки query_plan_enable_optimizations.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
Возможные значения:
  • 0 - Отключено
  • 1 - Включено

query_plan_split_filter

Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
Включает или отключает оптимизацию на уровне плана запроса, которая разбивает фильтры на выражения. Действует только если для настройки query_plan_enable_optimizations установлено значение 1. Возможные значения:
  • 0 - Отключено
  • 1 - Включено

query_plan_text_index_add_hint

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

query_plan_top_k_through_join

Включает или отключает оптимизацию на уровне плана запроса, которая проталкивает ORDER BY ... LIMIT n через JOIN, если ключ сортировки ссылается только на столбцы сохраняемой стороны JOIN (LEFT/RIGHT). Ограничивает количество строк, которое должен вернуть вход сохраняемой стороны до выполнения JOIN. Действует только при значении 1 для настройки query_plan_enable_optimizations. Возможные значения:
  • 0 - Отключить
  • 1 - Включить
Включает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства. Действует только если для настройки query_plan_enable_optimizations установлено значение 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
Возможные значения:
  • 0 - Отключить
  • 1 - Включить

query_profiler_cpu_time_period_ns

Устанавливает период таймера процессорного времени для профилировщика запросов. Этот таймер учитывает только время CPU. Возможные значения:
  • Положительное целое число наносекунд. Рекомендуемые значения:
    • 10000000 (100 раз в секунду) наносекунд и более для отдельных запросов.
    • 1000000000 (один раз в секунду) для профилирования в масштабе всего cluster.
  • 0, чтобы отключить таймер.
См. также:
  • Системная таблица trace_log

query_profiler_real_time_period_ns

Задаёт период таймера реального времени для профилировщика запросов. Таймер реального времени отсчитывает фактическое время. Возможные значения:
  • Положительное целое число в наносекундах. Рекомендуемые значения:
    • 10000000 (100 раз в секунду) наносекунд и меньше для отдельных запросов.
    • 1000000000 (один раз в секунду) для профилирования всего кластера.
  • 0 для отключения таймера.
См. также:
  • Системная таблица trace_log
Значение по умолчанию в Cloud: 3000000000.

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. То же, что и read_from_filesystem_cache_if_exists_otherwise_bypass_cache, но для distributed cache.

read_from_filesystem_cache_if_exists_otherwise_bypass_cache

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

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_in_order_use_virtual_row_per_block

Если этот параметр включен вместе с read_in_order_use_virtual_row, после чтения каждого блока выдается виртуальная строка (а не только в начале каждой части). Это позволяет MergingSortedTransform чаще переприоритизировать источники, что полезно, когда последующие фильтры отбрасывают много строк, а данные распределены по частям неравномерно. Обратите внимание, что при этом отключается оптимизация read_in_order_use_buffering и предварительное слияние (read_in_order_two_level_merge_threshold) при чтении.

read_overflow_mode

Что делать, если лимит превышен.

read_overflow_mode_leaf

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

read_priority

Приоритет чтения данных из локальной или удалённой файловой системы. Поддерживается только для метода ‘pread_threadpool’ при работе с локальной файловой системой и для метода threadpool — с удалённой файловой системой.

read_through_distributed_cache

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

readonly

0 — без ограничений режима «только для чтения». 1 — только запросы на чтение, а также изменение явно разрешённых настроек. 2 — только запросы на чтение, а также изменение настроек, кроме настройки ‘readonly’.

receive_data_timeout_ms

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

receive_timeout

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

recursive_cte_max_steps_in_type_inference

Максимальное число итераций для вывода типов столбцов в рекурсивных CTE. Типы столбцов определяются путём итеративного применения getLeastSupertype к нерекурсивной и рекурсивной частям UNION ALL до достижения сходимости. Установите значение 0, чтобы отключить расширение типов и использовать только типы из нерекурсивной части.

regexp_dict_allow_hyperscan

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

regexp_dict_flag_case_insensitive

Использовать регистронезависимое сопоставление для словаря regexp_tree. Этот параметр можно переопределить в отдельных выражениях с помощью (?i) и (?-i).

regexp_dict_flag_dotall

Разрешает символу ’.’ сопоставляться с символами новой строки в словаре regexp_tree.

regexp_max_matches_per_row

Устанавливает максимальное число совпадений для одного регулярного выражения в одной строке. Используйте этот параметр, чтобы избежать перегрузки памяти при использовании жадного регулярного выражения в функции extractAllGroupsHorizontal. Possible values:
  • Положительное целое число.

reject_expensive_hyperscan_regexps

Отклонять шаблоны, обработка которых в Hyperscan, вероятно, потребует значительных ресурсов (из-за взрывного роста числа состояний NFA)

remerge_sort_lowered_memory_bytes_ratio

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

remote_filesystem_read_method

Метод чтения данных из удалённой файловой системы. Возможные значения: read, threadpool.

remote_filesystem_read_prefetch

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

remote_fs_read_backoff_max_tries

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

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 interface можно передать параметр ‘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. Значение по умолчанию в Cloud: 1.

result_overflow_mode

Значение по умолчанию в Cloud: throw Определяет, что делать, если объём результата превышает одно из ограничений. Возможные значения:
  • throw: сгенерировать исключение (по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
Использование ‘break’ похоже на использование LIMIT. Break прерывает выполнение только на уровне блока. Это означает, что количество возвращаемых строк будет больше, чем max_result_rows, будет кратно max_block_size и будет зависеть от max_threads. Пример
Query
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';

SELECT *
FROM numbers_mt(100000)
FORMAT Null;
Result
6666 rows in set. ...

rewrite_count_distinct_if_with_count_distinct_implementation

Позволяет переписывать countDistcintIf в соответствии с настройкой count_distinct_implementation. Возможные значения:
  • true — Разрешить.
  • false — Запретить.

rewrite_in_to_join

Переписывает выражения вида ‘x IN subquery’ в JOIN. Это может быть полезно для оптимизации всего запроса за счёт переупорядочивания JOIN.

rows_before_aggregation

Если включено, ClickHouse будет предоставлять точное значение статистики rows_before_aggregation, которая показывает количество строк, прочитанных до агрегаци

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

Ограничение на число S3 PUT-запросов в секунду до начала throttling. Ноль означает отсутствие ограничений.

s3_max_single_operation_copy_size

Максимальный размер одной операции копирования в S3. Этот параметр используется только если 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

Максимальный размер части, загружаемой при multipart-загрузке в S3.

s3_min_upload_part_size

Минимальный размер части, загружаемой при multipart-загрузке в S3.

s3_path_filter_limit

Максимальное число значений _path, которые можно извлечь из фильтров запроса и использовать для перебора файлов вместо листинга по glob-шаблону. 0 означает, что параметр отключён.

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 независимо от остальных.

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_uri_style

Принудительно задаёт стиль конечной точки S3. Возможные значения: auto, virtual_hosted, path.

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 interface. Possible values:
  • 0 — Отключено.
  • 1 — Включено.

send_table_structure_on_insert_with_inline_data

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

send_timeout

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

serialize_query_plan

Сериализация плана запроса для распределённой обработки

serialize_string_in_memory_with_zero_byte

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

session_timezone

Устанавливает неявный часовой пояс для текущего сеанса или запроса. Неявный часовой пояс — это часовой пояс, применяемый к значениям типа 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"
Назначьте внутреннему DateTime без явно указанного часового пояса часовой пояс сеанса ‘America/Denver’:
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 rows in set.

SELECT *, timeZone() FROM test_tz WHERE d = '2000-01-01 00:00:00' SETTINGS session_timezone = 'Asia/Novosibirsk'
┌───────────────────d─┬─timeZone()───────┐
2000-01-01 00:00:00 │ Asia/Novosibirsk │
└─────────────────────┴──────────────────┘
Это происходит из-за различий в конвейерах разбора:
  • toDateTime() без явно указанного часового пояса, используемая в первом запросе SELECT, учитывает настройку session_timezone и глобальный часовой пояс.
  • Во втором запросе значение DateTime разбирается из String и наследует тип и часовой пояс существующего столбца d. Поэтому настройка session_timezone и глобальный часовой пояс не учитываются.
См. также

set_overflow_mode

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

shared_merge_tree_sequential_consistency_initial_parts_update_backoff_ms

Начальная задержка в миллисекундах перед обновлением частей при использовании select_sequential_consistency с SharedMergeTree. Доступно только в ClickHouse Cloud.

shared_merge_tree_sequential_consistency_max_parts_update_backoff_ms

Максимальная задержка в миллисекундах перед повторной попыткой обновления частей при использовании select_sequential_consistency с SharedMergeTree. Доступно только в ClickHouse Cloud.

shared_merge_tree_sequential_consistency_parts_update_max_retries

Максимальное количество повторных попыток обновления частей при использовании select_sequential_consistency с SharedMergeTree. Доступно только в ClickHouse Cloud.

shared_merge_tree_sync_parts_on_partition_operations

Автоматически синхронизирует набор частей данных после операций MOVE|REPLACE|ATTACH с партициями в таблицах SMT. Только в ClickHouse Cloud

short_circuit_function_evaluation

Позволяет вычислять функции if, multiIf, and и or с использованием короткого замыкания. Это помогает оптимизировать выполнение сложных выражений в этих функциях и предотвращать возможные исключения (например, деление на ноль там, где оно не должно происходить). Возможные значения:
  • 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, от общего числа строк превышает этот порог, такие строки не вычисляются.

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

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

split_parts_ranges_into_intersecting_and_non_intersecting_final

Разделяет диапазоны частей на пересекающиеся и непересекающиеся при оптимизации FINAL

splitby_max_substrings_includes_remaining_string

Управляет тем, будет ли функция splitBy*() с аргументом max_substrings > 0 включать оставшуюся часть строки в последний элемент результирующего массива. Возможные значения:
  • 0 - Оставшаяся часть строки не будет включена в последний элемент результирующего массива.
  • 1 - Оставшаяся часть строки будет включена в последний элемент результирующего массива. Это соответствует поведению функции split() в Spark и метода ‘string.split()’ в Python.

stop_refreshable_materialized_views_on_startup

При запуске сервера предотвращает планирование refreshable materialized view, как если бы была выполнена команда SYSTEM STOP VIEWS. После этого их можно вручную запустить с помощью SYSTEM START VIEWS или SYSTEM START VIEW <name>. Также применяется к вновь созданным представлениям. Не влияет на materialized view без обновления по расписанию.

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, S3Queue, AzureQueue и NATS. Если есть присоединённые materialized views, запрос SELECT не разрешается, даже если эта настройка включена. Если присоединённых materialized views нет, включение этой настройки позволяет читать данные. Имейте в виду, что обычно прочитанные данные удаляются из очереди. Чтобы избежать удаления прочитанных данных, необходимо правильно настроить параметры соответствующего движка.

stream_like_engine_insert_queue

Когда движок потокового типа читает из нескольких очередей, при записи данных пользователю нужно выбрать одну очередь, в которую будет выполняться вставка. Используется в 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 │ Number of times when memory limit exceeded for query. │
└──────────────────────────┴───────┴───────────────────────────────────────────────────────┘

system_metric_log_show_zero_values_in_histograms

Определяет, записываются ли данные гистограмм с нулевыми значениями во вложенный столбец histograms таблицы system.metric_log. По умолчанию гистограммы, у которых общее число наблюдений count равно нулю, пропускаются, а в каждой записываемой гистограмме из map histogram также исключаются записи бакетов без наблюдений. Включите эту настройку, чтобы записывать каждую гистограмму и каждый бакет независимо от значения count — это полезно для систем мониторинга, которым требуется, чтобы каждая метрика присутствовала в каждой контрольной точке. Возможные значения:
  • 0 — Отключено. Гистограммы с count = 0 не записываются; записанные гистограммы включают только те бакеты, в которые попало хотя бы одно наблюдение.
  • 1 — Включено. Записываются все гистограммы, и в histogram присутствует каждая граница бакета.

table_engine_read_through_distributed_cache

Действует только в ClickHouse Cloud. Разрешает чтение из distributed cache через движки таблиц / табличные функции (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

Устанавливает кодек сжатия для временных файлов, используемых при операциях сортировки и JOIN на диске. Возможные значения:
  • LZ4 — применяется сжатие LZ4.
  • NONE — сжатие не применяется.

text_index_hint_max_selectivity

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

text_index_like_max_postings_to_read

Максимальное количество больших postings, считываемых, когда для оценки LIKE по текстовому индексу включено сканирование словаря. Требует включения use_text_index_like_evaluation_by_dictionary_scan.

text_index_like_min_pattern_length

Минимальная длина буквенно-цифровой искомой подстроки в шаблоне LIKE/ILIKE, необходимая для использования оценки LIKE текстовым индексом при сканировании словаря. Шаблоны короче этого порога соответствуют слишком большому количеству токенов словаря, поэтому они пропускаются, чтобы избежать ресурсоемкого сканирования. Требуется, чтобы use_text_index_like_evaluation_by_dictionary_scan был включен.

throw_if_no_data_to_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

Сгенерировать исключение, если внутри транзакции используется неподдерживаемый запрос

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

Включает или отключает сбор трассировок стека при каждом обновлении profile events вместе с именем события профиля и значением приращения, а также отправку этих данных в trace_log. Возможные значения:
  • 1 — трассировка profile events включена.
  • 0 — трассировка profile events отключена.

trace_profile_events_list

Когда настройка trace_profile_events включена, трассировка ограничивается указанным списком имен, разделенных запятыми. Если trace_profile_events_list — пустая строка (по умолчанию), трассируются все profile events. Пример значения: ‘DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes’ Эта настройка позволяет точнее собирать данные для большого числа запросов, поскольку в противном случае огромный объем событий может переполнить очередь внутреннего системного журнала, и часть из них будет отброшена.

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, перед выполнением update набор частей обновляется до последней версии.

url_base

Базовый URL, используемый для разрешения относительных URL в табличной функции url и движке таблицы URL. Если параметр задан, относительные URL разрешаются следующим образом:
  • URL, относительный к пути (например, data.csv): объединяется с путём базового URL согласно RFC 3986. Всё после последнего / в базовом пути заменяется относительным URL, поэтому завершающий слеш имеет значение: https://example.com/dir/ + data.csv = https://example.com/dir/data.csv, а https://example.com/dir + data.csv = https://example.com/data.csv. Если у базового URL нет пути (например, https://example.com), вставляется /: https://example.com/data.csv. Сегменты (./ и ../) в относительном URL нормализуются: https://example.com/dir/ + ../a.csv = https://example.com/a.csv.
  • URL, относительный к хосту (например, /test/data.csv): разрешается относительно схемы и хоста базового URL.
  • URL, относительный к схеме (например, //other.com/test/data.csv): разрешается с использованием схемы базового URL.
  • Ссылка, содержащая только строку запроса (например, ?x=1): добавляется к пути базового URL (заменяя существующие строку запроса и фрагмент).
  • Ссылка, содержащая только фрагмент (например, #frag): добавляется к базовому URL с сохранением строки запроса (заменяя существующий фрагмент).
  • Пустая ссылка: возвращает базовый URL без фрагмента.
Например, если url_base имеет значение https://example.com/def/, то:
  • data.csv разрешается в https://example.com/def/data.csv
  • /test/data.csv разрешается в https://example.com/test/data.csv
  • //other.com/test/data.csv разрешается в https://other.com/test/data.csv

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). Если отключено, позволяет использовать большее число потоков даже при перегрузке сервера (не рекомендуется для обычного использования и в основном требуется для тестов). Значение по умолчанию в Cloud: 0.

use_hash_table_stats_for_join_reordering

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

use_hedged_requests

Включает логику хеджированных запросов для удалённых запросов. Позволяет устанавливать несколько соединений с разными репликами для одного запроса. Новое соединение устанавливается, если существующее соединение с репликой не было установлено в течение hedged_connection_timeout или если в течение receive_data_timeout не были получены данные. Запрос использует первое соединение, которое отправляет непустой пакет Прогресс (или пакет данных, если allow_changing_replica_until_first_data_packet); остальные соединения отменяются. Поддерживаются запросы с max_parallel_replicas > 1. Включено по умолчанию. Значение по умолчанию в Cloud: 0.

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

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

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

use_page_cache_for_local_disks

Использовать кэш страниц в пространстве пользователя при чтении с локальных дисков. Применяется для тестирования и вряд ли улучшит производительность на практике. Требует local_filesystem_read_method = 'pread' или 'read'. Не отключает кэш страниц ОС; для этого можно использовать min_bytes_to_use_direct_io. Влияет только на обычные таблицы, но не на табличную функцию file() и не на движок таблицы File().

use_page_cache_for_object_storage

Использовать кэш страниц в пространстве пользователя при чтении из функций таблиц объектного хранилища (s3, azure, hdfs) и движков таблиц (S3, Azure, HDFS).

use_page_cache_with_distributed_cache

Использовать кэш страниц в пространстве пользователя при использовании distributed cache.

use_paimon_partition_pruning

Использовать отсечение партиций в табличных функциях Paimon

use_parquet_metadata_cache

Если настройка включена, формат Parquet может использовать кеш метаданных Parquet. Возможные значения:
  • 0 - Отключено
  • 1 - Включено

use_partition_pruning

Псевдонимы: use_partition_key Использовать ключ партиционирования для отсечения партиций при выполнении запроса в таблицах MergeTree. Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.

use_primary_key

Использовать первичный ключ для отсечения гранул при выполнении запроса в таблицах MergeTree. Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.

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 для позиционных удалений в 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_for_top_k

Включает использование индексов пропуска данных для фильтрации TopK. Когда настройка включена, если в запросе ORDER BY <column> LIMIT n для столбца существует minmax-индекс пропуска данных, оптимизатор попытается использовать его, чтобы пропускать гранулы, не влияющие на итоговый результат. Это может снизить задержку запроса. Возможные значения:
  • 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

/// предпочтительнее ‘allow_statistics_optimize’ для единообразия с ‘use_primary_key’ и ‘use_skip_indexes’ Позволяет использовать статистику для оптимизации запросов

use_statistics_cache

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

use_statistics_for_part_pruning

Использует статистику для фильтрации частей во время выполнения запроса. Когда включено, отсечение частей в запросах SELECT использует статистику столбцов (например, статистику MinMax), чтобы исключать части, которые не могут содержать подходящие данные, ещё до чтения данных. Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.

use_strict_insert_block_limits

Когда включена, строго соблюдаются и минимальные, и максимальные ограничения размера блока вставки. Блок формируется, когда:
  • Минимальные пороги (AND): достигнуты оба порога — min_insert_block_size_rows AND min_insert_block_size_bytes.
  • Максимальные пороги (OR): достигнут либо max_insert_block_size_rows, либо max_insert_block_size_bytes.
Когда отключена, блок формируется, когда:
  • Минимальные пороги (OR): достигнут либо min_insert_block_size_rows, либо min_insert_block_size_bytes.
Примечание: Если максимальные настройки меньше минимальных, приоритет имеют максимальные ограничения, и блоки будут формироваться до достижения минимальных порогов. Примечание: Эта настройка автоматически отключается для async inserts, поскольку async inserts добавляют токены дедупликации для каждой записи, которые несовместимы с разбиением блоков, необходимым для соблюдения строгих ограничений. По умолчанию отключена.

use_structure_from_insertion_table_in_table_functions

Использовать структуру таблицы, в которую выполняется вставка, вместо определения схемы по данным. Возможные значения: 0 — отключено, 1 — включено, 2 — автоматически

use_text_index_header_cache

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

use_text_index_like_evaluation_by_dictionary_scan

Включает обработку запросов LIKE/ILIKE путём сканирования словаря инвертированного текстового индекса.

use_text_index_postings_cache

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

use_text_index_tokens_cache

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

use_top_k_dynamic_filtering

Включает оптимизацию динамической фильтрации при выполнении запроса ORDER BY <column> LIMIT n. Если настройка включена, исполнитель запроса будет пытаться пропускать гранулы и строки, которые не попадут в итоговый набор строк top N. Эта оптимизация носит динамический характер, и снижение задержки зависит от распределения данных и наличия в запросе других предикатов. Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.

use_top_k_dynamic_filtering_for_variable_length_types

Разрешает применять use_top_k_dynamic_filtering, когда столбец сортировки имеет тип данных переменной длины (например, String, Array, Map, Tuple, содержащий элементы переменной длины). Для таких типов сравнение с порогом для каждой строки, выполняемое динамическим фильтром, может свести на нет получаемую выгоду, если в столбце преобладает лексикографический минимум (например, в основном пустые строки) и удаётся пропустить лишь небольшое число гранул. В таком случае динамический фильтр не уменьшает, а увеличивает задержку запроса. Когда этот параметр равен 0, динамическая фильтрация ограничивается столбцами, значения которых имеют фиксированный максимальный размер в памяти (числа, Date, DateTime, FixedString, Enum, Nullable таких типов, Tuple таких типов). Если задано значение 1, динамическая фильтрация также применяется к типам переменной длины. Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.

use_uncompressed_cache

Определяет, использовать ли кэш несжатых блоков. Допустимые значения: 0 или 1. По умолчанию — 0 (отключено). Использование кэша несжатых блоков (только для таблиц семейства MergeTree) может значительно снизить задержку и повысить пропускную способность при работе с большим количеством коротких запросов. Включайте эту настройку для пользователей, которые часто отправляют короткие запросы. Также обратите внимание на параметр конфигурации uncompressed_cache_size (задаётся только в файле config) — размер кэша несжатых блоков. По умолчанию он составляет 8 GiB. Кэш несжатых блоков заполняется по мере необходимости, а наименее используемые данные удаляются автоматически. Для запросов, читающих хотя бы относительно большой объём данных (один миллион строк или более), кэш несжатых блоков автоматически отключается, чтобы освободить место для действительно небольших запросов. Это означает, что параметр ‘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_variant_default_implementation_for_comparisons

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

use_with_fill_by_sorting_prefix

Столбцы, предшествующие столбцам WITH FILL в предложении ORDER BY, образуют префикс сортировки. Строки с разными значениями префикса сортировки заполняются независимо друг от друга

validate_enum_literals_in_operators

Если настройка включена, литералы enum в таких операторах, как IN, NOT IN, ==, !=, проверяются на соответствие типу enum; если литерал не является допустимым значением enum, будет сгенерировано исключение.

validate_mutation_query

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

validate_polygons

Включает или отключает генерирование исключения в функции pointInPolygon, если полигон самопересекающийся или самокасающийся. Возможные значения:
  • 0 — Генерирование исключения отключено. pointInPolygon принимает некорректные полигоны и может возвращать для них неверные результаты.
  • 1 — Генерирование исключения включено.

variant_throw_on_type_mismatch

При применении функции к столбцу Variant со стандартной реализацией определяет, что происходит со строками, фактический тип которых несовместим с функцией:
  • true (по умолчанию) — сгенерировать исключение.
  • false — вместо этого возвращать NULL для этих строк.

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 пересчёт оценок для запросов, использующих индекс векторного сходства. Без пересчёта оценок индекс векторного сходства сразу возвращает строки с наилучшими совпадениями. При пересчёте оценок результаты расширяются до уровня гранулы, после чего все строки в этой грануле проверяются повторно. В большинстве случаев пересчёт оценок лишь незначительно повышает точность, но при этом существенно снижает производительность запросов векторного поиска. Примечание: запрос, выполняемый без пересчёта оценок при включённых параллельных репликах, может переключиться на пересчёт оценок.

wait_changes_become_visible_after_commit_mode

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

wait_for_async_insert

Если true, ожидать обработки асинхронной вставки

wait_for_async_insert_timeout

Тайм-аут ожидания обработки асинхронной вставки

wait_for_window_view_fire_signal_timeout

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

webassembly_udf_max_fuel

Лимит fuel на одно выполнение экземпляра WebAssembly UDF. Каждая инструкция WebAssembly расходует некоторое количество fuel. Установите 0, чтобы снять ограничение.

webassembly_udf_max_input_block_size

Максимальное количество строк, передаваемых в WebAssembly UDF в одном block. Установите значение 0, чтобы обрабатывать все строки одновременно.

webassembly_udf_max_instances

Максимальное количество экземпляров WebAssembly UDF, которые могут выполняться параллельно для каждой функции.

webassembly_udf_max_memory

Лимит памяти в байтах для каждого экземпляра WebAssembly UDF.

window_view_clean_interval

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

window_view_heartbeat_interval

Интервал сигнала активности в секундах, показывающий, что watch-запрос активен.

рабочая нагрузка

Имя рабочей нагрузки для доступа к ресурсам

write_full_path_in_iceberg_metadata

Записывает полные пути (включая s3://) в файлы метаданных Iceberg.

write_through_distributed_cache

Действует только в ClickHouse Cloud. Разрешает запись в distributed cache (запись в S3 также выполняется через distributed cache)

write_through_distributed_cache_buffer_size

Действует только в ClickHouse Cloud. Задаёт размер буфера для distributed cache со сквозной записью. Если указано 0, используется размер буфера, который применялся бы без distributed cache.

zstd_window_log_max

Позволяет задать максимальный логарифм окна для ZSTD (не используется для семейства MergeTree)
Последнее изменение 10 июня 2026 г.