Все настройки, приведенные ниже, также доступны в таблице system.settings. Эти настройки автоматически генерируются из исходного кода.
Добавлять HTTP-заголовок CORS.
Дополнительное фильтрующее выражение, применяемое к результату запроса 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 │
└───┴──────┘
Дополнительное выражение фильтра, которое применяется после чтения
из указанной таблицы.
Пример
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 │
└───┴──────┘
Формат входных данных 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, чтобы отключить.
Максимальное суммарное количество входных токенов (промпта) во всех вызовах API функции ИИ в рамках одного запроса. Подсчитывается накопительно на основе ответов провайдера. Обратите внимание, что этот предел может быть превышен на количество входных токенов одного вызова, поскольку число входных токенов для вызова заранее неизвестно. Установите 0, чтобы отключить.
ai_function_max_output_tokens_per_query
Максимальное суммарное количество выходных токенов (completion) во всех вызовах API функции ИИ в рамках одного запроса. Подсчитывается накопительно на основе ответов провайдера. Обратите внимание, что этот предел может быть превышен на количество выходных токенов одного вызова, поскольку число выходных токенов для вызова заранее неизвестно. Установите 0, чтобы отключить.
Максимальное число повторных попыток при временных ошибках для каждого отдельного 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, сгенерированные исключения могут иметь неожиданные коды ошибок.
Если установлено значение 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, используя устаревший синтаксис определения движка
Если задано значение true, пользователю разрешается выполнять распределённые DDL-запросы.
Разрешает запросы 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_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. Возможные значения:
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.
Разрешает использовать функцию getClientHTTPHeader, которая позволяет получать значение заголовка текущего HTTP-запроса. По соображениям безопасности этот параметр по умолчанию отключен, поскольку некоторые заголовки, например Cookie, могут содержать конфиденциальную информацию. Обратите внимание, что заголовки X-ClickHouse-* и Authentication всегда недоступны, и получить их с помощью этой функции нельзя.
Разрешает использование функций, работающих с библиотекой 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
По умолчанию разрешает переопределение полей именованных коллекций.
Разрешает выполнять 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 разрешает менять их порядок для оптимизации фильтрации
Определяет, разрешён ли 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 — Разрешить.
Используйте эту настройку только для обеспечения обратной совместимости, если ваши сценарии использования зависят от старого синтаксиса.
Разрешает использовать библиотеку simdjson в функциях ‘JSON*’, если доступны инструкции AVX2. Если параметр отключён, используется rapidjson.
Позволяет выводить столбцы со специальными видами сериализации, такими как Sparse и Replicated, без преобразования в представление полного столбца.
Это помогает избежать лишнего копирования данных при форматировании.
Псевдонимы: allow_experimental_statistics
Позволяет задавать для столбцов статистику и управлять статистикой.
allow_statistics_optimize
Псевдонимы: allow_statistic_optimize
Разрешает использовать статистику для оптимизации запросов
При значении true можно указывать бессмысленные кодеки сжатия.
allow_suspicious_fixed_string_types
В операторе CREATE TABLE разрешает создавать столбцы типа FixedString(n) при n > 256. FixedString длиной >= 256 выглядит подозрительно и, скорее всего, указывает на некорректное использование
Отклоняет основные/вторичные индексы и ключи сортировки с одинаковыми выражениями
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 PARTITION │ 202101 │ 202101_7_7_0 │ 202101_5_5_0 │
│ ATTACH PARTITION │ 202101 │ 202101_8_8_0 │ 202101_6_6_0 │
└──────────────────┴──────────────┴──────────────┴───────────────┘
ALTER TABLE test FREEZE SETTINGS alter_partition_verbose_result = 1;
┌─command_type─┬─partition_id─┬─part_name────┬─backup_name─┬─backup_path───────────────────┬─part_backup_path────────────────────────────────────────────┐
│ FREEZE ALL │ 202101 │ 202101_7_7_0 │ 8 │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_7_7_0 │
│ FREEZE ALL │ 202101 │ 202101_8_8_0 │ 8 │ /var/lib/clickhouse/shadow/8/ │ /var/lib/clickhouse/shadow/8/data/default/test/202101_8_8_0 │
└──────────────┴──────────────┴──────────────┴─────────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────┘
Псевдонимы: replication_alter_partitions_sync
Позволяет указать, как ожидать выполнение действий на репликах для запросов ALTER, OPTIMIZE или TRUNCATE.
Возможные значения:
0 — Не ждать.
1 — Ждать выполнения на текущей реплике.
2 — Ждать выполнения на всех репликах.
3 - Ждать только активные реплики.
Значение по умолчанию в Cloud: 0.
alter_sync применим только к таблицам Replicated и SharedMergeTree; для таблиц без Replicated или Shared при выполнении ALTER он ничего не делает.
Режим для запросов 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).
При включении анализатор разворачивает обычные (нематериализованные, непараметризованные) представления в их определяющие подзапросы, что делает возможными сквозные оптимизации, такие как 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 — Устаревшее поведение включено.
См. также:
Включает отфильтровывание строк, удалённых с помощью легковесного DELETE. Если параметр отключён, запрос сможет читать эти строки. Это полезно для отладки и сценариев “восстановления удалённых данных”
Если установлено значение true, мутации (UPDATE и DELETE), которые не материализованы в части данных, будут применяться при выполнении SELECT.
Если значение равно 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)
Если установлено значение false (по умолчанию), AST-фаззер на стороне сервера (управляется параметром ast_fuzzer_runs) выполняет фаззинг только запросов в режиме только для чтения (SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS). Если true, фаззингу подвергаются все типы запросов, включая DDL и INSERT.
Включает серверный 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 - включено
Если значение равно 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, это минимальное время ожидания перед сбросом собранных данных для каждого запроса с момента появления первых данных. Оно также служит начальным значением для адаптивного алгоритма
Для асинхронных запросов 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
Включает асинхронное создание соединений и отправку запросов при выполнении удаленного запроса.
Включено по умолчанию.
Включает асинхронное чтение из сокета при выполнении удаленного запроса.
Включено по умолчанию.
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.
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.
Максимальное количество запросов, которые можно выполнять одновременно до достижения ограничения на количество запросов в секунду. По умолчанию (0) равно azure_max_get_rps
Ограничение на число Azure GET-запросов в секунду до начала throttling. Ноль означает отсутствие ограничений.
azure_max_inflight_parts_for_one_file
Максимальное количество частей, одновременно загружаемых в запросе multipart-загрузки. 0 означает отсутствие ограничений.
Максимальное количество запросов, которые можно отправить одновременно до достижения лимита запросов в секунду. По умолчанию (0) равно azure_max_put_rps
Ограничение на количество Azure PUT-запросов в секунду до начала троттлинга. Ноль означает отсутствие ограничений.
Максимально допустимое количество перенаправлений 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. Если один вызов TCP на чтение или запись блокируется на это время, операция завершается с ошибкой.
Максимальное число повторных попыток в Azure SDK
azure_sdk_retry_initial_backoff_ms
Минимальная задержка между повторными попытками в Azure SDK
azure_sdk_retry_max_backoff_ms
Максимальная задержка между повторными попытками в Azure SDK
Включает или отключает пропуск пустых файлов в движке 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 возвращает пустой результат.
Включает или отключает выполнение 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 независимо от остальных.
Действует только в 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 будут возвращать значение по умолчанию вместо того, чтобы сгенерировать исключение при ошибке преобразования.
Включает или отключает сохранение типа данных 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_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) не нарушит ссылочную целостность зависимостей
Проверьте, что DDL-запрос (например, DROP TABLE или RENAME) не нарушает зависимости
Проверять контрольные суммы при чтении. Этот параметр включен по умолчанию и в продакшне всегда должен оставаться включенным. Не стоит ожидать какой-либо пользы от отключения этого параметра. Его можно использовать только для экспериментов и бенчмарков. Параметр применим только к таблицам семейства MergeTree. Для других движков таблиц, а также при получении данных по сети контрольные суммы проверяются всегда.
Режим Cloud
Значение по умолчанию в Cloud: 1.
cloud_mode_database_engine
Движок базы данных, допустимый в Cloud. 1 — переписывать DDL-запросы с использованием базы данных Replicated, 2 — переписывать DDL-запросы с использованием базы данных Shared
Значение по умолчанию в Cloud: 2.
Семейство движков, разрешённых в 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 заставляет 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-компиляции.
См. также
Компилирует некоторые скалярные функции и операторы в нативный код.
Компиляция описания сортировки в нативный код.
Тайм-аут соединения, если реплики отсутствуют.
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.
Если задано значение 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
Управляет типом JOIN в декоррелированном плане запроса. Значение по умолчанию — right, то есть декоррелированный план будет содержать RIGHT JOIN, где подзапрос находится в правой части.
Возможные значения:
left - В процессе декорреляции будут создаваться LEFT JOIN, и входная таблица будет находиться в левой части.
right - В процессе декорреляции будут создаваться RIGHT JOIN, и входная таблица будет находиться в правой части.
Используйте выражения фильтрации, чтобы выявлять эквивалентные выражения и подставлять их вместо создания CROSS JOIN.
Использовать буфер в памяти для входных данных коррелированных подзапросов, чтобы избежать их повторного вычисления.
count_distinct_implementation
Указывает, какая из функций uniq* используется для выполнения конструкции COUNT(DISTINCT …).
Возможные значения:
count_distinct_optimization
Преобразовывать count distinct в подзапрос с group by
count_matches_stop_at_empty_match
Прекращает подсчёт, как только шаблон регулярного выражения в функции countMatches даёт совпадение нулевой длины.
По умолчанию включает 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 — запросы будут выполняться без задержки.
Определяет, следует ли сгенерировать исключение, если нет прав на получение метаданных таблицы в движке базы данных 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
deduplicate_blocks_in_dependent_materialized_views
Включает или отключает проверку дедупликации для materialized view, получающих данные из таблиц Replicated*.
Возможные значения:
0 — Отключено.
1 — Включено.
Если параметр включен, ClickHouse выполняет дедупликацию блоков в materialized view, зависящих от таблиц Replicated*.
Этот параметр полезен, чтобы materialized view не содержали дублирующиеся данные, когда операция вставки повторяется из-за сбоя.
См. также
Включает или отключает дедупликацию блоков для 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.
Движок таблицы, используемый по умолчанию, если 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
└──────────────────────────────────────────────────────────────────────────┘
Позволяет задать параметр 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 в системную таблицу.
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 произошла ошибка.
Если значение равно 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.
Задаёт поведение в случае, если объём данных превышает одно из ограничений.
Возможные значения:
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
Сериализует распределенный план запроса для выполнения на репликах.
Изменяет поведение распределённых подзапросов.
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 изменяет выполнение запроса только при выполнении хотя бы одного из следующих условий:
- distributed_group_by_no_merge > 0.
- Запрос не содержит
GROUP BY/DISTINCT/LIMIT BY, но содержит ORDER BY/LIMIT.
- Запрос содержит
GROUP BY/DISTINCT/LIMIT BY вместе с ORDER BY/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 автоматически применяет эту оптимизацию, когда выражение ключа партиционирования детерминировано, а все столбцы, используемые в нём, входят в первичный ключ.
Такой автоматический вывод гарантирует, что строки с одинаковыми значениями первичного ключа всегда будут относиться к одной и той же партиции, поэтому можно безопасно избежать слияний между партициями.
Записывать информацию об операциях 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.
В таблице ниже показано, как эта настройка влияет на поведение различных функций даты и времени.
| Function | enable_extended_results_for_datetime_functions = 0 | enable_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 |
Использовать кэш для удалённой файловой системы. Этот параметр не включает и не отключает кэш для дисков (это нужно делать через 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 во время выполнения запроса. Использовать только для тестирования или отладки; не рекомендуется включать по умолчанию
Псевдонимы: allow_experimental_full_text_index
Если установлено значение true, разрешается использование текстового индекса.
enable_global_with_statement
Применять операторы WITH к запросам UNION и всем подзапросам
Включает или отключает использование pread для файлов HDFS. По умолчанию используется hdfsPread. Если параметр отключён, для чтения файлов HDFS будут использоваться hdfsRead и hdfsSeek.
Включает или отключает сжатие данных в ответе на HTTP-запрос.
Подробнее см. описание HTTP-интерфейса.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Выводит трассировку стека создателя задачи, если при выполнении задачи возникает исключение. По умолчанию отключён, чтобы избежать снижения производительности.
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_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 — Включено.
Использование
Рассмотрим следующие запросы:
SELECT count() FROM test_table WHERE date = '2018-10-10'
SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'
Если enable_optimize_predicate_expression = 1, время выполнения этих запросов будет одинаковым, потому что ClickHouse применяет WHERE к подзапросу во время его обработки.
Если enable_optimize_predicate_expression = 0, время выполнения второго запроса будет значительно больше, потому что условие WHERE применяется ко всем данным только после завершения подзапроса.
enable_optimize_predicate_expression_to_final_subquery
Разрешает проталкивание условия фильтрации в подзапрос с FINAL.
Включает или отключает сортировку с использованием синтаксиса 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, чтобы скрыть задержку доступа к памяти при работе с большими хеш-таблицами.
Псевдонимы: allow_experimental_time_time64_type
Позволяет создавать типы данных Time и Time64.
enable_unaligned_array_join
Разрешает ARRAY JOIN с несколькими массивами разных размеров. Когда эта настройка включена, массивы будут увеличены до размера самого длинного.
Позволяет включать и отключать декодирование/кодирование пути URI в таблицах движка URL.
По умолчанию отключено.
Если включено, дублирующиеся строки во время FINAL удаляются путём пометки строк как удалённых и их последующей фильтрации вместо слияния строк
enable_writes_to_query_cache
Если параметр включен, результаты запросов SELECT сохраняются в кэше запросов.
Возможные значения:
- 0 - Отключено
- 1 - Включено
Если настройка включена, разрешены только идентификаторы, содержащие буквы, цифры и символы подчеркивания.
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 возвращает пустой результат для пустого файла.
Если включено, ClickHouse будет возвращать точное значение статистики rows_before_limit_at_least, но для этого потребуется полностью прочитать данные до лимита
Устанавливает режим по умолчанию для запроса 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_kvp_max_pairs_per_row
Максимальное число пар, которое может возвращать функция extractKeyValuePairs. Используется для защиты от чрезмерного потребления памяти.
Определяет, следует ли учитывать экстремальные значения (минимумы и максимумы в столбцах результата запроса). Принимает значения 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. Время ожидания при блокировке кэша для резервирования места в файловом кэше
Действует только в ClickHouse Cloud. Время ожидания блокировки кэша для резервирования места в файловом кэше
filesystem_cache_max_download_size
Максимальный размер файлового кэша удалённой файловой системы, который можно загрузить в рамках одного запроса
Имя файлового кэша, используемое для движков таблиц без состояния или озёр данных
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, включая таблицы, участвующие в 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───┐
│ 1 │ second │
└─────┴────────┘
┌─key─┬─some──┐
│ 1 │ first │
└─────┴───────┘
SELECT * FROM test SETTINGS final = 1;
┌─key─┬─some───┐
│ 1 │ second │
└─────┴────────┘
SET final = 1;
SELECT * FROM test;
┌─key─┬─some───┐
│ 1 │ second │
└─────┴────────┘
finalize_projection_parts_synchronously
Если параметр включен, части проекций финализируются синхронно во время INSERT, что снижает пиковое потребление памяти ценой уменьшения параллелизма загрузки в S3. По умолчанию выходной поток каждой проекции остается активным, пока не будет финализирована вся часть (включая все проекции), что позволяет выполнять параллельно перекрывающиеся загрузки в S3, но увеличивает пиковое потребление памяти пропорционально числу проекций. Эта настройка влияет только на INSERT; операции merge и mutation уже финализируют проекции синхронно.
Задаёт формат данных для столбцов 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, если аргумент не используется в качестве ключа агрегации
Отключает выполнение запроса, если индекс по дате нельзя использовать.
Работает с таблицами семейства 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 до второго уровня.
Отключает выполнение запроса, если использование индекса по первичному ключу невозможно.
Работает с таблицами семейства MergeTree.
Если force_primary_key=1, ClickHouse проверяет, есть ли в запросе условие по первичному ключу, которое можно использовать для ограничения диапазонов данных. Если подходящего условия нет, генерируется исключение. Однако не проверяется, уменьшает ли это условие объём данных, которые нужно прочитать. Дополнительные сведения о диапазонах данных в таблицах MergeTree см. в разделе MergeTree.
force_remove_data_recursively_on_drop
Рекурсивно удаляет данные при выполнении запроса DROP. Позволяет избежать ошибки «Directory not empty», но может незаметно удалить отсоединённые данные
Форматтер ‘%e’ в функции ‘formatDateTime’ выводит дни месяца с одной цифрой с ведущим пробелом, например ’ 2’ вместо ‘2’.
Форматтер ‘%f’ в функции ‘formatDateTime’ для DateTime64 выводит только число цифр, соответствующее scale, а не фиксированные 6 цифр.
Форматтер «%f» в функции «formatDateTime» выводит один ноль вместо шести, если форматируемое значение не содержит дробной части секунды.
Форматтеры ‘%c’, ‘%l’ и ‘%k’ в функции ‘formatDateTime’ выводят месяцы и часы без начальных нулей.
Форматтер ‘%M’ в функциях ‘formatDateTime’ и ‘parseDateTime’ выводит/разбирает название месяца, а не минуты.
Включает или отключает fsync при записи файлов .sql. По умолчанию включено.
Отключать эту настройку имеет смысл, если на сервере есть миллионы маленьких таблиц, которые постоянно создаются и удаляются.
function_date_trunc_return_type_behavior
Позволяет изменить поведение типа результата функции dateTrunc.
Возможные значения:
- 0 - Если второй аргумент —
DateTime64/Date32, возвращаемый тип будет DateTime64/Date32 независимо от единицы времени в первом аргументе.
- 1 - Для
Date32 результатом всегда будет Date. Для DateTime64 результатом будет DateTime для единиц времени second и больше.
Выберите реализацию функции для конкретной целевой платформы или варианта (экспериментально). Если значение не задано, будут включены все варианты.
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 принимает (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
Определяет, что происходит, когда число уникальных ключей для агрегации превышает лимит:
throw: сгенерировать исключение
break: остановить выполнение запроса и вернуть частичный результат
any: продолжить агрегацию по ключам, которые попали в набор, но не добавлять в набор новые ключи.
Использование значения any позволяет выполнять приближённый GROUP BY. Качество
этого приближения зависит от статистической природы данных.
group_by_two_level_threshold
При каком количестве ключей начинается двухуровневая агрегация. 0 — порог не задан.
group_by_two_level_threshold_bytes
При каком размере состояния агрегации в байтах начинает использоваться двухуровневая агрегация. 0 — порог не задан. Двухуровневая агрегация используется, когда срабатывает хотя бы один из порогов.
Изменяет способ, которым секция 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).
Тайм-аут в миллисекундах на получение пакета 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.
Включает или отключает пропуск пустых файлов в таблицах с движком HDFS.
Возможные значения:
- 0 —
SELECT генерирует исключение, если пустой файл несовместим с запрошенным форматом.
- 1 —
SELECT возвращает пустой результат для пустого файла.
hdfs_throw_on_zero_files_match
Генерировать ошибку, если по правилам раскрытия glob не найдено ни одного файла.
Возможные значения:
- 1 —
SELECT генерирует исключение.
- 0 —
SELECT возвращает пустой результат.
Включает или отключает усечение файла перед вставкой в таблицах движка HDFS. Если параметр отключен, при попытке вставки в уже существующий файл в HDFS будет сгенерировано исключение.
Возможные значения:
- 0 — запрос
INSERT добавляет новые данные в конец файла.
- 1 — запрос
INSERT заменяет существующее содержимое файла новыми данными.
hedged_connection_timeout_ms
Тайм-аут при установлении соединения с репликой для hedged-запросов
highlight_max_matches_per_row
Задаёт максимальное количество выделяемых совпадений в строке в функции highlight. Используйте её для защиты от чрезмерного использования памяти при выделении сильно повторяющихся шаблонов в больших текстах.
Возможные значения:
- Положительное целое число.
hnsw_candidate_list_size_for_search
Размер динамического списка кандидатов при поиске в индексе векторного сходства, также известный как ‘ef_search’.
Срок действия HSTS. Значение 0 отключает HSTS.
Тайм-аут HTTP-соединения (в секундах).
Возможные значения:
- Любое положительное целое число.
- 0 — отключено (бесконечный тайм-аут).
Не отправляйте HTTP-заголовки X-ClickHouse-Progress чаще, чем через указанный интервал.
Максимальное время в секундах, отведенное на чтение всех заголовков HTTP-запроса. Это общий предельный срок для всего этапа разбора заголовков, а не тайм-аут отдельной операции чтения. Защищает от атак типа slowloris, при которых клиент медленно передает данные заголовков, чтобы удерживать соединения открытыми.
Настройка http_make_head_request позволяет выполнять запрос HEAD при чтении данных по HTTP, чтобы получить информацию о файле, например его размер. Поскольку она включена по умолчанию, в случаях, когда сервер не поддерживает запросы HEAD, может быть целесообразно отключить эту настройку.
Максимальная длина имени поля в HTTP-заголовке
http_max_field_value_size
Максимальная длина значения поля HTTP-заголовка
Максимальное количество полей в HTTP-заголовке
Ограничение на размер содержимого multipart/form-data. Этот параметр нельзя задать через параметры URL, его следует задавать в профиле пользователя. Обратите внимание, что содержимое разбирается, а внешние таблицы создаются в памяти до начала выполнения запроса. Это единственное ограничение, которое действует на этом этапе (ограничения на максимальное использование памяти и максимальное время выполнения не действуют при чтении данных HTTP-формы).
Максимальный суммарный размер всех заголовков HTTP-запроса (включая имена и значения) в байтах.
http_max_request_param_data_size
Ограничение на размер данных запроса, используемых как параметр запроса в предопределённых HTTP-запросах.
Максимальное число попыток чтения по HTTP.
Задаёт максимальную длину URI HTTP-запроса.
Возможные значения:
- Положительное целое число.
http_native_compression_disable_checksumming_on_decompress
Включает или отключает проверку контрольной суммы при распаковке данных HTTP POST, полученных от клиента. Используется только для native-формата сжатия ClickHouse (не применяется с gzip или deflate).
Подробнее см. описание HTTP-интерфейса.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Тайм-аут получения данных по HTTP (в секундах).
Возможные значения:
- Любое положительное целое число.
- 0 — отключено (бесконечный тайм-аут).
http_response_buffer_size
Количество байтов, буферизуемых в памяти сервера перед отправкой HTTP-ответа клиенту или записью на диск (если включён параметр http_wait_end_of_query).
Позволяет добавлять или переопределять HTTP-заголовки, которые сервер возвращает в ответе на успешно выполненный запрос.
Это влияет только на HTTP-интерфейс.
Если заголовок уже задан по умолчанию, указанное значение переопределит его.
Если заголовок не задан по умолчанию, он будет добавлен в список заголовков.
Заголовки, которые сервер задаёт по умолчанию и которые не переопределены этой настройкой, останутся без изменений.
Эта настройка позволяет задать заголовок с фиксированным значением. В настоящее время задать заголовок с динамически вычисляемым значением нельзя.
Ни имена, ни значения не могут содержать управляющие символы ASCII.
Если вы разрабатываете приложение с графическим интерфейсом, которое позволяет пользователям изменять настройки, но при этом использует возвращаемые заголовки для принятия решений, рекомендуется ограничить эту настройку режимом только для чтения.
Пример: SET http_response_headers = '{"Content-Type": "image/png"}'
http_retry_initial_backoff_ms
Минимальная задержка в миллисекундах перед повторной попыткой чтения через http
http_retry_max_backoff_ms
Максимальная задержка в миллисекундах при повторных попытках чтения через http
Тайм-аут отправки по HTTP (в секундах).
Возможные значения:
- Любое положительное целое число.
- 0 — отключено (бесконечный тайм-аут).
Применимо только к профилю по умолчанию. Чтобы изменения вступили в силу, требуется перезагрузка сервера.
http_skip_not_found_url_for_globs
Пропускать URL-адреса для глоб-шаблонов при ошибке HTTP_NOT_FOUND
Включает буферизацию HTTP-ответов на стороне сервера.
Записывает Исключение в выходной формат, чтобы обеспечить корректный вывод. Работает с форматами 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.
Метод сжатия файла .metadata.json.
Управляет уровнем журналирования метаданных для 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 из удалённого каталога пропускается, если существует кэшированный снимок метаданных новее заданного окна устаревания. Ноль означает, что последняя версия метаданных всегда запрашивается из удалённого каталога. Ненулевое значение этой настройки означает компромисс: допустимое устаревание в обмен на меньшую задержку операций чтения.
iceberg_orphan_files_older_than_seconds
Порог возраста по умолчанию в секундах для удаления файлов-сирот в таблицах Iceberg. Файлы новее этого значения не считаются сиротами. Используется, если в вызове процедуры remove_orphan_files() опущен аргумент older_than. Значение по умолчанию — 259200 (3 дня).
Выполняет запрос к таблице Iceberg с использованием указанного идентификатора снимка.
Выполняет запрос к таблице Iceberg, используя снимок, который был актуален на указанную временную метку.
Тайм-аут закрытия бездействующих 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). Используется в целях тестирования
Если включено, 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.
Разрешает писать простые запросы SELECT без ключевого слова SELECT в начале, что удобно при использовании в качестве калькулятора: например, 1 + 2 становится допустимым запросом.
В clickhouse-local эта возможность включена по умолчанию, но её можно явно отключить.
implicit_table_at_top_level
Если значение не пустое, запросы без FROM на верхнем уровне будут читать данные из этой таблицы вместо system.one.
Это используется в clickhouse-local для обработки входных данных.
Параметр можно явно задать пользователю, но он не предназначен для такого использования.
Подзапросы этим параметром не затрагиваются (ни скалярные, ни подзапросы в FROM, ни подзапросы в IN).
SELECT на верхнем уровне цепочек UNION, INTERSECT и EXCEPT обрабатываются единообразно и подпадают под действие этого параметра независимо от их группировки скобками.
Не определено, как этот параметр влияет на представления и распределённые запросы.
Параметр принимает имя таблицы (в этом случае таблица определяется в текущей базе данных) или полное имя в формате ‘database.table’.
Имена базы данных и таблицы должны быть без кавычек — допускаются только простые идентификаторы.
Если параметр включен и запрос еще не выполняется внутри транзакции, запрос оборачивается в полную транзакцию (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 (для таблиц 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 — максимальный тайм-аут не ограничен
Включает или отключает вставку значений по умолчанию вместо NULL в столбцы с типом данных, не являющимся Nullable.
Если тип столбца не Nullable и эта настройка отключена, вставка NULL вызывает исключение. Если тип столбца Nullable, значения NULL вставляются как есть независимо от этой настройки.
Эта настройка применима к запросам INSERT … SELECT. Обратите внимание, что подзапросы SELECT могут быть объединены оператором UNION ALL.
Возможные значения:
- 0 — Вставка
NULL в столбец, не являющийся Nullable, вызывает исключение.
- 1 — Вместо
NULL вставляется значение столбца по умолчанию.
Включает запись с кворумом.
- Если
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. Если параметр включен, дополнительные запросы INSERT можно отправлять, пока предыдущие еще не завершились. Если параметр отключен, дополнительные записи в ту же таблицу будут отклонены.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
См. также:
Тайм-аут записи в кворум в миллисекундах. Если тайм-аут истёк и запись ещё не была выполнена, ClickHouse сгенерирует исключение, и клиент должен повторить запрос, чтобы записать тот же блок в ту же или любую другую реплику.
См. также:
Если значение не равно 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 │
└────────┘
Интервал в микросекундах для проверки того, была ли отменена обработка запроса, и отправки информации о прогрессе.
Устанавливает режим INTERSECT по умолчанию. Возможные значения: пустая строка, ‘ALL’, ‘DISTINCT’. Если указана пустая строка, запрос без режима сгенерирует исключение.
jemalloc_collect_profile_samples_in_trace_log
Собирать в trace log образцы выделения и освобождения памяти jemalloc.
Включает профилировщик 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 используется.
Можно указать несколько алгоритмов; для конкретного запроса будет выбран подходящий в зависимости от kind/strictness и движка таблицы.
Возможные значения:
Используется 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 join. Это наиболее универсальная реализация, которая поддерживает все комбинации kind и strictness, а также несколько ключей JOIN, объединённых с помощью OR в секции JOIN ON.
При использовании алгоритма hash правая часть JOIN загружается в оперативную память.
Вариант hash join, который разбивает данные на бакеты и параллельно строит несколько хеш-таблиц вместо одной, чтобы ускорить этот процесс.
При использовании алгоритма parallel_hash правая часть JOIN загружается в оперативную память.
Вариант алгоритма 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 (также известный как nested loop) выполняет lookup в правой таблице, используя строки из левой таблицы в качестве ключей.
Он поддерживается специальными хранилищами, такими как Dictionary, EmbeddedRocksDB и таблицы MergeTree.
Для таблиц MergeTree алгоритм передаёт фильтры по ключу JOIN напрямую на уровень хранения. Это может быть эффективнее, если по ключу можно выполнять lookup с использованием индекса primary key таблицы; в противном случае для каждого блока левой таблицы выполняется полное сканирование правой таблицы.
Поддерживает INNER и LEFT JOIN, а также только одно-столбцовые ключи join по равенству без дополнительных условий.
Если установлено значение auto, сначала используется hash join, а затем алгоритм на лету переключается на другой, если превышается лимит памяти.
Алгоритм sort-merge с полной сортировкой соединяемых таблиц перед выполнением JOIN.
ClickHouse всегда пытается использовать partial_merge join, если это возможно; в противном случае используется hash. Устарело, то же самое, что partial_merge,hash.
Устаревшее значение, больше не используйте его.
То же самое, что direct,hash, то есть сначала выполняется попытка использовать direct join, затем hash join (в таком порядке).
Изменяет поведение операций JOIN со строгостью ANY.
Этот параметр применяется только к операциям JOIN с таблицами, использующими движок Join.
Возможные значения:
- 0 — Если в правой таблице есть несколько совпадающих строк, JOIN выполняется только с первой найденной.
- 1 — Если в правой таблице есть несколько совпадающих строк, JOIN выполняется только с последней найденной.
См. также:
Устанавливает строгость по умолчанию для секций 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 выводить результат в виде списка строк.
Определяет, какое действие выполняет 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. При слиянии таблиц могут появляться пустые ячейки. 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 до повторной попытки.
Возможные значения:
- Положительное целое число.
- 0 — бесконечный тайм-аут.
См. также:
Включает дополнительные проверки при операциях с KeeperMap. Например, позволяет сгенерировать исключение при вставке ключа, который уже существует
Максимальное количество повторных попыток для обычных операций 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 на более высокую.
Режим внутреннего запроса обновления, выполняемого в рамках легковесного удаления.
Возможные значения:
alter_update - выполнить запрос ALTER UPDATE, который создаёт тяжёлую мутацию.
lightweight_update - выполнить легковесное обновление, если это возможно; в противном случае выполнить ALTER UPDATE.
lightweight_update_force - выполнить легковесное обновление, если это возможно; в противном случае сгенерировать исключение.
То же, что и mutations_sync, но управляет только выполнением легковесных удалений.
Возможные значения:
| Value | Description |
|---|
0 | Мутации выполняются асинхронно. |
1 | Запрос ожидает завершения легковесных удалений на текущем сервере. |
2 | Запрос ожидает завершения легковесных удалений на всех репликах (если они есть). |
3 | Запрос ожидает завершения легковесных удалений только на активных репликах. Поддерживается только для SharedMergeTree. Для ReplicatedMergeTree ведет себя так же, как mutations_sync = 2. |
См. также
Значение по умолчанию в Cloud: 1.
Устанавливает максимальное количество строк в результате запроса. Это значение корректирует ограничение, заданное оператором LIMIT, так что ограничение, указанное в запросе, не может превышать ограничение, заданное этой настройкой.
Возможные значения:
- 0 — количество строк не ограничено.
- Положительное целое число.
Задаёт алгоритм выбора реплик, используемый при распределённой обработке запросов.
ClickHouse поддерживает следующие алгоритмы выбора реплик:
См. также:
Количество ошибок подсчитывается для каждой реплики. Запрос отправляется на реплику с наименьшим числом ошибок, а если таких реплик несколько — на любую из них.
Недостатки: близость сервера не учитывается; если у реплик разные данные, вы также получите разные данные.
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. Это позволяет точнее перебалансировать нагрузку запросов между репликами.
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
Использовать предвыборку при чтении данных из локальной файловой системы.
Определяет, сколько секунд запрос на блокировку будет ожидать перед завершением с ошибкой.
Тайм-аут блокировки используется для защиты от взаимных блокировок при выполнении операций чтения/записи с таблицами. Когда тайм-аут истекает и запрос на блокировку завершается ошибкой, сервер ClickHouse генерирует исключение “Locking attempt timed out! Possible deadlock avoided. Client should retry.” с кодом ошибки DEADLOCK_AVOIDED.
Возможные значения:
- Положительное целое число (в секундах).
- 0 — без тайм-аута блокировки.
Задаёт значение для поля 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; │
└─────────────┴───────────┘
Позволяет записывать отформатированные запросы в системную таблицу system.query_log (заполняет столбец formatted_query в system.query_log).
Возможные значения:
- 0 — Отформатированные запросы не записываются в системную таблицу.
- 1 — Отформатированные запросы записываются в системную таблицу.
Записывает в таблицу system.processors_profile_log время, которое процессор потратил на выполнение и ожидание данных.
См. также:
Записывает статистику производительности выполнения запросов в query_log, query_thread_log и query_views_log.
Настройка логирования запросов.
Запросы, отправленные в ClickHouse при включении этой настройки, записываются в соответствии с правилами параметра конфигурации сервера query_log.
Пример:
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 (любой запрос)
Минимальный тип записи в 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'
Позволяет пользователю записывать в системные таблицы query_log, query_thread_log и query_views_log только случайную выборку запросов, отобранных с указанной вероятностью. Это помогает снизить нагрузку при большом количестве запросов в секунду.
Возможные значения:
- 0 — Запросы не записываются в системные таблицы.
- Положительное число с плавающей точкой в диапазоне [0..1]. Например, если значение настройки равно
0.5, в системные таблицы записывается примерно половина запросов.
- 1 — Все запросы записываются в системные таблицы.
Записывать настройки запроса в query_log и журнал спанов OpenTelemetry.
Включает логирование потоков запросов.
Потоки запросов записываются в таблицу system.query_thread_log. Этот параметр действует только в том случае, если log_queries имеет значение true. Потоки запросов, выполняемых ClickHouse при включенной этой настройке, записываются в соответствии с правилами параметра конфигурации сервера query_thread_log.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Пример
Включает журналирование представлений запросов.
Если у запроса, выполняемого ClickHouse при включенной этой настройке, есть связанные представления (materialized views или live views), сведения о них записываются в лог, заданный параметром конфигурации сервера query_views_log.
Пример:
Разрешает или ограничивает использование типа данных 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), низкоприоритетные запросы ждут завершения запросов с более высоким приоритетом. Эта настройка определяет время ожидания.
Строить распределённый план запроса.
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.
Максимальное число анализов, выполняемых интерпретатором.
Максимальная глубина вложенности синтаксического дерева запроса. При превышении этого значения генерируется исключение.
В настоящий момент это не проверяется при синтаксическом разборе, а только после разбора запроса.
Это означает, что при синтаксическом разборе может быть создано слишком глубокое синтаксическое дерево,
но запрос завершится ошибкой.
Максимальное количество элементов в синтаксическом дереве запроса. При превышении этого значения будет генерироваться исключение.
В настоящее время это не проверяется во время разбора, а только после разбора запроса.
Это означает, что во время разбора может быть создано слишком глубокое синтаксическое дерево,
но запрос завершится с ошибкой.
Ограничение на количество серий, создаваемых функцией generateSerialID.
Поскольку каждая серия представляет собой узел в Keeper, рекомендуется не создавать более нескольких миллионов таких серий.
Максимальная скорость чтения для конкретной резервной копии на сервере, в байтах в секунду. Ноль означает отсутствие ограничений.
В 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.
0 — GROUP 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.
Рекомендуемое значение — половина доступной системной памяти
0 — ORDER BY с использованием внешней памяти отключен.
max_bytes_before_remerge_sort
В случае ORDER BY с LIMIT, если использование памяти превышает указанный порог, перед финальным слиянием выполняются дополнительные этапы слияния блоков, чтобы сохранить только первые LIMIT строк.
Максимальное количество байтов в наборе для оптимизации lazy FINAL. При превышении этого значения используется обычный FINAL.
Максимальный размер состояния в памяти (в несжатых байтах),
используемого хеш-таблицей при применении DISTINCT.
Максимальный размер хеш-таблицы, используемой при JOIN таблиц, в байтах.
Эта настройка применяется к операциям SELECT … JOIN
и к движку таблицы Join.
Если запрос содержит JOIN, ClickHouse проверяет эту настройку для каждого промежуточного результата.
Когда лимит достигнут, ClickHouse может выполнить разные действия. Используйте
настройку join_overflow_mode, чтобы выбрать нужное действие.
Возможные значения:
- Положительное целое число.
- 0 — контроль памяти отключён.
Максимальное количество байтов (несжатых данных), используемых набором в выражении 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.
Максимальное количество байтов (несжатых данных), которое можно прочитать из таблицы при выполнении запроса.
Ограничение проверяется для каждого обрабатываемого фрагмента данных, применяется только к
самому глубокому табличному выражению и при чтении с удалённого сервера проверяется только на
удалённом сервере.
Максимальное количество байтов (несжатых данных), которое можно прочитать из локальной
таблицы на листовом узле при выполнении распределённого запроса. Хотя распределённые запросы
могут отправлять по несколько подзапросов на каждый сегмент (листовой узел), это ограничение
проверяется только на этапе чтения на листовых узлах и игнорируется на этапе
слияния результатов на корневом узле.
Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со
100 байтами данных. Распределённый запрос, который должен прочитать все данные
из обеих таблиц с настройкой max_bytes_to_read=150, завершится ошибкой, поскольку
общий объём составит 200 байт. Запрос с max_bytes_to_read_leaf=150 выполнится успешно,
поскольку листовые узлы прочитают не более 100 байт.
Ограничение проверяется для каждого обрабатываемого фрагмента данных.
Этот параметр работает нестабильно при prefer_localhost_replica=1.
Максимальное количество байт до начала сортировки. Если для операции ORDER BY
требуется обработать больше указанного количества
несжатых байт, поведение будет
определяться параметром sort_overflow_mode, который по умолчанию имеет значение throw.
Максимальное количество байтов (несжатых данных), которое можно передать на удалённый
сервер или сохранить во временной таблице при выполнении секции GLOBAL IN/JOIN.
Максимальное количество столбцов, которое можно прочитать из таблицы в рамках одного запроса.
Если для выполнения запроса требуется прочитать больше столбцов, чем указано, генерируется исключение.
Эта настройка помогает предотвратить чрезмерно сложные запросы.
Значение 0 означает отсутствие ограничений.
Максимальный размер блоков несжатых данных перед их сжатием для записи в таблицу. По умолчанию — 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>
Максимальное число снимков Paimon, обрабатываемых за одно инкрементальное чтение. 0 означает отсутствие ограничений.
max_distributed_connections
Максимальное количество одновременных соединений с удалёнными серверами для распределённой обработки одного запроса к одной таблице Distributed. Мы рекомендуем задавать значение не меньше количества серверов в кластере.
Следующие параметры используются только при создании таблиц Distributed (и при запуске сервера), поэтому нет причин изменять их во время работы.
Ограничивает максимальную глубину рекурсивных запросов к таблицам Distributed.
Если это значение превышено, сервер генерирует исключение.
Возможные значения:
- Положительное целое число.
- 0 — неограниченная глубина.
Максимальный размер буфера для параллельной загрузки (например, для движка URL) на каждый поток.
Максимальное количество потоков для загрузки данных (например, для URL engine).
max_estimated_execution_time
Максимальная оценка времени выполнения запроса в секундах. Проверяется для каждого блока данных
после истечения timeout_before_checking_execution_speed.
Максимальное количество строк, обрабатываемых в секунду. Проверяется на каждом блоке данных, когда
timeout_before_checking_execution_speed
истекает. Если скорость выполнения слишком высокая, она будет снижена.
max_execution_speed_bytes
Максимальное количество байт, обрабатываемых в секунду при выполнении запроса. Проверяется на каждом блоке данных по истечении
timeout_before_checking_execution_speed.
Если скорость выполнения слишком высока, она будет снижена.
Максимальное время выполнения запроса в секундах.
Параметр 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, но
применяется только на листовых узлах для распределённых или удалённых запросов.
Например, если мы хотим ограничить время выполнения на листовом узле до 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
Количество повторных попыток при получении партиции с другого узла.
Устанавливает максимальное количество параллельных потоков на этапе чтения данных для запроса SELECT с модификатором FINAL.
Возможные значения:
- Положительное целое число.
- 0 или 1 — отключено. Запросы
SELECT выполняются в одном потоке.
Максимально допустимое количество переходов при перенаправлениях 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_rows
Максимальный размер блоков (по числу строк), формируемых для вставки в таблицу.
Этот параметр управляет формированием блоков в двух контекстах:
-
Разбор форматов: когда сервер разбирает построчные входные форматы (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 для чтения из файла данные разбирает сам клиент, и этот параметр применяется на стороне клиента.
-
Операции 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.
Максимальное количество потоков для выполнения запроса 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_write_bandwidth
Максимальная скорость локальной записи в байтах в секунду.
Значение по умолчанию в 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');
Ограничивает скорость передачи данных по сети в байтах в секунду. Эта настройка применяется к каждому запросу.
Возможные значения:
- Положительное целое число.
- 0 — ограничение пропускной способности отключено.
max_network_bandwidth_for_all_users
Ограничивает скорость передачи данных по сети в байтах в секунду. Эта настройка применяется ко всем одновременно выполняющимся запросам на сервере.
Возможные значения:
- Положительное целое число.
- 0 — ограничение скорости передачи данных отключено.
max_network_bandwidth_for_user
Ограничивает скорость обмена данными по сети в байтах в секунду. Эта настройка применяется ко всем запросам, одновременно выполняемым одним пользователем.
Возможные значения:
- Положительное целое число.
- 0 — ограничение скорости передачи данных отключено.
Ограничивает объём данных (в байтах), получаемых или передаваемых по сети при выполнении запроса. Этот параметр применяется к каждому отдельному запросу.
Возможные значения:
- Положительное целое число.
- 0 — ограничение объёма данных отключено.
max_number_of_partitions_for_independent_aggregation
Максимальное число партиций в таблице, к которым применяется оптимизация
max_os_cpu_wait_time_ratio_to_throw
Максимальное соотношение между временем ожидания CPU ОС (метрика OSCPUWaitMicroseconds) и временем занятости (метрика OSCPUVirtualTimeMicroseconds), при котором запросы могут отклоняться. Для расчёта вероятности используется линейная интерполяция между минимальным и максимальным соотношением; в этой точке вероятность равна 1.
Максимальное количество реплик для каждого сегмента при выполнении запроса.
Возможные значения:
- Положительное целое число.
Дополнительная информация
Этот параметр может давать разные результаты в зависимости от используемых настроек.
Параллельная обработка с использованием ключа SAMPLE
Запрос может выполняться быстрее, если он обрабатывается параллельно на нескольких серверах. Однако производительность запроса может ухудшиться в следующих случаях:
- Положение ключа выборки в ключе партиционирования не позволяет эффективно выполнять диапазонное сканирование.
- Добавление ключа выборки в таблицу снижает эффективность фильтрации по другим столбцам.
- Ключ выборки представляет собой выражение, вычисление которого требует значительных затрат.
- Распределение задержек в кластере имеет длинный хвост, поэтому выполнение запроса на большем числе серверов увеличивает его общую задержку.
Эта настройка полезна для любой реплицируемой таблицы.
Максимальное количество возвратов парсера (сколько раз он пробует разные альтернативы в процессе рекурсивного нисходящего разбора).
Ограничивает максимальную глубину рекурсии в рекурсивном нисходящем анализаторе. Позволяет управлять размером стека.
Возможные значения:
- Положительное целое число.
- 0 — глубина рекурсии не ограничена.
Максимальное количество потоков для разбора данных во входных форматах, поддерживающих параллельный разбор. По умолчанию определяется автоматически.
max_partition_size_to_drop
Ограничение на удаление партиций на этапе выполнения запроса. Значение 0 означает, что партиции можно удалять без каких-либо ограничений.
Значение по умолчанию в Cloud: 1 TB.
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 и т. д.).”
Эта настройка является защитным порогом, поскольку использование большого количества партиций — распространенное заблуждение.
Ограничивает максимальное количество партиций, к которым можно получить доступ в рамках одного запроса.
Значение настройки, заданное при создании таблицы, можно переопределить настройкой на уровне запроса.
Возможные значения:
- Положительное целое число
-1 — без ограничений (по умолчанию)
Ограничивает число частей, которые можно переместить за один запрос. Ноль означает отсутствие ограничений.
max_projection_rows_to_use_projection_index
Если количество строк, которые нужно прочитать из индекса проекции, меньше или равно этому порогу, ClickHouse попытается использовать индекс проекции при выполнении запроса.
Максимальное количество байтов в строке запроса, разбираемой 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_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 таблицы, которая указывает на реплицированные таблицы.
Ограничивает размер результата в байтах (в несжатом виде). Запрос остановится после обработки блока данных, если порог достигнут,
но последний блок результата обрезан не будет, поэтому размер результата может превысить порог.
Ограничения
Для этого порога учитывается размер результата в памяти.
Даже если сам результат небольшой, он может ссылаться на более крупные структуры данных в памяти,
такие как словари для столбцов LowCardinality и Arena для столбцов AggregateFunction,
поэтому порог может быть превышен, несмотря на небольшой размер результата.
Этот параметр является довольно низкоуровневым и должен использоваться с осторожностью
Значение по умолчанию в Cloud: 0.
Ограничивает количество строк в результате. Проверяется также для подзапросов и на удалённых серверах при выполнении частей распределённого запроса.
Если значение равно 0, ограничение не применяется.
Запрос остановится после обработки блока данных, если порог достигнут, но
последний блок результата обрезан не будет, поэтому размер результата может
превышать порог.
max_reverse_dictionary_lookup_cache_size_bytes
Максимальный размер в байтах кэша обратного поиска в словаре для одного запроса, используемого функцией dictGetKeys. Кэш хранит сериализованные кортежи ключей для каждого значения атрибута, чтобы избежать повторного сканирования словаря в рамках одного и того же запроса. При достижении лимита записи кэша вытесняются по алгоритму LRU. Установите 0, чтобы отключить кэширование.
Максимальное количество строк в наборе для ленивой оптимизации FINAL. При превышении этого значения используется обычный FINAL.
Максимальное количество различных строк при использовании DISTINCT.
Ограничивает количество строк в хеш-таблице, используемой при объединении таблиц.
Этот параметр применяется к операциям SELECT … JOIN
и движку таблицы Join.
Если запрос содержит несколько JOIN, ClickHouse проверяет этот параметр для каждого промежуточного результата.
При достижении лимита ClickHouse может выполнять разные действия. Используйте
параметр join_overflow_mode, чтобы выбрать нужное действие.
Возможные значения:
- Положительное целое число.
0 — Неограниченное количество строк.
Максимальное количество строк в наборе данных для оператора IN, созданного из подзапроса.
max_rows_in_set_to_optimize_join
Максимальный размер множества, используемого для фильтрации объединяемых таблиц по множествам строк друг друга перед выполнением JOIN.
Возможные значения:
- 0 — Отключить.
- Любое положительное целое число.
Максимальное количество уникальных ключей, полученных при агрегации. Этот параметр позволяет
ограничить потребление памяти при агрегации.
Если во время GROUP BY агрегация создаёт больше строк
(уникальных ключей GROUP BY), чем указано, поведение будет определяться
параметром ‘group_by_overflow_mode’, который по умолчанию имеет значение throw, но его также можно переключить
в приблизительный режим GROUP BY.
Максимальное количество строк, которое можно прочитать из таблицы при выполнении запроса.
Ограничение проверяется для каждого обрабатываемого фрагмента данных, применяется только к
наиболее глубокому табличному выражению, а при чтении с удалённого сервера проверяется только на
удалённом сервере.
Максимальное количество строк, которое можно прочитать из локальной таблицы на листовом узле при
выполнении распределённого запроса. Хотя распределённые запросы могут отправлять несколько подзапросов
к каждому сегменту (листовому узлу), это ограничение проверяется только на этапе чтения на
листовых узлах и игнорируется на этапе слияния результатов на корневом узле.
Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со
100 строками. Распределённый запрос, который должен прочитать все данные из обеих
таблиц с настройкой max_rows_to_read=150, завершится ошибкой, так как всего будет
200 строк. Запрос с max_rows_to_read_leaf=150 выполнится успешно, поскольку листовые узлы
прочитают не более 100 строк.
Ограничение проверяется для каждого обрабатываемого фрагмента данных.
Эта настройка работает нестабильно при prefer_localhost_replica=1.
Максимальное количество строк перед сортировкой. Это позволяет ограничить потребление памяти при сортировке.
Если для операции ORDER BY требуется обработать больше записей, чем указано,
поведение будет определяться параметром sort_overflow_mode, который по умолчанию имеет значение throw.
Максимальное количество строк, которое может быть передано на удалённый сервер или сохранено
во временной таблице при выполнении секции GLOBAL IN/JOIN.
Максимальное количество одновременных сеансов для каждого аутентифицированного пользователя 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
Позволяет использовать больше источников, чем потоков, чтобы равномернее распределять работу между потоками. Предполагается, что это временное решение, поскольку в будущем число источников можно будет сделать равным числу потоков, а каждый источник при этом сможет динамически выбирать доступную для себя работу.
Если запрос содержит больше указанного количества вложенных подзапросов, генерируется
исключение.
Это позволяет выполнять проверку на адекватность, чтобы защитить пользователей вашего
кластера от написания чрезмерно сложных запросов.
Ограничение на удаление таблиц во время выполнения запроса. Значение 0 означает, что можно удалять любые таблицы без ограничений.
Значение по умолчанию в Cloud: 1 TB.
Максимальное количество временных столбцов, которые должны одновременно
храниться в оперативной памяти при выполнении запроса, включая константные столбцы. Если в результате промежуточных
вычислений запрос создаёт в памяти больше указанного количества временных столбцов,
то генерируется исключение.
Эта настройка полезна для предотвращения чрезмерно сложных запросов.
Значение 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_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_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.
Небольшие выделения и освобождения памяти суммируются в локальной переменной потока и отслеживаются или профилируются только тогда, когда их объём (по модулю) превышает указанное значение. Если это значение больше, чем 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.
Задаёт шаг профилировщика памяти. Каждый раз, когда использование памяти запросом превышает следующий порог, заданный в байтах, профилировщик памяти собирает трассировку стека выделения памяти и записывает её в 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 будут измеряться в ходе выполнения запросов.
Список perf-метрик, разделённых запятыми, которые будут измеряться во время выполнения запросов. Пустое значение означает, что будут измеряться все события. Список доступных событий см. в PerfEventInfo в sources.
min_bytes_to_use_direct_io
Минимальный объём данных, необходимый для использования прямого ввода-вывода при доступе к диску хранилища.
ClickHouse использует эту настройку при чтении данных из таблиц. Если общий объём всех данных, которые необходимо прочитать, превышает min_bytes_to_use_direct_io байт, ClickHouse читает данные с диска хранилища с опцией O_DIRECT.
Возможные значения:
- 0 — прямой ввод-вывод отключён.
- Положительное целое число.
Это экспериментальная настройка. Устанавливает минимальный размер для чтения больших файлов без копирования данных из ядра в пространство пользователя. Рекомендуемый порог — около 64 МБ, поскольку mmap/munmap работают медленно. Имеет смысл только для больших файлов и помогает только если данные находятся в кэше страниц.
Возможные значения:
- Положительное целое число.
- 0 — большие файлы читаются только с копированием данных из ядра в пространство пользователя.
min_chunk_bytes_for_parallel_parsing
- Тип: unsigned int
- Значение по умолчанию: 1 MiB
Минимальный размер фрагмента в байтах, разбираемого каждым потоком параллельно.
Для таблиц 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-компиляция
Минимальная скорость выполнения в строках в секунду. Проверяется на каждом блоке данных по истечении
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_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
Минимальный размер блоков (в строках), формируемых для вставки в таблицу.
Этот параметр управляет формированием блоков в двух контекстах:
-
Разбор форматов: Когда сервер разбирает построчные форматы ввода (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 для чтения из файла клиент сам разбирает данные, и этот параметр применяется на стороне клиента.
-
Операции 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 нужно разделить
Во время выполнения конвейера за ExecutingGraph::Node::status_mutex центрального узла Resize возникает высокая конкуренция, особенно в средах с большим числом ядер. Это приводит к следующему:
- Растёт задержка при выполнении ExecutingGraph::updateNode, что напрямую влияет на производительность запросов.
- Избыточные такты CPU тратятся на конкуренцию за spin-lock (
native_queued_spin_lock_slowpath), что снижает эффективность.
- Снижается загрузка CPU, что ограничивает параллелизм и пропускную способность.
Как разделяется узел Resize
- Проверяется количество выходных потоков, чтобы убедиться, что разделение возможно: число выходных потоков у каждого процессора после разделения соответствует пороговому значению
min_outstreams_per_resize_after_split или превышает его.
- Узел
Resize делится на более мелкие узлы 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).
Позволяет выполнять запросы 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 для движка MySQL
network_compression_method
Кодек для сжатия обмена данными между клиентом и сервером, а также между серверами.
Возможные значения:
NONE — без сжатия.
LZ4 — использовать кодек LZ4.
LZ4HC — использовать кодек LZ4HC.
ZSTD — использовать кодек ZSTD.
См. также
network_zstd_compression_level
Задает уровень сжатия ZSTD. Используется только если параметр network_compression_method установлен в значение ZSTD.
Возможные значения:
- Положительное целое число от 1 до 15.
Нормализует имена функций к их каноническому виду
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, поэтому эти два значения суммируются.
Возможные значения:
- 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).
Используйте ограничения, чтобы добавить условие индекса. Значение по умолчанию — false.
Возможные значения:
optimize_arithmetic_operations_in_aggregate_functions
Вынести арифметические операции за пределы агрегатных функций
Заменять скаляром и использовать хеш в качестве имени для больших констант (размер оценивается по длине имени).
Возможные значения:
- положительное целое число — максимальная длина имени,
- 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.
Разрешает выносить общие выражения из дизъюнкций в выражениях 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. В настоящее время для числовых типов это не дает преимуществ.
Заменяет аргументы типа 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 включена.
См. также
Заменяет ‘multiIf’ с одним условием на ‘if’.
optimize_normalize_count_variants
Преобразует агрегатные функции, которые семантически эквивалентны count(), в count().
Включает или отключает преобразование данных перед вставкой, как если бы для этого блока было выполнено слияние (в соответствии с движком таблицы).
Возможные значения:
- 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.
Оптимизирует несколько выражений OR LIKE в multiMatchAny. Эту оптимизацию не следует включать по умолчанию, поскольку в некоторых случаях она мешает анализу индексов.
optimize_qbit_distance_function_reads
Заменяет функции расстояния для типа QBit на эквивалентные, которые считывают из хранилища только столбцы, необходимые для вычисления.
Включает оптимизацию ORDER BY в запросах SELECT при чтении данных из таблиц MergeTree.
Возможные значения:
- 0 — оптимизация
ORDER BY отключена.
- 1 — оптимизация
ORDER BY включена.
См. также
optimize_redundant_functions_in_order_by
Удаляет функции из ORDER BY, если их аргументы также указаны в ORDER BY
Если установлено значение 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_substitute_columns
Использовать ограничения для подстановки столбцов. Значение по умолчанию — 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 не выполнил слияние.
По умолчанию 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.
Переписывает uniq и его варианты (кроме uniqUpTo) в count, если подзапрос содержит DISTINCT или секцию GROUP BY.
optimize_use_implicit_projections
Автоматически выбирать неявные проекции для выполнения запроса SELECT
optimize_use_projection_filtering
Включает использование проекций для фильтрации диапазонов частей, даже если проекции не выбраны для выполнения запроса SELECT.
Псевдонимы: allow_experimental_projection_optimization
Включает или отключает оптимизацию проекций при выполнении запросов SELECT.
Возможные значения:
- 0 — оптимизация проекций отключена.
- 1 — оптимизация проекций включена.
optimize_using_constraints
Используйте ограничения для оптимизации запросов. Значение по умолчанию — 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.
Размер блоков файла, сохраняемых в кэше страниц в пространстве пользователя, в байтах. Все чтения, проходящие через кэш, округляются вверх до значения, кратного этому размеру.
Этот параметр можно настраивать на уровне отдельного запроса, но записи в кэше с разными размерами блоков нельзя использовать повторно. Изменение этого параметра фактически делает существующие записи в кэше недействительными.
Большее значение, например 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 — Отключено.
1 — SELECT будет выполняться на каждом сегменте из базовой таблицы движка Distributed.
2 — SELECT и 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_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_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’
Тип фильтра, используемого с пользовательским ключом для параллельных реплик. 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.
Включает параллельную отправку в присоединённые представления вместо последовательной.
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:
- Разбивает данные правой части JOIN на блоки, содержащие не более указанного числа строк.
- Индексирует каждый блок по минимальному и максимальному значениям.
- Выгружает подготовленные блоки на диск, если это возможно.
Возможные значения:
- Любое положительное целое число. Рекомендуемый диапазон значений: [1000, 100000].
partial_result_on_first_cancel
Позволяет возвращать частичный результат запроса после отмены.
Если целевая таблица содержит не менее такого количества активных частей в одной партиции, вставка в таблицу искусственно замедляется.
Если число активных частей в одной партиции целевой таблицы превышает это значение, генерируется исключение ‘Too many parts …‘.
Логирует статистику индекса по каждой части
Приостанавливает цикл ожидания запроса на сервере на указанное количество секунд.
Исходный 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.
Например, есть узлы, обслуживающие запросы и содержащие локальные таблицы, которые не подходят для распределения. В этом случае их данные нужно распределять на лету в рамках распределённой обработки с помощью ключевого слова GLOBAL — GLOBAL IN/GLOBAL JOIN.
Ещё один сценарий использования prefer_global_in_and_join — доступ к таблицам, созданным внешними движками. Эта настройка помогает сократить количество обращений к внешним источникам при JOIN таких таблиц: только один вызов на запрос.
См. также:
Включает или отключает предпочтительное использование реплики 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: имя предпочтительной проекции
Максимальный размер буфера предзагрузки при чтении из файловой системы.
Позволяет выводить имена глубоко вложенных типов в удобочитаемом виде с отступами в запросе 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)
)
Приоритет запроса. 1 — наивысший приоритет, чем больше значение, тем ниже приоритет; 0 — приоритеты не используются.
Задаёт имя базы данных, используемой диалектом ‘promql’. Пустая строка означает текущую базу данных.
Псевдонимы: evaluation_time
Задаёт время оценки для диалекта promql. auto означает текущее время.
Указывает имя таблицы 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 - Включено
Максимальное количество результатов запросов, которое текущий пользователь может хранить в кэше запросов. 0 означает отсутствие ограничений.
Возможные значения:
query_cache_max_size_in_bytes
Максимальный объем памяти (в байтах), который текущий пользователь может выделить для кэша запросов. 0 означает отсутствие ограничений.
Возможные значения:
query_cache_min_query_duration
Минимальная длительность выполнения запроса в миллисекундах, необходимая для сохранения его результата в кэше запросов.
Возможные значения:
- Положительное целое число >= 0.
query_cache_min_query_runs
Минимальное число запусков SELECT-запроса, после которого его результат сохраняется в кэше запросов.
Возможные значения:
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.
Одинаковые запросы с разными метками считаются в query cache разными.
Возможные значения:
По истечении этого времени, заданного в секундах, записи в кэше запросов считаются устаревшими.
Возможные значения:
- Положительное целое число >= 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 - Включить
Включает или отключает оптимизацию на уровне плана запроса, которая переносит более крупные поддеревья плана запроса в 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_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_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_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_try_use_vector_search
Включает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства.
Действует только если для настройки query_plan_enable_optimizations установлено значение 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться несовместимым с предыдущими версиями образом или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_profiler_cpu_time_period_ns
Устанавливает период таймера процессорного времени для профилировщика запросов. Этот таймер учитывает только время CPU.
Возможные значения:
-
Положительное целое число наносекунд.
Рекомендуемые значения:
- 10000000 (100 раз в секунду) наносекунд и более для отдельных запросов.
- 1000000000 (один раз в секунду) для профилирования в масштабе всего cluster.
-
0, чтобы отключить таймер.
См. также:
query_profiler_real_time_period_ns
Задаёт период таймера реального времени для профилировщика запросов. Таймер реального времени отсчитывает фактическое время.
Возможные значения:
-
Положительное целое число в наносекундах.
Рекомендуемые значения:
- 10000000 (100 раз в секунду) наносекунд и меньше для отдельных запросов.
- 1000000000 (один раз в секунду) для профилирования всего кластера.
-
0 для отключения таймера.
См. также:
Значение по умолчанию в Cloud: 3000000000.
Время ожидания в очереди запросов, если число одновременных запросов превышает максимально допустимое.
Время ожидания при чтении из RabbitMQ перед повторной попыткой.
read_backoff_max_throughput
Настройка для уменьшения числа потоков в случае медленного чтения. События учитываются, когда пропускная способность чтения меньше указанного количества байт в секунду.
read_backoff_min_concurrency
Настройка для поддержания минимального количества потоков в случае медленного чтения.
Настройка для уменьшения количества потоков при медленном чтении. Количество событий, после которого число потоков будет уменьшено.
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) при чтении.
Что делать, если лимит превышен.
Задаёт, что происходит, когда объём прочитанных данных превышает одно из leaf-ограничений.
Возможные варианты:
throw: сгенерировать исключение (по умолчанию).
break: остановить выполнение запроса и вернуть частичный результат.
Приоритет чтения данных из локальной или удалённой файловой системы. Поддерживается только для метода ‘pread_threadpool’ при работе с локальной файловой системой и для метода threadpool — с удалённой файловой системой.
read_through_distributed_cache
Действует только в ClickHouse Cloud. Разрешает чтение из распределённого кэша
0 — без ограничений режима «только для чтения». 1 — только запросы на чтение, а также изменение явно разрешённых настроек. 2 — только запросы на чтение, а также изменение настроек, кроме настройки ‘readonly’.
Тайм-аут соединения при получении первого пакета данных или пакета Прогресс с положительным значением от реплики
Тайм-аут при получении данных из сети, в секундах. Если за этот интервал не было получено ни одного байта, генерируется исключение. Если задать эту настройку на клиенте, то на соответствующем конце соединения на сервере для сокета также будет задан параметр 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_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
При использовании 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.
Значение по умолчанию в Cloud: throw
Определяет, что делать, если объём результата превышает одно из ограничений.
Возможные значения:
throw: сгенерировать исключение (по умолчанию).
break: остановить выполнение запроса и вернуть частичный результат, как если бы
исходные данные закончились.
Использование ‘break’ похоже на использование LIMIT. Break прерывает выполнение только на
уровне блока. Это означает, что количество возвращаемых строк будет больше, чем
max_result_rows, будет кратно max_block_size
и будет зависеть от max_threads.
Пример
SET max_threads = 3, max_block_size = 3333;
SET max_result_rows = 3334, result_overflow_mode = 'break';
SELECT *
FROM numbers_mt(100000)
FORMAT Null;
rewrite_count_distinct_if_with_count_distinct_implementation
Позволяет переписывать countDistcintIf в соответствии с настройкой count_distinct_implementation.
Возможные значения:
- true — Разрешить.
- false — Запретить.
Переписывает выражения вида ‘x IN subquery’ в JOIN. Это может быть полезно для оптимизации всего запроса за счёт переупорядочивания JOIN.
Если включено, ClickHouse будет предоставлять точное значение статистики rows_before_aggregation, которая показывает количество строк, прочитанных до агрегаци
Разрешает многочастное копирование в S3.
s3_allow_parallel_part_upload
Использовать несколько потоков для multipart-загрузки в S3. Это может привести к несколько более высокому использованию памяти
s3_check_objects_after_upload
Проверять каждый загруженный в S3 объект с помощью HEAD-запроса, чтобы убедиться в успешности загрузки
Тайм-аут подключения к хосту для 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. Это ускоряет запись, поскольку позволяет избежать лишних проходов обработки файла. В большинстве случаев это безопасно, поскольку данные таблиц MergeTree в любом случае защищены контрольными суммами на стороне ClickHouse, а при доступе к S3 по HTTPS уровень TLS уже обеспечивает целостность данных при передаче по сети. При этом дополнительные контрольные суммы в S3 обеспечивают многоуровневую защиту.
s3_ignore_file_doesnt_exist
Игнорирует отсутствие файла при чтении по определённым ключам, если файл не существует.
Возможные значения:
- 1 —
SELECT возвращает пустой результат.
- 0 —
SELECT генерирует исключение.
Максимальное количество файлов, которое может быть возвращено одним батчем по запросу ListObject
Максимальное количество соединений на сервер.
Максимальное число запросов, которые можно отправить одновременно до достижения лимита запросов в секунду. По умолчанию (0) равно s3_max_get_rps
Ограничение на частоту S3 GET-запросов в секунду до применения ограничения скорости. Ноль означает отсутствие ограничений.
s3_max_inflight_parts_for_one_file
Максимальное количество частей, одновременно загружаемых в рамках запроса multipart-загрузки. 0 означает без ограничений.
Максимальный номер части при загрузке в S3.
Максимальное количество запросов, которое может быть отправлено одновременно до достижения ограничения на число запросов в секунду. По умолчанию (0) равно 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.
Максимальный размер части, загружаемой при multipart-загрузке в S3.
Минимальный размер части, загружаемой при multipart-загрузке в S3.
Максимальное число значений _path, которые можно извлечь из фильтров запроса и использовать для перебора файлов
вместо листинга по glob-шаблону. 0 означает, что параметр отключён.
Тайм-аут бездействия при отправке и получении данных в/из S3. Операция завершается ошибкой, если один вызов TCP-чтения или записи блокируется на это время.
Включает или отключает пропуск пустых файлов в таблицах движка 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. Если параметр отключён, при попытке вставки будет сгенерировано исключение, если объект 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. Возможные значения: auto, virtual_hosted, path.
Если установлено значение 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 в новую
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 могут записываться в разные наборы реплик, образующих кворум, поэтому нет гарантии, что какая-либо одна реплика получит все записи.
См. также:
Отправляет клиенту текстовые журналы сервера с указанным минимальным уровнем. Допустимые значения: ‘trace’, ‘debug’, ‘information’, ‘warning’, ‘error’, ‘fatal’, ‘none’
Отправлять текстовые журналы сервера, имя источника которых соответствует указанному регулярному выражению. Пустое значение означает все источники.
Включает или отключает отправку клиенту пакетов ProfileEvents.
Этот параметр можно отключить, чтобы уменьшить сетевой трафик для клиентов, которым события профилирования не нужны.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Включает или отключает HTTP-заголовки ответа X-ClickHouse-Progress в ответах clickhouse-server.
Дополнительную информацию см. в описании HTTP interface.
Possible values:
- 0 — Отключено.
- 1 — Включено.
send_table_structure_on_insert_with_inline_data
Если настройка отключена и запрос INSERT содержит встроенные данные, сервер не будет отправлять клиенту структуру таблицы и значения по умолчанию для столбцов по собственному протоколу. Вместо этого сервер сам разберёт встроенные данные. Это может повысить производительность при большом количестве небольших вставок по собственному протоколу.
Тайм-аут отправки данных по сети, в секундах. Если клиенту нужно отправить данные, но за этот интервал ему не удаётся отправить ни одного байта, будет сгенерировано исключение. Если задать этот параметр на клиенте, на соответствующем конце соединения на сервере для сокета также будет установлен receive_timeout.
Сериализация плана запроса для распределённой обработки
serialize_string_in_memory_with_zero_byte
Сериализует значения String при агрегации, добавляя в конец нулевой байт. Включите эту настройку, чтобы сохранить совместимость при выполнении запросов к кластеру с несовместимыми версиями.
Устанавливает неявный часовой пояс для текущего сеанса или запроса.
Неявный часовой пояс — это часовой пояс, применяемый к значениям типа 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 и глобальный часовой пояс не учитываются.
См. также
Определяет, что произойдёт, если объём данных превысит один из лимитов.
Возможные значения:
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)
Включает или отключает пропуск недоступных сегментов без вывода предупреждений.
Сегмент считается недоступным, если недоступны все его реплики. Реплика недоступна в следующих случаях:
-
ClickHouse не может подключиться к реплике по любой причине.
При подключении к реплике ClickHouse выполняет несколько попыток. Если все они завершаются неудачей, реплика считается недоступной.
-
Реплику не удается разрешить через DNS.
Если имя хоста реплики не удается разрешить через DNS, это может указывать на одну из следующих ситуаций:
-
У хоста реплики отсутствует DNS-запись. Это может происходить в системах с динамическим DNS, например, Kubernetes, где во время простоя узлы могут не разрешаться, и это не считается ошибкой.
-
Ошибка конфигурации. В файле конфигурации ClickHouse указано неверное имя хоста.
Возможные значения:
-
1 — пропуск включен.
Если сегмент недоступен, ClickHouse возвращает результат на основе частичных данных и не сообщает о проблемах с доступностью узлов.
-
0 — пропуск отключен.
Если сегмент недоступен, ClickHouse генерирует исключение.
sleep_after_receiving_query_ms
Время задержки после получения запроса в TCPHandler
Длительность паузы при отправке данных в TCPHandler
sleep_in_send_tables_status_ms
Время ожидания перед отправкой ответа о состоянии таблиц в TCPHandler
Определяет, что произойдет, если число строк, полученных перед сортировкой, превысит один из лимитов.
Возможные значения:
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 без обновления по расписанию.
Метод чтения данных из файла хранилища; одно из значений: read, pread, mmap. Метод mmap не используется в clickhouse-server (он предназначен для clickhouse-local).
storage_system_stack_trace_pipe_read_timeout_ms
Максимальное время чтения из пайпа для получения информации от потоков при выполнении запроса к таблице system.stack_trace. Эта настройка используется только в целях тестирования и не предназначена для изменения пользователями.
Применяется к таблицам со стримингом при тайм-ауте или когда поток генерирует 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.
Тайм-аут при опросе данных из/в стриминговые хранилища.
system_events_show_zero_values
Позволяет выбирать события с нулевыми значениями из system.events.
Некоторые системы мониторинга требуют передавать им все значения метрик для каждой контрольной точки, даже если значение метрики равно нулю.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Примеры
Запрос
SELECT * FROM system.events WHERE event='QueryMemoryLimitExceeded';
Результат
Запрос
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 начнет отправлять keepalive-пакеты
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
Время ожидания получения блокировки кэша для резервирования места под временные данные в файловом кэше
temporary_files_buffer_size
Размер буфера для модулей записи временных файлов. Чем больше размер буфера, тем меньше системных вызовов, но тем выше потребление памяти.
Устанавливает кодек сжатия для временных файлов, используемых при операциях сортировки и 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 в журнал записывается предупреждение.
throw_on_unsupported_query_inside_transaction
Сгенерировать исключение, если внутри транзакции используется неподдерживаемый запрос
timeout_before_checking_execution_speed
Проверяет, что скорость выполнения не слишком низкая (не меньше min_execution_speed), после истечения указанного времени в секундах.
Указывает, что делать, если запрос выполняется дольше max_execution_time или
оценочное время выполнения превышает max_estimated_execution_time.
Возможные значения:
throw: сгенерировать исключение (по умолчанию).
break: остановить выполнение запроса и вернуть частичный результат, как если бы
исходные данные были исчерпаны.
timeout_overflow_mode_leaf
Задаёт поведение, если запрос на листовом узле выполняется дольше, чем max_execution_time_leaf.
Возможные значения:
throw: сгенерировать исключение (по умолчанию).
break: остановить выполнение запроса и вернуть частичный результат, как если бы
исходные данные были исчерпаны.
Порог для totals_mode = 'auto'.
См. раздел «Модификатор WITH TOTALS».
Как вычислять TOTALS при наличии HAVING, а также когда заданы max_rows_to_group_by и group_by_overflow_mode = ‘any’.
См. раздел “модификатор WITH TOTALS”.
Включает или отключает сбор трассировок стека при каждом обновлении 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’
Эта настройка позволяет точнее собирать данные для большого числа запросов, поскольку в противном случае огромный объем событий может переполнить очередь внутреннего системного журнала, и часть из них будет отброшена.
Определяет, что произойдёт, если объём данных превысит одно из ограничений.
Возможные значения:
throw: сгенерировать исключение (по умолчанию).
break: остановить выполнение запроса и вернуть частичный результат, как если бы
исходные данные закончились.
Включает возможность считать значения 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
Задаёт режим объединения результатов SELECT-запросов. Эта настройка используется только при работе с UNION, если явно не указаны UNION ALL или UNION DISTINCT.
Возможные значения:
'DISTINCT' — ClickHouse возвращает строки, полученные в результате объединения запросов, удаляя дублирующиеся строки.
'ALL' — ClickHouse возвращает все строки, полученные в результате объединения запросов, включая дублирующиеся.
'' — ClickHouse генерирует исключение при использовании с UNION.
См. примеры в разделе UNION.
unknown_packet_in_send_data
Отправлять неизвестный пакет вместо N-го пакета данных
Определяет поведение одновременно выполняемых запросов UPDATE.
Возможные значения:
sync - выполнять все запросы UPDATE последовательно.
auto - выполнять последовательно только те запросы UPDATE, в которых есть зависимости между столбцами, обновляемыми в одном запросе, и столбцами, используемыми в выражениях другого запроса.
async - не синхронизировать запросы UPDATE.
update_sequential_consistency
Если значение равно true, перед выполнением update набор частей обновляется до последней версии.
Базовый 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.
Включено по умолчанию.
Использовать часовой пояс клиента для интерпретации строковых значений DateTime вместо часового пояса сервера.
Использует компактный формат для хранения блоков при фоновой (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, имейте это в виду.
Соблюдать контроль параллелизма на сервере (см. глобальные настройки сервера concurrent_threads_soft_limit_num и concurrent_threads_soft_limit_ratio_to_cores). Если отключено, позволяет использовать большее число потоков даже при перегрузке сервера (не рекомендуется для обычного использования и в основном требуется для тестов).
Значение по умолчанию в Cloud: 0.
use_hash_table_stats_for_join_reordering
Включает использование собранной статистики хеш-таблицы для оценки мощности при переупорядочивании JOIN
Включает логику хеджированных запросов для удалённых запросов. Позволяет устанавливать несколько соединений с разными репликами для одного запроса.
Новое соединение устанавливается, если существующее соединение с репликой не было установлено в течение hedged_connection_timeout
или если в течение receive_data_timeout не были получены данные. Запрос использует первое соединение, которое отправляет непустой пакет Прогресс (или пакет данных, если allow_changing_replica_until_first_data_packet);
остальные соединения отменяются. Поддерживаются запросы с max_parallel_replicas > 1.
Включено по умолчанию.
Значение по умолчанию в Cloud: 0.
Когда настройка включена, ClickHouse определяет секционирование в стиле Hive в пути (/name=value/) в движках таблиц, работающих с файлами: File/S3/URL/HDFS/AzureBlobStorage, и позволяет использовать столбцы партиций как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути секционирования, но с префиксом _.
Если параметр включен, табличная функция 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 верхнего уровня содержит хотя бы один детерминированный
предикат для целевой стороны.
При включении можно использовать старую функцию 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
Если настройка включена, формат Parquet может использовать кеш метаданных Parquet.
Возможные значения:
- 0 - Отключено
- 1 - Включено
Псевдонимы: use_partition_key
Использовать ключ партиционирования для отсечения партиций при выполнении запроса в таблицах MergeTree.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Использовать первичный ключ для отсечения гранул при выполнении запроса в таблицах MergeTree.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Если включено, запросы 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.
Использовать индексы пропуска данных при выполнении запроса.
Возможные значения:
- 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 — Включено.
/// предпочтительнее ‘allow_statistics_optimize’ для единообразия с ‘use_primary_key’ и ‘use_skip_indexes’
Позволяет использовать статистику для оптимизации запросов
Использовать кэш статистики в запросе, чтобы избежать накладных расходов при загрузке статистики для каждой части
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_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 — Включено.
Определяет, использовать ли кэш несжатых блоков. Допустимые значения: 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, будет сгенерировано исключение.
Проверяет запросы мутации перед их принятием. Мутации выполняются в фоновом режиме, и запуск некорректного запроса приведёт к их зависанию, из-за чего потребуется ручное вмешательство.
Изменяйте эту настройку только если столкнулись с ошибкой, нарушающей обратную совместимость.
Включает или отключает генерирование исключения в функции 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
Ожидать, пока зафиксированные изменения станут действительно видимыми в последнем снимке
Если true, ожидать обработки асинхронной вставки
wait_for_async_insert_timeout
Тайм-аут ожидания обработки асинхронной вставки
wait_for_window_view_fire_signal_timeout
Тайм-аут ожидания сигнала срабатывания оконного представления при обработке по времени событий
Лимит fuel на одно выполнение экземпляра WebAssembly UDF. Каждая инструкция WebAssembly расходует некоторое количество fuel.
Установите 0, чтобы снять ограничение.
Максимальное количество строк, передаваемых в 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-запрос активен.
Имя рабочей нагрузки для доступа к ресурсам
Записывает полные пути (включая 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 (не используется для семейства MergeTree) Последнее изменение 10 июня 2026 г.