Настройки Сессии
Все нижеприведенные настройки также доступны в таблице system.settings. Эти настройки автоматически генерируются из source.
add_http_cors_header
Добавить заголовок http CORS.
additional_result_filter
Дополнительное выражение фильтра для применения к результату запроса SELECT
.
Эта настройка не применяется к подзапросам.
Пример
additional_table_filters
Дополнительное выражение фильтра, которое применяется после чтения из указанной таблицы.
Пример
aggregate_functions_null_for_empty
Включает или отключает переписывание всех агрегатных функций в запросе, добавляя суффикс -OrNull к ним. Включите это для совместимости со стандартом SQL. Это реализовано через переписывание запроса (аналогично настройке count_distinct_implementation), чтобы получить согласованные результаты для распределенных запросов.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Пример
Рассмотрим следующий запрос с агрегатными функциями:
С aggregate_functions_null_for_empty = 0
он даст:
С aggregate_functions_null_for_empty = 1
результат будет:
aggregation_in_order_max_block_bytes
Максимальный размер блока в байтах, накопленных во время агрегации в порядке первичного ключа. Меньший размер блока позволяет параллелизовать более позднюю стадию финального слияния агрегации.
aggregation_memory_efficient_merge_threads
Количество потоков, используемых для слияния промежуточных результатов агрегации в режиме эффективного использования памяти. Чем больше значение, тем больше потребляется памяти. 0 означает — то же самое, что и 'max_threads'.
allow_aggregate_partitions_independently
Включить независимую агрегацию партиций в отдельных потоках, когда ключ партиционирования соответствует ключу группировки. Полезно, когда количество партиций близко к количеству ядер, а партиции имеют примерно одинаковый размер.
allow_archive_path_syntax
Файлы/движки S3/табличная функция будут разбирать пути с '::' как <archive> :: <file>
, если архив имеет правильное расширение.
allow_asynchronous_read_from_io_pool_for_merge_tree
Использовать пул фонового ввода-вывода для чтения из таблиц MergeTree. Эта настройка может увеличить производительность для запросов, зависящих от ввода-вывода.
allow_changing_replica_until_first_data_packet
Если включено, в хеджированных запросах мы можем начать новое соединение до получения первого пакета данных, даже если мы уже сделали некоторые успехи
(но прогресс не был обновлен в течение времени receive_data_timeout
), в противном случае мы отключаем изменение реплики после того, как впервые достигли прогресса.
allow_create_index_without_type
Разрешить запрос CREATE INDEX без TYPE. Запрос будет игнорироваться. Сделано для тестов совместимости SQL.
allow_custom_error_code_in_throwif
Включить пользовательский код ошибки в функции throwIf(). Если это истинно, выброшенные исключения могут иметь неожиданные коды ошибок.
allow_ddl
Если установка установлена на истину, пользователю разрешается выполнять DDL запросы.
allow_deprecated_database_ordinary
Разрешить создание баз данных с устаревшим обычным движком.
allow_deprecated_error_prone_window_functions
Разрешить использование устаревших оконных функций, подверженных ошибкам (neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference).
allow_deprecated_snowflake_conversion_functions
Функции snowflakeToDateTime
, snowflakeToDateTime64
, dateTimeToSnowflake
и dateTime64ToSnowflake
устарели и по умолчанию отключены.
Пожалуйста, используйте функции snowflakeIDToDateTime
, snowflakeIDToDateTime64
, dateTimeToSnowflakeID
и dateTime64ToSnowflakeID
вместо них.
Чтобы повторно включить устаревшие функции (например, в переходный период), установите эту настройку в true
.
allow_deprecated_syntax_for_merge_tree
Разрешить создание *MergeTree таблиц с устаревшим синтаксисом определения движка.
allow_distributed_ddl
Если установка установлена на истину, пользователю разрешается выполнять распределенные DDL запросы.
allow_drop_detached
Разрешить запросы ALTER TABLE ... DROP DETACHED PART[ITION] ...
allow_execute_multiif_columnar
Разрешить выполнение функции multiIf в столбцовом формате.
allow_experimental_analyzer
Разрешить новый анализатор запросов.
allow_experimental_codecs
Если установка установлена на истину, разрешите указывать экспериментальные кодеки сжатия (но у нас их еще нет, и эта опция ничего не делает).
allow_experimental_correlated_subqueries
Разрешить выполнение коррелированных подзапросов.
allow_experimental_database_glue_catalog
Разрешить экспериментальный движок базы данных DataLakeCatalog с catalog_type = 'glue'.
allow_experimental_database_hms_catalog
Разрешить экспериментальный движок базы данных DataLakeCatalog с catalog_type = 'hms'.
allow_experimental_database_iceberg
Разрешить экспериментальный движок базы данных DataLakeCatalog с catalog_type = 'iceberg'.
allow_experimental_database_materialized_postgresql
Разрешить создание базы данных с Engine=MaterializedPostgreSQL(...).
allow_experimental_database_unity_catalog
Разрешить экспериментальный движок базы данных DataLakeCatalog с catalog_type = 'unity'.
allow_experimental_delta_kernel_rs
Разрешить экспериментальную реализацию delta-kernel-rs.
allow_experimental_dynamic_type
Разрешает создание Dynamic типа данных.
allow_experimental_full_text_index
Если это установлено на истину, разрешить использовать экспериментальный полнотекстовый индекс.
allow_experimental_funnel_functions
Включить экспериментальные функции для анализа воронок.
allow_experimental_hash_functions
Включить экспериментальные хеш-функции.
allow_experimental_inverted_index
Если это установлено на истину, разрешить использовать экспериментальный разреженный индекс.
allow_experimental_join_condition
Поддержка соединения с неравенствующими условиями, которые включают столбцы из обеих таблиц слева и справа. например, t1.y < t2.y
.
allow_experimental_join_right_table_sorting
Если это установлено на истину, и условия join_to_sort_minimum_perkey_rows
и join_to_sort_maximum_table_rows
выполнены, изменить порядок правой таблицы по ключу для улучшения производительности в левых или внутренних хэш-соединениях.
allow_experimental_json_type
Разрешает создание JSON типа данных.
allow_experimental_kafka_offsets_storage_in_keeper
Разрешить экспериментальную функцию хранения смещений, связанных с Kafka, в ClickHouse Keeper. При включении можно указать путь ClickHouse Keeper и имя реплики для движка таблицы Kafka. В результате вместо обычного движка Kafka будет использоваться новый тип движка хранения, который в первую очередь хранит зафиксированные смещения в ClickHouse Keeper.
allow_experimental_kusto_dialect
Включить язык запросов Kusto (KQL) - альтернативу SQL.
allow_experimental_lightweight_update
Разрешить использовать легковесные обновления.
allow_experimental_live_view
Разрешает создание устаревшего LIVE VIEW.
Возможные значения:
- 0 — Работы с live-представлениями отключены.
- 1 — Работы с live-представлениями включены.
allow_experimental_materialized_postgresql_table
Разрешает использовать движок таблицы MaterializedPostgreSQL. Отключено по умолчанию, так как эта функция является экспериментальной.
allow_experimental_nlp_functions
Включить экспериментальные функции для обработки естественного языка.
allow_experimental_object_type
Разрешить устаревший тип данных Object.
allow_experimental_parallel_reading_from_replicas
Использовать до max_parallel_replicas
количество реплик из каждой шард для выполнения запроса SELECT. Чтение будет параллелизировано и координировано динамически. 0 - отключено, 1 - включено, безмолвно отключите в случае ошибки, 2 - включено, выбросить исключение в случае ошибки.
allow_experimental_prql_dialect
Включить PRQL - альтернативу SQL.
allow_experimental_query_deduplication
Экспериментальная дедупликация данных для запросов SELECT на основе UUID частей.
allow_experimental_statistics
Позволяет определять столбцы с статистикой и управлять статистикой.
allow_experimental_time_series_table
Разрешает создание таблиц с движком таблицы TimeSeries. Возможные значения:
- 0 — движок таблицы TimeSeries отключен.
- 1 — движок таблицы TimeSeries включен.
allow_experimental_ts_to_grid_aggregate_function
Экспериментальная агрегатная функция tsToGrid для повторной выборки временных рядов, подобно Prometheus. Только для облака.
allow_experimental_variant_type
Разрешает создание Variant типа данных.
allow_experimental_vector_similarity_index
Разрешить экспериментальный индекс векторного сходства.
allow_experimental_window_view
Включить VIEW ОКНА. Недостаточно зрелый.
allow_general_join_planning
Позволяет более общий алгоритм планирования соединений, который может обрабатывать более сложные условия, но работает только с хэш-соединениями. Если хэш-соединение не включено, используется обычный алгоритм планирования соединений, независимо от значения этой настройки.
allow_get_client_http_header
Разрешить использовать функцию getClientHTTPHeader
, которая позволяет получить значение заголовка текущего HTTP-запроса. Он по умолчанию не включен по соображениям безопасности, так как некоторые заголовки, такие как Cookie
, могут содержать конфиденциальную информацию. Обратите внимание, что заголовки X-ClickHouse-*
и Authentication
всегда ограничены и не могут быть получены с помощью этой функции.
allow_hyperscan
Разрешить функции, использующие библиотеку Hyperscan. Отключите, чтобы избежать потенциально длительного времени компиляции и чрезмерного использования ресурсов.
allow_introspection_functions
Включает или отключает функции интроспекции для профилирования запросов.
Возможные значения:
- 1 — функции интроспекции включены.
- 0 — функции интроспекции отключены.
См. также
- Профилировщик запросов с выборкой
- Системная таблица trace_log
allow_materialized_view_with_bad_select
Разрешить CREATE MATERIALIZED VIEW с запросом SELECT, который ссылается на несуществующие таблицы или столбцы. Он все равно должен быть синтаксически корректным. Не применяется к обновляемым MV. Не применяется, если схему MV необходимо выдвинуть из запроса SELECT (т.е. если CREATE не содержит списка столбцов и не содержит TO таблицы). Может использоваться для создания MV до ее исходной таблицы.
allow_named_collection_override_by_default
Разрешить переопределение полей именованных коллекций по умолчанию.
allow_non_metadata_alters
Разрешить выполнять изменения, которые влияют не только на метаданные таблиц, но и на данные на диске.
allow_nonconst_timezone_arguments
Разрешить неконстантные аргументы временной зоны в определенных временных функциях, таких как toTimeZone(), fromUnixTimestamp*(), snowflakeToDateTime*().
allow_nondeterministic_mutations
Настройка на уровне пользователя, которая позволяет мутациям в реплицируемых таблицах использовать нерешающие функции, такие как dictGet
.
Поскольку, например, словари могут быть не синхронизированы между узлами, мутации, которые получают значения из них, по умолчанию не разрешены в реплицируемых таблицах. Включение этой настройки позволяет это поведение, делая ответственность пользователя обеспечением того, чтобы данные, используемые, были синхронизированы на всех узлах.
Пример
allow_nondeterministic_optimize_skip_unused_shards
Разрешить нерешающие (такие как rand
или dictGet
, поскольку позже у последней есть некоторые подвохи с обновлениями) функции в ключе шардирования.
Возможные значения:
- 0 — Запрещено.
- 1 — Разрешено.
allow_not_comparable_types_in_comparison_functions
Разрешает или ограничивает использование несравнимых типов (таких как JSON/Object/AggregateFunction) в функциях сравнения equal/less/greater/etc
.
allow_not_comparable_types_in_order_by
Разрешает или ограничивает использование несравнимых типов (таких как JSON/Object/AggregateFunction) в ключах ORDER BY.
allow_prefetched_read_pool_for_local_filesystem
Предпочитать предварительно загруженный пул потоков, если все части находятся на локальной файловой системе.
allow_prefetched_read_pool_for_remote_filesystem
Предпочитать предварительно загруженный пул потоков, если все части находятся на удаленной файловой системе.
allow_push_predicate_ast_for_distributed_subqueries
Разрешить применение предиката на уровне AST для распределенных подзапросов с включенным анализатором.
allow_push_predicate_when_subquery_contains_with
Разрешить применение предиката, когда подзапрос содержит оператор WITH.
allow_reorder_prewhere_conditions
При перемещении условий из WHERE в PREWHERE разрешить их переупорядочение для оптимизации фильтрации.
allow_settings_after_format_in_insert
Контролировать, разрешены ли SETTINGS
после FORMAT
в INSERT
запросах или нет. Не рекомендуется использовать это, так как это может интерпретировать часть SETTINGS
как значения.
Пример:
Но следующий запрос будет работать только с allow_settings_after_format_in_insert
:
Возможные значения:
- 0 — Запрещено.
- 1 — Разрешено.
Используйте эту настройку только для обеспечения обратной совместимости, если ваши случаи использования зависят от старого синтаксиса.
allow_simdjson
Разрешить использование библиотеки simdjson в функциях 'JSON*', если доступны инструкции AVX2. Если отключено, будет использован rapidjson.
allow_statistics_optimize
Позволяет использовать статистику для оптимизации запросов.
allow_suspicious_codecs
Если это установлено на истину, разрешить указывать незначимые кодеки сжатия.
allow_suspicious_fixed_string_types
В операторе CREATE TABLE позволяет создавать столбцы типа FixedString(n) с n > 256. FixedString с длиной >= 256 является подозрительным и, скорее всего, указывает на неправильное использование.
allow_suspicious_indices
Отклонять первичные/вторичные индексы и ключи сортировки с идентичными выражениями.
allow_suspicious_low_cardinality_types
Позволяет или ограничивает использование LowCardinality с типами данных фиксированного размера 8 байт или меньше: числовыми типами данных и FixedString(8_bytes_or_less)
.
Для небольших фиксированных значений использование LowCardinality
обычно неэффективно, поскольку ClickHouse хранит числовой индекс для каждой строки. В результате:
- Использование дискового пространства может возрасти.
- Потребление ОЗУ может быть выше, в зависимости от размера словаря.
- Некоторые функции могут работать медленнее из-за дополнительных операций кодирования/декодирования.
Время слияния в таблицах с движком MergeTree может увеличиваться по всем указанным выше причинам.
Возможные значения:
- 1 — Использование
LowCardinality
не ограничено. - 0 — Использование
LowCardinality
ограничено.
allow_suspicious_primary_key
Разрешить подозрительные PRIMARY KEY
/ORDER BY
для MergeTree (т.е. SimpleAggregateFunction).
allow_suspicious_ttl_expressions
Отклонить TTL-выражения, которые не зависят от каких-либо столбцов таблицы. Это чаще всего указывает на ошибку пользователя.
allow_suspicious_types_in_group_by
Позволяет или ограничивает использование Variant и Dynamic типов в ключах GROUP BY.
allow_suspicious_types_in_order_by
Позволяет или ограничивает использование Variant и Dynamic типов в ключах ORDER BY.
allow_suspicious_variant_types
В операциях CREATE TABLE разрешает указывать тип Variant с аналогичными вариантами типов (например, с различными числовыми или датами). Включение этой настройки может привести к некоторой неоднозначности при работе с значениями схожих типов.
allow_unrestricted_reads_from_keeper
Позволяет неограниченные (без условия на путь) чтения из системной таблицы 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 — включить подробный вывод.
Пример
alter_sync
Позволяет настраивать ожидание выполнения действий на репликах с помощью ALTER, OPTIMIZE или TRUNCATE запросов.
Возможные значения:
- 0 — Не ждать.
- 1 — Ждать своего выполнения.
- 2 — Ждать всех.
Облачное значение по умолчанию: 0
.
alter_sync
применим только к Replicated
таблицам, он ничего не делает для изменений не Replicated
таблиц.
alter_update_mode
Режим для ALTER
запросов, которые имеют команды UPDATE
.
Возможные значения:
heavy
- запуск регулярной мутации.lightweight
- запуск легковесного обновления, если это возможно, иначе запуск регулярной мутации.lightweight_force
- запуск легковесного обновления, если это возможно, в противном случае выбросить ошибку.
analyze_index_with_space_filling_curves
Если таблица имеет кривую заполнения пространства в своем индексе, например, ORDER BY mortonEncode(x, y)
или ORDER BY hilbertEncode(x, y)
, и запрос имеет условия по его аргументам, например, x >= 10 AND x <= 20 AND y >= 20 AND y <= 30
, использовать кривую заполнения пространства для анализа индекса.
analyzer_compatibility_join_using_top_level_identifier
Принудительно разрешать идентификатор в JOIN USING из проекции (например, в SELECT a + 1 AS b FROM t1 JOIN t2 USING (b)
соединение будет выполнено по t1.a + 1 = t2.b
, а не t1.b = t2.b
).
any_join_distinct_right_table_keys
Включает поведение устаревшего сервера ClickHouse в операциях ANY INNER|LEFT JOIN
.
Используйте эту настройку только для обратной совместимости, если ваши сценарии зависят от устаревшего поведения JOIN
.
Когда устаревшее поведение включено:
- Результаты операций
t1 ANY LEFT JOIN t2
иt2 ANY RIGHT JOIN t1
не равны, поскольку ClickHouse использует логику с отображением ключей таблиц от многих к одному слева направо. - Результаты операций
ANY INNER JOIN
содержат все строки из левой таблицы, как и операцииSEMI LEFT JOIN
.
Когда устаревшее поведение отключено:
- Результаты операций
t1 ANY LEFT JOIN t2
иt2 ANY RIGHT JOIN t1
равны, поскольку ClickHouse использует логику, которая обеспечивает отображение ключей от одного к многим в операцияхANY RIGHT JOIN
. - Результаты операций
ANY INNER JOIN
содержат одну строку на ключ из обеих левых и правых таблиц.
Возможные значения:
- 0 — Устаревшее поведение отключено.
- 1 — Устаревшее поведение включено.
См. также:
apply_deleted_mask
Включает фильтрацию строк, удаленных с помощью легковесного DELETE. Если отключено, запрос сможет читать эти строки. Это полезно для отладки и сценариев «восстановления».
apply_mutations_on_fly
Если истинно, мутации (UPDATE и DELETE), которые не материализованы в части данных, будут применяться к SELECT.
apply_patch_parts
Если истинно, части патчей (представляющие легковесные обновления) применяются к SELECT.
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
), но позднее она была заменена этой настройкой клиента для лучшей удобства.
asterisk_include_alias_columns
Включить ALIAS колонки для запроса с подстановочным знаком (SELECT *
).
Возможные значения:
- 0 - отключено
- 1 - включено
asterisk_include_materialized_columns
Включить MATERIALIZED колонки для запроса с подстановочным знаком (SELECT *
).
Возможные значения:
- 0 - отключено
- 1 - включено
async_insert
Если истинно, данные из запроса INSERT хранятся в очереди, а затем сбрасываются в таблицу в фоновом режиме. Если wait_for_async_insert ложна, запрос INSERT обрабатывается почти мгновенно, в противном случае клиент будет ждать, пока данные не будут сброшены в таблицу.
async_insert_busy_timeout_decrease_rate
Экспоненциальная скорость уменьшения, с которой уменьшается время ожидания асинхронных вставок.
async_insert_busy_timeout_increase_rate
Экспоненциальная скорость увеличения, с которой увеличивается время ожидания асинхронных вставок.
async_insert_busy_timeout_max_ms
Максимальное время ожидания перед выгрузкой собранных данных за запрос с момента появления первых данных.
async_insert_busy_timeout_min_ms
Если автонастройка включена через async_insert_use_adaptive_busy_timeout, минимальное время ожидания перед выгрузкой собранных данных за запрос с момента появления первых данных. Оно также служит в качестве начального значения для адаптивного алгоритма.
async_insert_deduplicate
Для асинхронных запросов INSERT в реплицируемую таблицу указывает, что должна быть выполнена дедупликация вставляемых блоков.
async_insert_max_data_size
Максимальный размер в байтах непарсенных данных, собранных за запрос перед вставкой.
async_insert_max_query_number
Максимальное количество запросов вставки перед вставкой.
async_insert_poll_timeout_ms
Таймаут для опроса данных из очереди асинхронной вставки.
async_insert_use_adaptive_busy_timeout
Если установлено в true, использовать адаптивный тайм-аут для асинхронных вставок.
async_query_sending_for_remote
Включает создание асинхронных соединений и отправку запросов при выполнении удаленного запроса.
Включено по умолчанию.
async_socket_for_remote
Включает асинхронное чтение из сокета при выполнении удаленного запроса.
Включено по умолчанию.
azure_allow_parallel_part_upload
Использовать несколько потоков для многослойной загрузки в Azure.
azure_check_objects_after_upload
Проверять каждый загруженный объект в Azure Blob Storage, чтобы убедиться, что загрузка была успешной.
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
Максимальное количество блоков в многослойной загрузке для Azure.
azure_max_inflight_parts_for_one_file
Максимальное количество одновременно загруженных частей в запросе многослойной загрузки. 0 означает неограниченно.
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
Максимальный размер части для загрузки во время многослойной загрузки в Azure Blob Storage.
azure_min_upload_part_size
Минимальный размер части для загрузки во время многослойной загрузки в Azure Blob Storage.
azure_sdk_max_retries
Максимальное количество повторных попыток в Azure SDK.
azure_sdk_retry_initial_backoff_ms
Минимальная задержка между повторными попытками в Azure SDK.
azure_sdk_retry_max_backoff_ms
Максимальная задержка между повторными попытками в Azure SDK.
azure_skip_empty_files
Включает или отключает пропуск пустых файлов в движке S3.
Возможные значения:
- 0 —
SELECT
выбрасывает исключение, если пустой файл не совместим с запрашиваемым форматом. - 1 —
SELECT
возвращает пустой результат для пустого файла.
azure_strict_upload_part_size
Точный размер части для загрузки во время многослойной загрузки в Azure Blob Storage.
azure_throw_on_zero_files_match
Выбросить ошибку, если совпадает ноль файлов согласно правилам расширения glob.
Возможные значения:
- 1 —
SELECT
выбрасывает исключение. - 0 —
SELECT
возвращает пустой результат.
azure_truncate_on_insert
Включает или отключает обрезку перед вставкой в таблицы движка Azure.
azure_upload_part_size_multiply_factor
Умножить azure_min_upload_part_size на этот множитель каждый раз, когда azure_multiply_parts_count_threshold частей была загружена из одного запроса к Azure Blob Storage.
azure_upload_part_size_multiply_parts_count_threshold
Каждый раз, когда это число частей было загружено в Azure Blob Storage, azure_min_upload_part_size умножается на azure_upload_part_size_multiply_factor.
backup_restore_batch_size_for_keeper_multi
Максимальный размер пакета для многократного запроса к [Zoo]Keeper во время резервного копирования или восстановления.
backup_restore_batch_size_for_keeper_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 во время резервного копирования или восстановления.
backup_restore_keeper_value_max_size
Максимальный размер данных узла [Zoo]Keeper во время резервного копирования.
backup_restore_s3_retry_attempts
Настройка для Aws::Client::RetryStrategy, Aws::Client делает повторные попытки самостоятельно, 0 означает отсутствие повторных попыток. Это происходит только для резервного копирования/восстановления.
cache_warmer_threads
Имеет эффект только в ClickHouse Cloud. Количество фоновых потоков для спекулятивной загрузки новых частей данных в кэш файлов, когда включен cache_populated_by_fetch. Ноль для отключения.
calculate_text_stack_trace
Вычислять текстовый стек вызовов в случае исключений во время выполнения запроса. Это значение по умолчанию. Это требует поиска символов, что может замедлить тесты на случайные ошибки, когда выполняется огромное количество неверных запросов. В обычных случаях вам не следует отключать эту опцию.
cancel_http_readonly_queries_on_client_close
Отменяет HTTP-запросы только для чтения (например, SELECT), когда клиент закрывает соединение, не дождавшись ответа.
Значение по умолчанию в облаке: 1
.
cast_ipv4_ipv6_default_on_conversion_error
Оператор CAST для IPv4, оператор CAST для типа IPV6, функции toIPv4, toIPv6 будут возвращать значение по умолчанию вместо выбрасывания исключения при ошибке преобразования.
cast_keep_nullable
Включает или отключает сохранение типа данных Nullable
в операциях CAST.
Когда настройка включена и аргумент функции CAST
является Nullable
, результат также преобразуется в тип Nullable
. Когда настройка отключена, результат всегда имеет точно указанный целевой тип.
Возможные значения:
- 0 — Результат
CAST
имеет именно указанный целевой тип. - 1 — Если аргумент типа
Nullable
, результатCAST
преобразуется вNullable(DestinationDataType)
.
Примеры
Следующий запрос возвращает точно указанный целевой тип данных:
Результат:
Следующий запрос возвращает модификацию Nullable
для целевого типа данных:
Результат:
См. Также
- CAST функция
cast_string_to_dynamic_use_inference
Использовать вывод типов во время преобразования строки в динамический тип.
cast_string_to_variant_use_inference
Использовать вывод типов во время преобразования строки в вариант.
check_query_single_value_result
Определяет уровень детализации результата запроса CHECK TABLE для движков семейства MergeTree
.
Возможные значения:
- 0 — запрос показывает статус проверки для каждой отдельной части данных таблицы.
- 1 — запрос показывает общий статус проверки таблицы.
check_referential_table_dependencies
Проверяет, что DDL-запрос (например, DROP TABLE или RENAME) не нарушит ссылочные зависимости.
check_table_dependencies
Проверяет, что DDL-запрос (например, DROP TABLE или RENAME) не нарушит зависимости.
checksum_on_read
Проверка контрольных сумм при чтении. Это включено по умолчанию и всегда должно быть включено в производстве. Пожалуйста, не ожидайте никаких выигрышей от отключения этой настройки. Она может быть использована только для экспериментов и бенчмарков. Настройка применима только для таблиц семейства MergeTree. Контрольные суммы всегда проверяются для других движков таблиц и при получении данных по сети.
cloud_mode
Режим облака.
cloud_mode_database_engine
Движок базы данных, разрешенный в облаке. 1 — переписывать DDL для использования реплицированной базы данных, 2 — переписывать DDL для использования общей базы данных.
cloud_mode_engine
Семейство движков, разрешенное в облаке.
- 0 — разрешить всё
- 1 — переписывать DDL для использования *ReplicatedMergeTree
- 2 — переписывать DDL для использования SharedMergeTree
- 3 — переписывать DDL для использования SharedMergeTree, если явно не указан удаленный диск
UInt64 для минимизации публичной части.
cluster_for_parallel_replicas
Кластер для шардирования, в котором расположен текущий сервер.
collect_hash_table_stats_during_aggregation
Включает сбор статистики хеш-таблицы для оптимизации распределения памяти.
collect_hash_table_stats_during_joins
Включает сбор статистики хеш-таблицы для оптимизации распределения памяти.
compatibility
Настройка compatibility
заставляет ClickHouse использовать настройки по умолчанию предыдущей версии ClickHouse, где предыдущая версия указывается как настройка.
Если настройки установлены на не-значения по умолчанию, то эти настройки учитываются (только настройки, которые не были изменены, подлежат воздействию настройки compatibility
).
Эта настройка принимает номер версии ClickHouse в виде строки, например 22.3
, 22.8
. Пустое значение означает, что эта настройка отключена.
Отключено по умолчанию.
В ClickHouse Cloud настройка совместимости должна быть установлена поддержкой ClickHouse Cloud. Пожалуйста, откройте запрос для ее установки.
compatibility_ignore_auto_increment_in_create_table
Игнорировать ключевое слово AUTO_INCREMENT в объявлении колонки, если true, иначе возвращать ошибку. Это упрощает миграцию с MySQL.
compatibility_ignore_collation_in_create_table
Совместимость игнорирует сортировку при создании таблицы.
compile_aggregate_expressions
Включает или отключает JIT-компиляцию агрегатных функций в нативный код. Включение этой настройки может улучшить производительность.
Возможные значения:
- 0 — Агегация выполняется без JIT-компиляции.
- 1 — Агрегация выполняется с использованием JIT-компиляции.
См. Также
compile_expressions
Компилирует некоторые скалярные функции и операторы в нативный код.
compile_sort_description
Компилирует описание сортировки в нативный код.
connect_timeout
Тайм-аут подключения, если нет реплик.
connect_timeout_with_failover_ms
Тайм-аут в миллисекундах для подключения к удаленному серверу для движка распределенной таблицы, если в определении кластера используются секции 'shard' и 'replica'. Если неудачно, несколько попыток производятся для подключения к различным репликам.
connect_timeout_with_failover_secure_ms
Тайм-аут подключения для выбора первой здоровой реплики (для безопасных соединений).
connection_pool_max_wait_ms
Время ожидания в миллисекундах для подключения, когда пул подключений полон.
Возможные значения:
- Положительное целое число.
- 0 — Бессрочный тайм-аут.
connections_with_failover_max_tries
Максимальное количество попыток подключения с каждой репликой для движка распределенной таблицы.
convert_query_to_cnf
Когда установлено в true
, запрос SELECT
будет преобразован в конъюнктивную нормальную форму (CNF). Существуют сценарии, в которых переписывание запроса в CNF может выполняться быстрее (посмотрите эту проблему на Github для объяснения).
Например, обратите внимание, как следующий запрос SELECT
не изменен (дефолтное поведение):
Результат:
Давайте установим convert_query_to_cnf
в true
и посмотрим, что изменится:
Обратите внимание, что оператор WHERE
переписан в CNF, но набор результатов идентичен — логика булева условия осталась без изменений:
Возможные значения: true, false.
count_distinct_implementation
Указывает, какая из функций uniq*
должна использоваться для выполнения конструкции COUNT(DISTINCT ...).
Возможные значения:
count_distinct_optimization
Переписывает count distinct в подзапрос по группировке.
create_if_not_exists
Включает IF NOT EXISTS
для оператора CREATE
по умолчанию. Если эта настройка или IF NOT EXISTS
указана, и таблица с указанным именем уже существует, исключение не будет выброшено.
create_index_ignore_unique
Игнорировать ключевое слово UNIQUE при создании уникального индекса. Сделано для тестов совместимости SQL.
create_replicated_merge_tree_fault_injection_probability
Вероятность ошибки инъекции при создании таблицы после создания метаданных в ZooKeeper.
create_table_empty_primary_key_by_default
Разрешить создание *MergeTree таблиц с пустым первичным ключом, когда ORDER BY и PRIMARY KEY не указаны.
cross_join_min_bytes_to_compress
Минимальный размер блока для сжатия в CROSS JOIN. Нулевое значение отключает этот порог. Этот блок сжимается, когда достигается один из двух порогов (по строкам или по байтам).
cross_join_min_rows_to_compress
Минимальное количество строк для сжатия блока в CROSS JOIN. Нулевое значение отключает этот порог. Этот блок сжимается, когда достигается один из двух порогов (по строкам или по байтам).
data_type_default_nullable
Позволяет типам данных без явных модификаторов NULL или NOT NULL в определении колонки быть Nullable.
Возможные значения:
- 1 — Типы данных в определениях столбцов по умолчанию устанавливаются как
Nullable
. - 0 — Типы данных в определениях столбцов по умолчанию устанавливаются как не
Nullable
.
database_atomic_wait_for_drop_and_detach_synchronously
Добавляет модификатор SYNC
к всем запросам DROP
и DETACH
.
Возможные значения:
- 0 — Запросы будут выполняться с задержкой.
- 1 — Запросы будут выполняться без задержки.
database_replicated_allow_explicit_uuid
0 - Не разрешать явно указывать UUID для таблиц в реплицированных базах данных. 1 - Разрешить. 2 - Разрешить, но игнорировать указанный UUID и вместо этого генерировать случайный.
database_replicated_allow_heavy_create
Разрешить долго выполняющиеся DDL запросы (CREATE AS SELECT и POPULATE) в реплицированном движке базы данных. Обратите внимание, что это может блокировать очередь DDL на длительное время.
database_replicated_allow_only_replicated_engine
Разрешить создание только реплицированных таблиц в базе данных с движком Replicated.
database_replicated_allow_replicated_engine_arguments
0 - Не разрешать явно указывать путь ZooKeeper и имя реплики для *MergeTree таблиц в реплицированных базах данных. 1 - Разрешить. 2 - Разрешить, но игнорировать указанный путь и использовать вместо этого путь по умолчанию. 3 - Разрешить и не записывать предупреждение в журнал.
database_replicated_always_detach_permanently
Выполнять DETACH TABLE как DETACH TABLE PERMANENTLY, если движок базы данных — Replicated.
database_replicated_enforce_synchronous_settings
Принудительно дожидаться некоторых запросов (также см. database_atomic_wait_for_drop_and_detach_synchronously, mutations_sync, alter_sync). Не рекомендуется включать эти настройки.
database_replicated_initial_query_timeout_sec
Устанавливает, как долго начальный DDL-запрос должен ждать, чтобы реплицированная база данных обработала предыдущие записи в очереди DDL в секундах.
Возможные значения:
- Положительное целое число.
- 0 — Неограниченно.
decimal_check_overflow
Проверка переполнения десятичных арифметических/сравнительных операций.
deduplicate_blocks_in_dependent_materialized_views
Включает или отключает проверку дедупликации для материализованных представлений, которые получают данные из таблиц типа Replicated*.
Возможные значения:
0 — Отключено. 1 — Включено.
Использование
По умолчанию дедупликация не выполняется для материализованных представлений, но выполняется на верхнем уровне, в исходной таблице.
Если вставленный блок пропускается из-за дедупликации в исходной таблице, вставка в прикрепленные материализованные представления не произойдет. Это поведение существует, чтобы разрешить вставку сильно агрегированных данных в материализованные представления, в случаях, когда вставленные блоки одинаковы после агрегации в материализованном представлении, но происходят из разных вставок в исходную таблицу.
В то же время, это поведение "ломает" идемпотентность INSERT
. Если INSERT
в основную таблицу был успешен, а INSERT
в материализованное представление не удался (например, из-за сбоя связи с ClickHouse Keeper), клиент получит ошибку и может повторить операцию. Однако материализованное представление не получит второй вставки, потому что она будет отклонена дедупликацией в главной (исходной) таблице. Настройка deduplicate_blocks_in_dependent_materialized_views
позволяет изменить это поведение. При повторной попытке материализованное представление получит повторную вставку и выполнит проверку дедупликации самостоятельно, игнорируя результат проверки для исходной таблицы и вставляя строки, потерянные из-за первого сбоя.
default_materialized_view_sql_security
Позволяет установить значение по умолчанию для параметра SQL SECURITY при создании материализованного представления. Подробнее о безопасности SQL.
Значение по умолчанию — DEFINER
.
default_max_bytes_in_join
Максимальный размер правой таблицы, если требуется ограничение, но max_bytes_in_join
не установлен.
default_normal_view_sql_security
Позволяет установить значение по умолчанию для параметра SQL SECURITY
при создании обычного представления. Подробнее о безопасности SQL.
Значение по умолчанию — INVOKER
.
default_reader_bucket_count
Число задач для параллельного чтения в распределенном запросе по умолчанию. Задачи распределяются между репликами.
default_shuffle_join_bucket_count
Число ведер для распределенного shuffle-hash-join по умолчанию.
default_table_engine
Движок таблицы по умолчанию, который будет использоваться, когда ENGINE
не установлен в операторе CREATE
.
Возможные значения:
- строка, представляющая любое допустимое имя движка таблицы.
Значение по умолчанию в облаке: SharedMergeTree
.
Пример
Запрос:
Результат:
В этом примере любая новая таблица, которая не указывает Engine
, будет использовать движок таблицы Log
:
Запрос:
Результат:
default_temporary_table_engine
То же, что и default_table_engine, но для временных таблиц.
В этом примере любая новая временная таблица, которая не указывает Engine
, будет использовать движок таблицы Log
:
Запрос:
Результат:
default_view_definer
Позволяет установить значение по умолчанию для параметра DEFINER
при создании представления. Подробнее о безопасности SQL.
Значение по умолчанию — CURRENT_USER
.
describe_compact_output
Если true, включает только имена колонок и типы в результате запроса DESCRIBE.
describe_extend_object_types
Выводит конкретный тип колонок типа Object в запросе DESCRIBE.
describe_include_subcolumns
Включает описание подколонок для запроса DESCRIBE. Например, члены Tuple или подколонки типа Map, Nullable или Array.
Возможные значения:
- 0 — Подколонки не включены в запросы
DESCRIBE
. - 1 — Подколонки включены в запросы
DESCRIBE
.
Пример
Смотрите пример для оператора DESCRIBE.
describe_include_virtual_columns
Если true, виртуальные колонки таблицы будут включены в результат запроса DESCRIBE.
dialect
Какой диалект будет использован для разбора запроса.
dictionary_validate_primary_key_type
Проверка типа первичного ключа для словарей. По умолчанию тип id для простых компоновок будет неявно преобразован в UInt64.
distinct_overflow_mode
Устанавливает, что происходит, когда объем данных превышает один из лимитов.
Возможные значения:
throw
: выбросить исключение (по умолчанию).break
: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
distributed_aggregation_memory_efficient
Включен ли режим экономии памяти для распределенной агрегации.
distributed_background_insert_batch
Включает/выключает отправку вставленных данных в пакетах.
Когда включена отправка пакетами, движок таблицы Distributed пытается отправить несколько файлов вставленных данных в одной операции вместо отправки их отдельно. Пакетная отправка улучшает производительность кластера за счет лучшего использования ресурсов сервера и сети.
Возможные значения:
- 1 — Включено.
- 0 — Отключено.
distributed_background_insert_max_sleep_time_ms
Максимальный интервал для движка таблицы Distributed, чтобы отправить данные. Ограничивает экспоненциальный прирост интервала, установленного в настройке distributed_background_insert_sleep_time_ms.
Возможные значения:
- Положительное целое число миллисекунд.
distributed_background_insert_sleep_time_ms
Базовый интервал для движка таблицы Distributed для отправки данных. Фактический интервал растет экспоненциально в случае ошибок.
Возможные значения:
- Положительное целое число миллисекунд.
distributed_background_insert_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_sync. Нулевое значение означает отсутствие таймаута.
distributed_cache_bypass_connection_pool
Эта настройка имеет эффект только в ClickHouse Cloud. Позволяет обходить пул соединений к распределенному кэшу.
distributed_cache_connect_max_tries
Эта настройка имеет эффект только в 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_log_mode
Эта настройка имеет эффект только в ClickHouse Cloud. Режим записи в system.distributed_cache_log.
distributed_cache_max_unacked_inflight_packets
Эта настройка имеет эффект только в ClickHouse Cloud. Максимальное количество неподтвержденных пакетов, находящихся в пути, в одном запросе чтения распределенного кэша.
distributed_cache_min_bytes_for_seek
Эта настройка имеет эффект только в ClickHouse Cloud. Минимальное количество байт для выполнения поиска в распределенном кэше.
distributed_cache_pool_behaviour_on_limit
Эта настройка имеет эффект только в ClickHouse Cloud. Определяет поведение соединения к распределенному кэшу при достижении лимита пула.
distributed_cache_read_alignment
Эта настройка имеет эффект только в ClickHouse Cloud. Настройка для тестирования, не изменяйте ее.
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_receive_timeout_milliseconds
Эта настройка имеет эффект только в ClickHouse Cloud. Время ожидания в миллисекундах для получения любого рода ответа от распределенного кэша.
distributed_cache_throw_on_error
Эта настройка имеет эффект только в ClickHouse Cloud. Пробрасывает исключение, произошедшее во время общения с распределенным кэшем, или исключение, полученное от распределенного кэша. В противном случае возврат к пропуску распределенного кэша при ошибке.
distributed_cache_wait_connection_from_pool_milliseconds
Эта настройка имеет эффект только в ClickHouse Cloud. Время ожидания в миллисекундах для получения соединения из пула соединений, если distributed_cache_pool_behaviour_on_limit равно wait.
distributed_connections_pool_size
Максимальное количество одновременных соединений с удаленными серверами для распределенной обработки всех запросов к одной таблице Distributed. Рекомендуется устанавливать значение не меньше количества серверов в кластере.
distributed_ddl_entry_format_version
Совместимость версии распределенных DDL (ON CLUSTER) запросов.
distributed_ddl_output_mode
Устанавливает формат результата запроса распределенного DDL.
Возможные значения:
throw
— Возвращает набор результатов с состоянием выполнения запроса для всех хостов, где запрос завершен. Если запрос завершился с ошибкой на некоторых хостах, то будет повторным выбросом первого исключения. Если запрос еще не завершен на некоторых хостах, и distributed_ddl_task_timeout превышен, тогда он выбросит исключениеTIMEOUT_EXCEEDED
.none
— Похоже на throw, но запрос распределенного DDL не возвращает набор результатов.null_status_on_timeout
— ВозвращаетNULL
в качестве статуса выполнения в некоторых строках набора результатов вместо выбросаTIMEOUT_EXCEEDED
, если запрос не завершен на соответствующих хостах.never_throw
— Не выбрасыватьTIMEOUT_EXCEEDED
и не повторно выбрасывать исключения, если запрос завершился с ошибкой на некоторых хостах.none_only_active
- похоже наnone
, но не ожидает неактивные реплики базы данныхReplicated
. Примечание: с этим режимом невозможно определить, что запрос не был выполнен на некоторой реплике и будет выполнен в фоновом режиме.null_status_on_timeout_only_active
— похоже наnull_status_on_timeout
, но не ожидает неактивные реплики базы данныхReplicated
.throw_only_active
— похоже наthrow
, но не ожидает неактивные реплики базы данныхReplicated
.
Облачное значение по умолчанию: none
.
distributed_ddl_task_timeout
Устанавливает таймаут для ответов на DDL запросы со всех хостов в кластере. Если DDL запрос не был выполнен на всех хостах, ответ будет содержать ошибку таймаута, и запрос будет выполнен в асинхронном режиме. Отрицательное значение означает бесконечный таймаут.
Возможные значения:
- Положительное целое число.
- 0 — Асинхронный режим.
- Отрицательное целое число — бесконечный таймаут.
distributed_foreground_insert
Включает или отключает синхронную вставку данных в таблицу Distributed.
По умолчанию, при вставке данных в таблицу Distributed
, сервер ClickHouse отправляет данные на узлы кластера в фоновом режиме. Когда distributed_foreground_insert=1
, данные обрабатываются синхронно, и операция INSERT
завершается успешно только после того, как все данные будут сохранены на всех шарах (по крайней мере одна реплика для каждого шара, если internal_replication
истинно).
Возможные значения:
- 0 — Данные вставляются в фоновом режиме.
- 1 — Данные вставляются в синхронном режиме.
Облачное значение по умолчанию: 1
.
См. также
distributed_group_by_no_merge
Не объединять состояния агрегации с разных серверов для распределенной обработки запроса, можно использовать это, если точно известно, что ключи разные на разных шарах.
Возможные значения:
0
— Отключено (финальная обработка запроса выполняется на узле инициатора).1
- Не объединять состояния агрегации с разных серверов для распределенной обработки запроса (запрос полностью обрабатывается на шаре, инициатор только проксирует данные), можно использовать в случае если точно известно, что ключи разные на разных шарах.2
- То же самое, что и1
, но применяетORDER BY
иLIMIT
(это невозможно, когда запрос полностью обрабатывается на удаленном узле, как дляdistributed_group_by_no_merge=1
) на инициаторе (можно использовать для запросов сORDER BY
и/илиLIMIT
).
Пример
distributed_insert_skip_read_only_replicas
Включает пропуск реплик только для чтения для запросов INSERT в Distributed.
Возможные значения:
- 0 — INSERT выполнялся как обычно, если он попадет на только для чтения реплику, он завершится с ошибкой.
- 1 — Инициатор пропустит только для чтения реплики перед отправкой данных на шарды.
distributed_product_mode
Изменяет поведение распределенных подзапросов.
ClickHouse применяет эту настройку, когда запрос содержит произведение распределенных таблиц, т.е. когда запрос для распределенной таблицы содержит не-GLOBAL подзапрос для распределенной таблицы.
Ограничения:
- Применяется только для подзапросов IN и JOIN.
- Только если секция FROM использует распределенную таблицу, содержащую более одного шара.
- Если подзапрос касается распределенной таблицы, содержащей более одного шара.
- Не используется для функции табличного типа remote.
Возможные значения:
deny
— Значение по умолчанию. Запрещает использование таких типов подзапросов (возвращает исключение "Double-distributed in/JOIN subqueries is denied").local
— Заменяет базу данных и таблицу в подзапросе на локальные для целевого сервера (шара), оставляя нормальныйIN
/JOIN
.global
— Заменяет запросIN
/JOIN
наGLOBAL IN
/GLOBAL JOIN
.allow
— Разрешает использование таких типов подзапросов.
distributed_push_down_limit
Включает или отключает применение LIMIT на каждом шаре отдельно.
Это позволит избежать:
- Отправки лишних строк по сети;
- Обработки строк после лимита на инициаторе.
Начиная с версии 21.9, вы больше не можете получить неточные результаты, так как distributed_push_down_limit
изменяет выполнение запроса только если выполнено хотя бы одно из условий:
- distributed_group_by_no_merge > 0.
- Запрос не содержит
GROUP BY
/DISTINCT
/LIMIT BY
, но имеетORDER BY
/LIMIT
. - Запрос содержит
GROUP BY
/DISTINCT
/LIMIT BY
сORDER BY
/LIMIT
и:- optimize_skip_unused_shards включен.
- optimize_distributed_group_by_sharding_key включен.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Смотрите также:
- distributed_group_by_no_merge
- optimize_skip_unused_shards
- optimize_distributed_group_by_sharding_key
distributed_replica_error_cap
- Тип: неотрицательное целое число
- Значение по умолчанию: 1000
Количество ошибок каждой реплики ограничено этим значением, предотвращая накопление слишком большого количества ошибок в одной реплике.
Смотрите также:
- load_balancing
- Движок таблицы Distributed
- distributed_replica_error_half_life
- distributed_replica_max_ignored_errors
distributed_replica_error_half_life
- Тип: секунды
- Значение по умолчанию: 60 секунд
Контролирует, насколько быстро ошибки в распределенных таблицах обнуляются. Если реплика недоступна в течение некоторого времени, накапливает 5 ошибок, и distributed_replica_error_half_life
установлен на 1 секунду, то реплика считается нормальной через 3 секунды после последней ошибки.
Смотрите также:
- load_balancing
- Движок таблицы Distributed
- distributed_replica_error_cap
- distributed_replica_max_ignored_errors
distributed_replica_max_ignored_errors
- Тип: неотрицательное целое число
- Значение по умолчанию: 0
Количество ошибок, которые будут проигнорированы при выборе реплик (в соответствии с алгоритмом load_balancing
).
Смотрите также:
- load_balancing
- Движок таблицы Distributed
- distributed_replica_error_cap
- distributed_replica_error_half_life
do_not_merge_across_partitions_select_final
Объединять части только в одной партиции при select final.
empty_result_for_aggregation_by_constant_keys_on_empty_set
Возвращает пустой результат при агрегировании по постоянным ключам на пустом наборе.
empty_result_for_aggregation_by_empty_set
Возвращает пустой результат при агрегировании без ключей на пустом наборе.
enable_adaptive_memory_spill_scheduler
Запускает процессор для сброса данных в внешнее хранилище адаптивно. Поддерживается grace join в настоящее время.
enable_blob_storage_log
Записывает информацию о операциях с блоб-хранилищем в таблицу system.blob_storage_log.
enable_deflate_qpl_codec
Если включено, кодек DEFLATE_QPL может быть использован для сжатия колонок.
enable_early_constant_folding
Включает оптимизацию запросов, где мы анализируем результаты функций и подзапросов и переписываем запрос, если в них есть константы.
enable_extended_results_for_datetime_functions
Включает или отключает возврат результатов типа:
Date32
с расширенным диапазоном (по сравнению с типомDate
) для функций toStartOfYear, toStartOfISOYear, toStartOfQuarter, toStartOfMonth, toLastDayOfMonth, toStartOfWeek, toLastDayOfWeek и toMonday.DateTime64
с расширенным диапазоном (по сравнению с типомDateTime
) для функций toStartOfDay, toStartOfHour, toStartOfMinute, toStartOfFiveMinutes, toStartOfTenMinutes, toStartOfFifteenMinutes и timeSlot.
Возможные значения:
- 0 — Функции возвращают
Date
илиDateTime
для всех типов аргументов. - 1 — Функции возвращают
Date32
илиDateTime64
для аргументовDate32
илиDateTime64
иDate
илиDateTime
в противном случае.
enable_filesystem_cache
Использовать кэш для удаленной файловой системы. Эта настройка не включает/не отключает кэш для дисков (это должно быть сделано через конфигурацию диска), но позволяет обойти кэш для некоторых запросов, если это необходимо.
enable_filesystem_cache_log
Позволяет записывать журнал кэширования файловой системы для каждого запроса.
enable_filesystem_cache_on_write_operations
Записывать в кэш во время операций записи. Для того чтобы эта настройка работала, она также должна быть добавлена в конфигурацию диска.
enable_filesystem_read_prefetches_log
Записывать в журнал system.filesystem предзагрузку во время запроса. Следует использовать только для тестирования или отладки, не рекомендуется включать по умолчанию.
enable_global_with_statement
Распространять WITH операторы на запросы UNION и все подзапросы.
enable_hdfs_pread
Включает или отключает pread для файлов HDFS. По умолчанию используется hdfsPread
. Если отключено, будут использоваться hdfsRead
и hdfsSeek
для чтения файлов hdfs.
enable_http_compression
Включает или отключает сжатие данных в ответе на HTTP-запрос.
Для получения дополнительной информации читайте описание HTTP интерфейса.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
enable_job_stack_trace
Выводить стек трейс создателя задачи, когда задача завершилась с исключением.
enable_lightweight_delete
Включить легковесные мутации удаления для таблиц mergetree.
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
Включает продвижение предикатов в запросах SELECT
.
Продвижение предикатов может значительно снизить сетевой трафик для распределенных запросов.
Возможные значения:
- 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
Разрешить продвигать предикаты в финальный подзапрос.
enable_order_by_all
Включает или отключает сортировку с помощью синтаксиса ORDER BY ALL
, см. ORDER BY.
Возможные значения:
- 0 — Отключить ORDER BY ALL.
- 1 — Включить ORDER BY ALL.
Пример
Запрос:
Результат:
enable_parsing_to_custom_serialization
Если включено, данные могут быть разобраны напрямую в колонки с пользовательским сериализацией (например, Sparse) в соответствии с подсказками для сериализации, полученными из таблицы.
enable_positional_arguments
Включает или отключает поддержку позиционных аргументов для операторов GROUP BY, LIMIT BY, ORDER BY.
Возможные значения:
- 0 — Позиционные аргументы не поддерживаются.
- 1 — Позиционные аргументы поддерживаются: номера колонок могут использоваться вместо имен колонок.
Пример
Запрос:
Результат:
enable_reads_from_query_cache
Если установлено в true, результаты запросов SELECT
извлекаются из кэша запросов.
Возможные значения:
- 0 - Отключено
- 1 - Включено
enable_s3_requests_logging
Включите явное логирование запросов S3. Имеет смысл только для отладки.
enable_scalar_subquery_optimization
Если установлено в true, предотвращает сериализацию/десериализацию больших скалярных значений в скалярных подзапросах и возможно избегает повторного выполнения одного и того же подзапроса.
enable_sharing_sets_for_mutations
Разрешает совместное использование объектов множества, созданных для подзапросов IN, между разными задачами одной мутации. Это снижает использование памяти и загрузку CPU.
enable_software_prefetch_in_aggregation
Включает использование программного предзагрузки в агрегации.
enable_unaligned_array_join
Разрешает ARRAY JOIN с несколькими массивами, которые имеют разный размер. Когда эта настройка включена, массивы будут изменены на размер самого длинного.
enable_url_encoding
Разрешает включение/отключение декодирования/кодирования пути в uri в таблицах с движком URL.
Отключено по умолчанию.
enable_vertical_final
Если включено, удаляет дублированные строки во время FINАL, помечая строки как удаленные и фильтруя их позже, вместо объединения строк.
enable_writes_to_query_cache
Если включено, результаты запросов SELECT
сохраняются в кэше запросов.
Возможные значения:
- 0 - Отключено
- 1 - Включено
enable_zstd_qat_codec
Если включено, кодек ZSTD_QAT может использоваться для сжатия колонок.
enforce_strict_identifier_format
Если включено, разрешаются только идентификаторы, содержащие алфавитно-цифровые символы и символы подчеркивания.
engine_file_allow_create_multiple_files
Разрешает или запрещает создание нового файла при каждой вставке в таблицы с файловым движком, если формат имеет суффикс (JSON
, ORC
, Parquet
и т. д.). Если включено, при каждой вставке будет создан новый файл с именем, соответствующим этому шаблону:
data.Parquet
-> data.1.Parquet
-> data.2.Parquet
и т. д.
Возможные значения:
- 0 — запрос
INSERT
добавляет новые данные в конец файла. - 1 — запрос
INSERT
создает новый файл.
engine_file_empty_if_not_exists
Позволяет выбирать данные из таблицы с файловым движком без файла.
Возможные значения:
- 0 —
SELECT
вызывает исключение. - 1 —
SELECT
возвращает пустой результат.
engine_file_skip_empty_files
Разрешает или запрещает пропуск пустых файлов в таблицах с движком File.
Возможные значения:
- 0 —
SELECT
вызывает исключение, если пустой файл несовместим с запрашиваемым форматом. - 1 —
SELECT
возвращает пустой результат для пустого файла.
engine_file_truncate_on_insert
Разрешает или запрещает усечение перед вставкой в таблицы с движком File.
Возможные значения:
- 0 — запрос
INSERT
добавляет новые данные в конец файла. - 1 — запрос
INSERT
заменяет существующее содержимое файла новыми данными.
engine_url_skip_empty_files
Разрешает или запрещает пропуск пустых файлов в таблицах с движком URL.
Возможные значения:
- 0 —
SELECT
вызывает исключение, если пустой файл несовместим с запрашиваемым форматом. - 1 —
SELECT
возвращает пустой результат для пустого файла.
except_default_mode
Установите режим по умолчанию в запросе EXCEPT. Возможные значения: пустая строка, 'ALL', 'DISTINCT'. Если пустая, запрос без режима вызовет исключение.
execute_distributed_plan_locally
Запускает все задачи плана распределенного запроса локально. Полезно для тестирования и отладки.
external_storage_connect_timeout_sec
Таймаут подключения в секундах. В настоящее время поддерживается только для MySQL.
external_storage_max_read_bytes
Ограничивает максимальное количество байт, когда таблица с внешним движком должна сбрасывать исторические данные. В настоящее время поддерживается только для движка таблиц MySQL, движка базы данных и словаря. Если равно 0, эта настройка отключена.
external_storage_max_read_rows
Ограничивает максимальное количество строк, когда таблица с внешним движком должна сбрасывать исторические данные. В настоящее время поддерживается только для движка таблиц MySQL, движка базы данных и словаря. Если равно 0, эта настройка отключена.
external_storage_rw_timeout_sec
Таймаут чтения/записи в секундах. В настоящее время поддерживается только для MySQL.
external_table_functions_use_nulls
Определяет, как функции mysql, postgresql и odbc обрабатывают Nullable колонки.
Возможные значения:
- 0 — Табличная функция явно использует Nullable колонки.
- 1 — Табличная функция неявно использует Nullable колонки.
Использование
Если настройка установлена в 0
, табличная функция не создает Nullable колонки и вставляет значения по умолчанию вместо NULL. Это также относится к значению NULL внутри массивов.
external_table_strict_query
Если установлено в true, запрещает преобразование выражений в локальные фильтры для запросов к внешним таблицам.
extract_key_value_pairs_max_pairs_per_row
Максимальное количество пар, которые может производить функция extractKeyValuePairs
. Используется как предохранитель для предотвращения чрезмерного потребления памяти.
extremes
Указывает, следует ли подсчитывать крайние значения (минимумы и максимумы в столбцах результата запроса). Принимает 0 или 1. По умолчанию 0 (отключено). Более подробную информацию см. в разделе "Крайние значения".
fallback_to_stale_replicas_for_distributed_queries
Принуждает запрос к устаревшей реплике, если обновленные данные недоступны. См. Репликация.
ClickHouse выбирает наиболее подходящую из устаревших реплик таблицы.
Используется при выполнении SELECT
из распределенной таблицы, которая указывает на реплицированные таблицы.
По умолчанию 1 (включено).
filesystem_cache_boundary_alignment
Выравнивание границы кэша файловой системы. Эта настройка применяется только к чтению, не связанному с диском (например, для кэша удаленных движков таблиц / табличных функций, но не для конфигурации хранения таблиц MergeTree). Значение 0 означает, что выравнивания нет.
filesystem_cache_enable_background_download_during_fetch
Имеет эффект только в ClickHouse Cloud. Время ожидания, чтобы заблокировать кэш для резервирования пространства в кэше файловой системы.
filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage
Имеет эффект только в ClickHouse Cloud. Время ожидания, чтобы заблокировать кэш для резервирования пространства в кэше файловой системы.
filesystem_cache_max_download_size
Максимальный размер кэша удаленной файловой системы, который может быть загружен одним запросом.
filesystem_cache_name
Имя кэша файловой системы, используемое для статeless движков таблиц или озер данных.
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
Пропуск загрузки из удаленной файловой системы, если превышен размер кэша запросов.
filesystem_prefetch_max_memory_usage
Максимальное использование памяти для предзагрузок.
filesystem_prefetch_step_bytes
Предзагрузка шага в байтах. Ноль означает auto
— приблизительно лучший шаг предзагрузки будет автоматически выведен, но это может не быть на 100% самым лучшим. Фактическое значение может отличаться из-за настройки filesystem_prefetch_min_bytes_for_single_read_task.
filesystem_prefetch_step_marks
Предзагрузка шага в метках. Ноль означает auto
— приблизительно лучший шаг предзагрузки будет автоматически выведен, но это может не быть на 100% самым лучшим. Фактическое значение может отличаться из-за настройки filesystem_prefetch_min_bytes_for_single_read_task.
filesystem_prefetches_limit
Максимальное количество предзагрузок. Ноль означает неограниченное количество. Настройка filesystem_prefetches_max_memory_usage
более рекомендуемая, если вы хотите ограничить количество предзагрузок.
final
Автоматически применяет модификатор FINAL ко всем таблицам в запросе, к таблицам, где FINAL применим, включая объединенные таблицы и таблицы в подзапросах, и распределенные таблицы.
Возможные значения:
- 0 - отключено
- 1 - включено
Пример:
flatten_nested
Устанавливает формат данных вложенных (nested) колонок.
Возможные значения:
- 1 — Вложенная колонка упрощается в отдельные массивы.
- 0 — Вложенная колонка остается единым массивом кортежей.
Использование
Если настройка установлена в 0
, можно использовать произвольный уровень вложенности.
Примеры
Запрос:
Результат:
Запрос:
Результат:
force_aggregate_partitions_independently
Принуждает использовать оптимизацию, когда это применимо, но эвристика решила не использовать ее.
force_aggregation_in_order
Эта настройка используется самим сервером для поддержки распределенных запросов. Не изменяйте ее вручную, так как это нарушит нормальное функционирование. (Принуждает использовать агрегацию в порядке на удаленных узлах во время распределенной агрегации).
force_data_skipping_indices
Отключает выполнение запросов, если переданные индексы пропуска данных не были использованы.
Рассмотрим следующий пример:
force_exchange_kind
Принуждает указанный вид операторов обмена между этапами распределенного запроса.
Возможные значения:
- '' - не принуждать никакой вид операторов обмена, позвольте оптимизатору выбрать,
- 'Persisted' - использовать временные файлы в объектном хранилище,
- 'Streaming' - потоковый обмен данными по сети.
force_grouping_standard_compatibility
Заставляет функцию GROUPING возвращать 1, если аргумент не используется в качестве ключа агрегации.
force_index_by_date
Отключает выполнение запросов, если индекс не может быть использован по дате.
Работает с таблицами семейства MergeTree.
Если force_index_by_date=1
, ClickHouse проверяет наличие условия по ключу даты в запросе, которое можно использовать для ограничения диапазонов данных. Если нет подходящего условия, вызывается исключение. Однако он не проверяет, сокращает ли условие объем данных для чтения. Например, условие Date != ' 2000-01-01 '
допустимо, даже если оно совпадает со всеми данными в таблице (т.е. выполнение запроса требует полного сканирования). Более подробную информацию о диапазонах данных в таблицах MergeTree см. в MergeTree.
force_optimize_projection
Включает или отключает обязательное использование проекций в запросах SELECT
, когда оптимизация проекций включена (см. настройку optimize_use_projections).
Возможные значения:
- 0 — Оптимизация проекций не является обязательной.
- 1 — Оптимизация проекций является обязательной.
force_optimize_projection_name
Если установлено в непустую строку, проверить, что эта проекция используется в запросе хотя бы раз.
Возможные значения:
- строка: имя проекции, используемой в запросе.
force_optimize_skip_unused_shards
Включает или отключает выполнение запросов, если optimize_skip_unused_shards включен и пропуск неиспользуемых шардов невозможен. Если пропуск невозможен и настройка включена, будет вызвано исключение.
Возможные значения:
- 0 — Отключено. ClickHouse не вызывает исключение.
- 1 — Включено. Выполнение запроса отключено, только если таблица имеет ключ шардирования.
- 2 — Включено. Выполнение запроса отключено вне зависимости от того, определен ли ключ шардирования для таблицы.
force_optimize_skip_unused_shards_nesting
Контролирует force_optimize_skip_unused_shards
(соответственно все еще требует force_optimize_skip_unused_shards
) в зависимости от уровня вложенности распределенного запроса (случай, когда у вас есть Distributed
таблица, которая смотрит на другую Distributed
таблицу).
Возможные значения:
- 0 - Отключено,
force_optimize_skip_unused_shards
всегда работает. - 1 — Включает
force_optimize_skip_unused_shards
только для первого уровня. - 2 — Включает
force_optimize_skip_unused_shards
до второго уровня.
force_primary_key
Отключает выполнение запросов, если индексирование по первичному ключу невозможно.
Работает с таблицами семейства MergeTree.
Если force_primary_key=1
, ClickHouse проверяет, имеет ли запрос условие первичного ключа, которое можно использовать для ограничения диапазонов данных. Если нет подходящего условия, вызывается исключение. Однако он не проверяет, сокращает ли условие объем данных для чтения. Более подробную информацию о диапазонах данных в таблицах MergeTree см. в MergeTree.
force_remove_data_recursively_on_drop
Рекурсивно удаляет данные при выполнении запроса DROP. Избегает ошибки 'Каталог не пуст', но может тихо удалить отсоединенные данные.
formatdatetime_e_with_space_padding
Форматировщик '%e' в функции 'formatDateTime' печатает однозначные дни с ведущим пробелом, например ' 2' вместо '2'.
formatdatetime_f_prints_scale_number_of_digits
Форматировщик '%f' в функции 'formatDateTime' печатает только количество знаков масштаба для DateTime64 вместо фиксированных 6 цифр.
formatdatetime_f_prints_single_zero
Форматировщик '%f' в функции 'formatDateTime' печатает единственный ноль вместо шести нулей, если отформатированное значение не имеет дробных секунд.
formatdatetime_format_without_leading_zeros
Форматировщики '%c', '%l' и '%k' в функции 'formatDateTime' печатают месяцы и часы без ведущих нулей.
formatdatetime_parsedatetime_m_is_month_name
Форматировщик '%M' в функциях 'formatDateTime' и 'parseDateTime' печатает/анализирует название месяца вместо минут.
fsync_metadata
Включает или отключает fsync при записи файлов .sql
. Включено по умолчанию.
Имеет смысл отключить, если у сервера есть миллионы маленьких таблиц, которые постоянно создаются и удаляются.
function_implementation
Выберите реализацию функции для определенной цели или варианта (экспериментальный). Если пусто, включите все из них.
function_json_value_return_type_allow_complex
Контролирует, разрешать ли возвращать сложный тип (например, структура, массив, map) для функции json_value.
Возможные значения:
- true — Разрешить.
- false — Запретить.
function_json_value_return_type_allow_nullable
Контролирует, разрешать ли возвращать NULL
, когда значение не существует для функции JSON_VALUE.
Возможные значения:
- true — Разрешить.
- false — Запретить.
function_locate_has_mysql_compatible_argument_order
Контролирует порядок аргументов в функции locate.
Возможные значения:
- 0 — Функция
locate
принимает аргументы(haystack, needle[, start_pos])
. - 1 — Функция
locate
принимает аргументы(needle, haystack[, start_pos])
(совместимое с MySQL поведение).
function_range_max_elements_in_block
Устанавливает предельный порог для объема данных, генерируемых функцией range. Определяет максимальное количество значений, генерируемых функцией на блок данных (сумма размеров массивов для каждой строки в блоке).
Возможные значения:
- Положительное целое число.
См. также
function_sleep_max_microseconds_per_block
Максимальное количество микросекунд, которое функция sleep
может спать для каждого блока. Если пользователь вызывает ее с большим значением, она вызывает исключение. Это порог безопасности.
function_visible_width_behavior
Версия поведения visibleWidth
. 0 - только считайте количество кодовых точек; 1 - правильно считайте нулевую ширину и комбинирующие символы, считайте полноширинные символы за два, оцените ширину табуляции, считайте символы удаления.
geo_distance_returns_float64_on_float64_arguments
Если все четыре аргумента для функций geoDistance
, greatCircleDistance
, greatCircleAngle
являются Float64, возвращайте Float64 и используйте двойную точность для внутренних вычислений. В предыдущих версиях ClickHouse эти функции всегда возвращали Float32.
geotoh3_lon_lat_input_order
Функция 'geoToH3' принимает (lon, lat), если это верно, иначе (lat, lon).
glob_expansion_max_elements
Максимальное количество допустимых адресов (для внешних хранилищ, табличных функций и т.д.).
grace_hash_join_initial_buckets
Начальное количество бакетов для grace hash join.
grace_hash_join_max_buckets
Лимит на количество бакетов для grace hash join.
group_by_overflow_mode
Устанавливает, что происходит, когда количество уникальных ключей для агрегации превышает лимит:
throw
: генерировать исключениеbreak
: остановить выполнение запроса и вернуть частичный результатany
: продолжать агрегацию для ключей, которые попали в набор, но не добавлять новые ключи в набор.
Использование значения 'any' позволяет запустить приближенную версию GROUP BY. Качество этой аппроксимации зависит от статистической природы данных.
group_by_two_level_threshold
С какого количества ключей начинается двухуровневая агрегация. 0 - порог не установлен.
group_by_two_level_threshold_bytes
С какого размера состояния агрегации в байтах начинается двухуровневая агрегация. 0 - порог не установлен. Двухуровневая агрегация используется, когда хотя бы один из порогов срабатывает.
group_by_use_nulls
Изменяет способ, которым GROUP BY clause обрабатывает типы агрегирующих ключей.
Когда используются спецификаторы ROLLUP
, CUBE
или GROUPING SETS
, некоторые ключи агрегации могут не использоваться для получения некоторых строк результата.
Столбцы для этих ключей заполняются либо значением по умолчанию, либо NULL
в соответствующих строках в зависимости от этой настройки.
Возможные значения:
- 0 — для типа ключа агрегации используется значение по умолчанию для получения недостающих значений.
- 1 — ClickHouse выполняет
GROUP BY
так же, как это описывается в SQL стандарте. Типы ключей агрегации преобразуются в Nullable. Столбцы для соответствующих ключей агрегации заполняются NULL для строк, которые его не использовали.
См. также:
h3togeo_lon_lat_result_order
Функция 'h3ToGeo' возвращает (lon, lat), если это верно, иначе (lat, lon).
handshake_timeout_ms
Тайм-аут в миллисекундах для получения пакета Hello от реплик во время рукопожатия.
hdfs_create_new_file_on_insert
Включает или отключает создание нового файла при каждой вставке в таблицы HDFS. Если включено, при каждой вставке будет создан новый HDFS файл с именем, аналогичным следующему шаблону:
initial: data.Parquet.gz
-> data.1.Parquet.gz
-> data.2.Parquet.gz
и т.д.
Возможные значения:
- 0 — запрос
INSERT
добавляет новые данные в конец файла. - 1 — запрос
INSERT
создает новый файл.
hdfs_ignore_file_doesnt_exist
Игнорировать отсутствие файла, если он не существует при чтении определенных ключей.
Возможные значения:
- 1 —
SELECT
возвращает пустой результат. - 0 —
SELECT
генерирует исключение.
hdfs_replication
Фактическое количество репликаций можно указать при создании hdfs файла.
hdfs_skip_empty_files
Включает или отключает пропуск пустых файлов в HDFS таблицах.
Возможные значения:
- 0 —
SELECT
генерирует исключение, если пустой файл несовместим с запрашиваемым форматом. - 1 —
SELECT
возвращает пустой результат для пустого файла.
hdfs_throw_on_zero_files_match
Генерировать ошибку, если совпадает ноль файлов согласно правилам glob-расширения.
Возможные значения:
- 1 —
SELECT
генерирует исключение. - 0 —
SELECT
возвращает пустой результат.
hdfs_truncate_on_insert
Включает или отключает обрезку перед вставкой в таблицы hdfs. Если отключено, будет сгенерировано исключение при попытке вставить, если файл в HDFS уже существует.
Возможные значения:
- 0 — запрос
INSERT
добавляет новые данные в конец файла. - 1 — запрос
INSERT
заменяет существующее содержимое файла новыми данными.
hedged_connection_timeout_ms
Тайм-аут соединения для установки соединения с репликой для хеджируемых запросов.
hnsw_candidate_list_size_for_search
Размер динамического списка кандидатов при поиске в индексе векторной схожести, также известным как 'ef_search'.
hsts_max_age
Срок действия для HSTS. 0 означает отключение HSTS.
http_connection_timeout
Тайм-аут HTTP соединения (в секундах).
Возможные значения:
- Любое положительное целое число.
- 0 - Отключено (бесконечный тайм-аут).
http_headers_progress_interval_ms
Не отправлять HTTP заголовки X-ClickHouse-Progress более часто, чем на каждом указанном интервале.
http_make_head_request
Настройка http_make_head_request
позволяет выполнять запрос HEAD
при чтении данных с HTTP для получения информации о файле для чтения, такой как его размер. Поскольку это включено по умолчанию, может быть целесообразно отключить эту настройку в тех случаях, когда сервер не поддерживает запросы HEAD
.
http_max_field_name_size
Максимальная длина имени поля в HTTP заголовке.
http_max_field_value_size
Максимальная длина значения поля в HTTP заголовке.
http_max_fields
Максимальное количество полей в HTTP заголовке.
http_max_multipart_form_data_size
Лимит на размер содержимого multipart/form-data. Эта настройка не может быть разобрана из параметров URL и должна быть установлена в пользовательском профиле. Обратите внимание, что содержимое разбирается, и внешние таблицы создаются в памяти перед началом выполнения запроса. И это единственный лимит, который влияет на этот этап (лимиты на максимальное использование памяти и максимальное время выполнения не влияют при чтении данных формы HTTP).
http_max_request_param_data_size
Лимит на размер данных запроса, используемого в качестве параметра запроса в предопределенных HTTP запросах.
http_max_tries
Максимальное количество попыток чтения через HTTP.
http_max_uri_size
Устанавливает максимальную длину URI в HTTP запросе.
Возможные значения:
- Положительное целое число.
http_native_compression_disable_checksumming_on_decompress
Включает или отключает проверку контрольной суммы при декомпрессии данных POST HTTP от клиента. Используется только для родного формата сжатия ClickHouse (не используется с gzip
или deflate
).
Для получения дополнительной информации прочитайте описание HTTP интерфейса.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
http_receive_timeout
Тайм-аут получения данных по HTTP (в секундах).
Возможные значения:
- Любое положительное целое число.
- 0 - Отключено (бесконечный тайм-аут).
http_response_buffer_size
Количество байт для буфера в памяти сервера перед отправкой HTTP ответа клиенту или сбросом на диск (когда http_wait_end_of_query включен).
http_response_headers
Позволяет добавлять или переопределять HTTP заголовки, которые сервер вернет в ответе с успешным результатом запроса. Это влияет только на HTTP интерфейс.
Если заголовок уже установлен по умолчанию, предоставленное значение переопределит его. Если заголовок не был установлен по умолчанию, он будет добавлен в список заголовков. Заголовки, установленные сервером по умолчанию и не переопределенные этой настройкой, останутся.
Настройка позволяет установить заголовок на постоянное значение. В настоящее время нет способа установить заголовок на динамически вычисляемое значение.
Ни имена, ни значения не могут содержать управляющие символы ASCII.
Если вы реализуете UI приложение, которое позволяет пользователям изменять настройки, но в то же время принимает решения на основе возвращенных заголовков, рекомендуется ограничить эту настройку только для чтения.
Пример: SET http_response_headers = '{"Content-Type": "image/png"}'
http_retry_initial_backoff_ms
Минимальные миллисекунды для времени ожидания при повторной попытке чтения через HTTP.
http_retry_max_backoff_ms
Максимальные миллисекунды для времени ожидания при повторной попытке чтения через HTTP.
http_send_timeout
Тайм-аут отправки HTTP запроса (в секундах).
Возможные значения:
- Любое положительное целое число.
- 0 - Отключено (бесконечный тайм-аут).
Это применимо только к профилю по умолчанию. Требуется перезагрузка сервера, чтобы изменения вступили в силу.
http_skip_not_found_url_for_globs
Пропускать URL для glob с ошибкой HTTP_NOT_FOUND.
http_wait_end_of_query
Включить буферизацию HTTP ответа на стороне сервера.
http_write_exception_in_output_format
Записать исключение в формате вывода для получения корректного результата. Работает с форматами JSON и XML.
http_zlib_compression_level
Устанавливает уровень сжатия данных в ответе на HTTP запрос, если enable_http_compression = 1.
Возможные значения: Числа от 1 до 9.
iceberg_snapshot_id
Запрос таблицы Iceberg, используя конкретный идентификатор снимка.
iceberg_timestamp_ms
Запрос таблицы Iceberg, используя снимок, который был актуален в конкретный момент времени.
idle_connection_timeout
Тайм-аут закрытия неактивных TCP соединений после указанного количества секунд.
Возможные значения:
- Положительное целое число (0 - закрыть немедленно, через 0 секунд).
ignore_cold_parts_seconds
Имеет значение только в ClickHouse Cloud. Исключает новые части данных из SELECT запросов, пока они не будут предварительно разогреты (см. cache_populated_by_fetch) или не станут старше указанного количества секунд. Только для Replicated-/SharedMergeTree.
ignore_data_skipping_indices
Игнорирует индексы пропуска, указанные, если они используются в запросе.
Рассмотрим следующий пример:
Запрос без игнорирования каких-либо индексов:
Игнорирование индекса xy_idx
:
Работает с таблицами семейства MergeTree.
ignore_drop_queries_probability
Если включено, сервер будет игнорировать все запросы DROP таблиц с заданной вероятностью (для Memory и JOIN движков это заменит DROP на TRUNCATE). Используется в тестовых целях.
ignore_materialized_views_with_dropped_target_table
Игнорировать МП с удаленной целевой таблицей во время вставки в представления.
ignore_on_cluster_for_replicated_access_entities_queries
Игнорировать ON CLUSTER клаузу для запросов управления реплицируемыми сущностями.
ignore_on_cluster_for_replicated_named_collections_queries
Игнорировать ON CLUSTER клаузу для запросов управления реплицируемыми именованными коллекциями.
ignore_on_cluster_for_replicated_udf_queries
Игнорировать ON CLUSTER клаузу для запросов управления реплицируемыми UDF.
implicit_select
Разрешить написание простых SELECT запросов без ведущего ключевого слова SELECT, что делает это простым для использования в калькуляторном стиле, например, 1 + 2
становится допустимым запросом.
В clickhouse-local
это включено по умолчанию и может быть явно отключено.
implicit_table_at_top_level
Если не пусто, запросы без FROM на верхнем уровне будут считываться из этой таблицы вместо system.one.
Это используется в clickhouse-local для обработки входных данных. Настройка может быть явно задана пользователем, но не предназначена для этого типа использования.
Подзапросы не затрагиваются этой настройкой (ни скалярные, ни FROM, ни IN подзапросы). SELECT на верхнем уровне объединений, пересечений, исключений обрабатываются одинаково и затрагиваются этой настройкой, независимо от их группировки в скобках. Не указано, как эта настройка влияет на представления и распределенные запросы.
Настройка принимает имя таблицы (тогда таблица разрешается из текущей базы данных) или квалифицированное имя в форме 'database.table'. Имена базы данных и таблиц должны быть без кавычек - разрешены только простые идентификаторы.
implicit_transaction
Если включено и еще не внутри транзакции, оборачивает запрос внутри полной транзакции (begin + commit или rollback).
input_format_parallel_parsing
Включает или отключает порядок-сохраняющий параллельный анализ форматов данных. Поддерживается только для TSV, TSKV, CSV и JSONEachRow форматов.
Возможные значения:
- 1 — Включено.
- 0 — Отключено.
insert_allow_materialized_columns
Если настройка включена, разрешает использование материализованных колонок в INSERT.
insert_deduplicate
Включает или отключает блоковую дедупликацию для INSERT
(для таблиц Replicated*).
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
По умолчанию блоки, вставляемые в реплицируемые таблицы с помощью оператора INSERT
, являются дедуплицированными (см. Репликация данных).
Для реплицируемых таблиц по умолчанию дедуплицируются только 100 самых последних блоков для каждой партиции (см. replicated_deduplication_window, replicated_deduplication_window_seconds).
Для не реплицируемых таблиц см. non_replicated_deduplication_window.
insert_deduplication_token
Настройка позволяет пользователю предоставить собственную семантику дедупликации в MergeTree/ReplicatedMergeTree. Например, предоставив уникальное значение для настройки в каждой операции INSERT, пользователь может избежать дедупликации одинаковых вставленных данных.
Возможные значения:
- Любая строка
insert_deduplication_token
используется для дедупликации только когда не пусто.
Для реплицируемых таблиц по умолчанию дедуплицируются только 100 самых последних вставок для каждой партиции (см. replicated_deduplication_window, replicated_deduplication_window_seconds). Для не реплицируемых таблиц см. non_replicated_deduplication_window.
insert_deduplication_token
работает на уровне партиции (так же как insert_deduplication
контрольная сумма). У нескольких партиций может быть одинаковый insert_deduplication_token
.
Пример:
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
. Последующие таймауты рассчитываются следующим образом:
Например, если insert_keeper_retry_initial_backoff_ms=100
, insert_keeper_retry_max_backoff_ms=10000
и insert_keeper_max_retries=8
, то таймауты будут равны 100, 200, 400, 800, 1600, 3200, 6400, 10000
.
Кроме отказоустойчивости, повторные попытки нацелены на предоставление лучшего пользовательского опыта - они позволяют избежать возвращения ошибки во время выполнения INSERT, если Keeper был перезапущен, например, из-за обновления.
insert_keeper_retry_initial_backoff_ms
Начальный тайм-аут (в миллисекундах) для повторной попытки запроса Keeper, который завершился неудачно во время выполнения INSERT.
Возможные значения:
- Положительное целое число.
- 0 — Без тайм-аута.
insert_keeper_retry_max_backoff_ms
Максимальный тайм-аут (в миллисекундах) для повторной попытки запроса Keeper, который завершился неудачно во время выполнения INSERT.
Возможные значения:
- Положительное целое число.
- 0 — Максимальный тайм-аут не ограничен.
insert_null_as_default
Включает или отключает вставку значений по умолчанию вместо NULL в столбцы с не nullable типами данных.
Если тип столбца не является nullable и эта настройка отключена, то вставка NULL
вызывает исключение. Если тип столбца является nullable, то значения NULL
вставляются как есть, независимо от этой настройки.
Эта настройка применима к запросам INSERT ... SELECT. Обратите внимание, что подзапросы SELECT
могут быть объединены с помощью оператора UNION ALL
.
Возможные значения:
- 0 — Вставка
NULL
в неналично допускающий столбец приводит к исключению. - 1 — Вместо
NULL
вставляется значение по умолчанию для столбца.
insert_quorum
Эта настройка не применяется к SharedMergeTree, см. Консистентность SharedMergeTree для получения дополнительной информации.
Включает записи с кворумом.
- Если
insert_quorum < 2
, записи с кворумом отключены. - Если
insert_quorum >= 2
, записи с кворумом включены. - Если
insert_quorum = 'auto'
, использовать число большинства (number_of_replicas / 2 + 1
) как количество кворума.
Записи с кворумом
INSERT
удается только тогда, когда ClickHouse удается корректно записать данные на insert_quorum
реплик в течение insert_quorum_timeout
. Если по какой-либо причине количество реплик с успешными записями не достигает insert_quorum
, запись считается неудачной, и ClickHouse удалит вставленный блок из всех реплик, где данные уже были записаны.
Когда insert_quorum_parallel
отключен, все реплики в кворуме являются согласованными, т.е. они содержат данные от всех предыдущих INSERT
запросов (последовательность INSERT
линейирована). При чтении данных, записанных с использованием insert_quorum
, и insert_quorum_parallel
отключен, вы можете включить последовательную согласованность для SELECT
запросов с помощью select_sequential_consistency.
ClickHouse генерирует исключение:
- Если количество доступных реплик в момент выполнения запроса меньше, чем
insert_quorum
. - Когда
insert_quorum_parallel
отключен, и делается попытка записать данные, когда предыдущий блок еще не был вставлен вinsert_quorum
реплик. Эта ситуация может возникнуть, если пользователь пытается выполнить другойINSERT
запрос в ту же таблицу до завершения предыдущего запроса сinsert_quorum
.
См. также:
insert_quorum_parallel
Эта настройка не применяется к SharedMergeTree, см. унификация SharedMergeTree для получения более подробной информации.
Включает или отключает параллелизм для запросов INSERT
с кворумом. Если включено, дополнительные запросы INSERT
могут быть отправлены, пока предыдущие запросы еще не завершились. Если отключено, дополнительные записи в ту же таблицу будут отклонены.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
См. также:
insert_quorum_timeout
Время ожидания записи кворума в миллисекундах. Если время ожидания истекло и запись еще не произошла, ClickHouse создаст исключение, и клиент должен повторить запрос, чтобы записать тот же блок в ту же или любую другую реплику.
См. также:
insert_shard_id
Если не 0
, указывает шард Distributed таблицы, в который данные будут вставлены синхронно.
Если значение insert_shard_id
неверно, сервер выбросит исключение.
Чтобы получить количество шардов на requested_cluster
, вы можете проверить конфигурацию сервера или использовать этот запрос:
Возможные значения:
- 0 — Отключено.
- Любое число от
1
доshards_num
соответствующей Distributed таблицы.
Пример
Запрос:
Результат:
interactive_delay
Интервал в микросекундах для проверки того, было ли отменено выполнение запроса, и отправка информации о прогрессе.
intersect_default_mode
Устанавливает режим по умолчанию в запросе INTERSECT. Возможные значения: пустая строка, 'ALL', 'DISTINCT'. Если пустая строка, запрос без режима вызовет исключение.
join_algorithm
Указывает, какой алгоритм JOIN используется.
Можно указать несколько алгоритмов, и для конкретного запроса будет выбран доступный, исходя из типа/строгости и движка таблицы.
Возможные значения:
- grace_hash
Grace hash join используется. Grace hash предоставляет вариант алгоритма, который обеспечивает производительность сложных соединений, ограничивая при этом использование памяти.
Первая фаза соединения grace читает правую таблицу и разбивает ее на N ведер в зависимости от хеш-значения ключевых колонок (в начале N равно grace_hash_join_initial_buckets
). Это делается таким образом, чтобы гарантировать, что каждое ведро может обрабатываться независимо. Строки из первого ведра добавляются в хеш-таблицу в памяти, в то время как остальные сохраняются на диске. Если хеш-таблица превышает лимит памяти (например, как задано в max_bytes_in_join
), количество ведер увеличивается, и назначенное ведро для каждой строки меняется. Любые строки, которые не принадлежат текущему ведру, сбрасываются и переназначаются.
Поддерживает INNER/LEFT/RIGHT/FULL ALL/ANY JOIN
.
- hash
Используется алгоритм хеш-соединения. Наиболее общая реализация, которая поддерживает все комбинации типа и строгости и несколько ключей соединения, которые объединяются с помощью OR
в разделе JOIN ON
.
При использовании алгоритма hash
правая часть JOIN
загружается в оперативную память.
- parallel_hash
Вариация hash
соединения, которая разбивает данные на ведра и строит несколько хеш-таблиц одновременно, чтобы ускорить этот процесс.
При использовании алгоритма parallel_hash
правая часть JOIN
загружается в оперативную память.
- partial_merge
Вариация сортировочного алгоритма слияния, где только правая таблица полностью отсортирована.
RIGHT JOIN
и FULL JOIN
поддерживаются только с ALL
строгостью (SEMI
, ANTI
, ANY
и ASOF
не поддерживаются).
При использовании алгоритма partial_merge
ClickHouse сортирует данные и сбрасывает их на диск. Алгоритм partial_merge
в ClickHouse немного отличается от классической реализации. Сначала ClickHouse сортирует правую таблицу по ключам соединения в блоках и создает минимальный-максимальный индекс для отсортированных блоков. Затем он сортирует части левой таблицы по join key
и соединяет их с правой таблицей. Минимально-максимальный индекс также используется для пропуска ненужных блоков правой таблицы.
- direct
Этот алгоритм можно применить, когда хранилище для правой таблицы поддерживает запросы ключ-значение.
Алгоритм direct
выполняет поиск в правой таблице, используя строки из левой таблицы в качестве ключей. Он поддерживается только специальным хранилищем, таким как Dictionary или EmbeddedRocksDB и только для LEFT
и INNER
JOIN.
- auto
При установке auto
, сначала пробуется hash
соединение, и алгоритм переключается на лету на другой алгоритм, если нарушен лимит памяти.
- full_sorting_merge
Алгоритм сортировочного слияния с полной сортировкой объединённых таблиц перед соединением.
- prefer_partial_merge
ClickHouse всегда пытается использовать partial_merge
соединение, если это возможно, в противном случае используется hash
. Устарело, аналогично partial_merge,hash
.
- default (устаревший)
Устаревшее значение, пожалуйста, больше не используйте. Аналогично direct,hash
, т.е. старайтесь использовать прямое соединение и хеш-соединение (в этом порядке).
join_any_take_last_row
Изменяет поведение операций соединения с ANY
строгой.
Эта настройка применяется только к JOIN
операциям с таблицами Join движков.
Возможные значения:
- 0 — Если правая таблица имеет более одной подходящей строки, соединяется только первая найденная.
- 1 — Если правая таблица имеет более одной подходящей строки, соединяется только последняя найденная.
См. также:
join_default_strictness
Устанавливает строгую по умолчанию для JOIN клаузул.
Возможные значения:
ALL
— Если у правой таблицы несколько подходящих строк, ClickHouse создает декартово произведение подходящих строк. Это обычное поведениеJOIN
в стандартном SQL.ANY
— Если у правой таблицы несколько подходящих строк, соединяется только первая найденная. Если у правой таблицы только одна подходящая строка, результатыANY
иALL
одинаковы.ASOF
— Для соединения последовательностей с неопределённым совпадением.Пустая строка
— ЕслиALL
илиANY
не указаны в запросе, ClickHouse выбрасывает исключение.
join_on_disk_max_files_to_merge
Ограничивает количество файлов, разрешённых для параллельной сортировки в MergeJoin операциях, когда они выполняются на диске.
Чем больше значение настройки, тем больше памяти используется и тем меньше требуется ввод-вывод диска.
Возможные значения:
- Любое положительное целое число, начиная с 2.
join_output_by_rowlist_perkey_rows_threshold
Нижний предел среднего количества строк по ключу в правой таблице, чтобы определить, следует ли выводить по списку строк в хеш-соединении.
join_overflow_mode
Определяет, какое действие ClickHouse выполняет, когда одно из следующих ограничений соединения достигается:
Возможные значения:
THROW
— ClickHouse выбрасывает исключение и прерывает операцию.BREAK
— ClickHouse прерывает операцию и не выбрасывает исключение.
Значение по умолчанию: THROW
.
См. также
join_to_sort_maximum_table_rows
Максимальное количество строк в правой таблице для определения, следует ли переставить правую таблицу по ключу в левом или внутреннем соединении.
join_to_sort_minimum_perkey_rows
Нижний предел среднего количества строк по ключу в правой таблице для определения, следует ли переставить правую таблицу по ключу в левом или внутреннем соединении. Эта настройка обеспечивает то, что оптимизация не применяется для разреженных ключей таблицы.
join_use_nulls
Устанавливает тип поведения JOIN. При объединении таблиц могут появляться пустые ячейки. ClickHouse заполняет их по-разному в зависимости от этой настройки.
Возможные значения:
- 0 — Пустые ячейки заполняются значением по умолчанию соответствующего типа поля.
- 1 —
JOIN
ведет себя так же, как в стандартном SQL. Тип соответствующего поля конвертируется в Nullable, и пустые ячейки заполняются NULL.
joined_subquery_requires_alias
Принуждает объединенные подзапросы и табличные функции иметь псевдонимы для корректной квалификации имен.
kafka_disable_num_consumers_limit
Отключить лимит на kafka_num_consumers, который зависит от числа доступных ядер CPU.
kafka_max_wait_ms
Время ожидания в миллисекундах для чтения сообщений из Kafka перед повторной попыткой.
Возможные значения:
- Положительное целое число.
- 0 — Бесконечное время ожидания.
См. также:
keeper_map_strict_mode
Принуждает к дополнительным проверкам во время операций на KeeperMap. Например, выбрасывает исключение при вставке уже существующего ключа.
keeper_max_retries
Максимальное количество повторных попыток для общих операций keeper.
keeper_retry_initial_backoff_ms
Начальное время ожидания для общих операций keeper.
keeper_retry_max_backoff_ms
Максимальное время ожидания для общих операций keeper.
least_greatest_legacy_null_behavior
Если включено, функции 'least' и 'greatest' возвращают NULL, если один из их аргументов равен NULL.
legacy_column_name_of_tuple_literal
Список всех имен элементов больших литералов кортежей в их именах колонок вместо хешей. Эта настройка существует только по причинам совместимости. Имеет смысл установить на 'true', пока выполняется поэтапное обновление кластера с версии ниже 21.7 до более высокой.
lightweight_delete_mode
Режим внутреннего запроса на обновление, который выполняется как часть легковесного удаления.
Возможные значения:
alter_update
- выполнить запросALTER UPDATE
, который создаёт тяжёлую мутацию.lightweight_update
- выполнить легковесное обновление, если это возможно, в противном случае выполнитьALTER UPDATE
.lightweight_update_force
- выполнить легковесное обновление, если это возможно, в противном случае выбросить исключение.
lightweight_deletes_sync
То же, что и mutations_sync
, но контролирует только выполнение легковесных удалений.
Возможные значения:
- 0 - Мутации выполняются асинхронно.
- 1 - Запрос ждет завершения легковесных удалений на текущем сервере.
- 2 - Запрос ждет завершения легковесных удалений на всех репликах (если они существуют).
См. также
limit
Устанавливает максимальное количество строк, которые необходимо получить из результата запроса. Это значение корректирует значение, установленное клаузулой LIMIT, так что лимит, указанный в запросе, не может превышать лимит, установленный этой настройкой.
Возможные значения:
- 0 — Количество строк не ограничено.
- Положительное целое число.
live_view_heartbeat_interval
Интервал отправки сигнала о «живом» запросе в секундах, чтобы указать, что запрос активен.
load_balancing
Указывает алгоритм выбора реплик, который используется для распределенной обработки запросов.
ClickHouse поддерживает следующие алгоритмы выбора реплик:
- Случайный (по умолчанию)
- Ближайшее имя хоста
- Расстояние Левенштейна имени хоста
- По порядку
- Первый или случайный
- По кругу
См. также:
Случайный (по умолчанию)
Количество ошибок учитывается для каждой реплики. Запрос отправляется на реплику с наименьшим количеством ошибок, и если их несколько, на любую из них.
Недостатки: Близость сервера не учитывается; если у реплик разные данные, вы также получите разные данные.
Ближайшее имя хоста
Количество ошибок учитывается для каждой реплики. Каждые 5 минут количество ошибок делится на 2. Таким образом, количество ошибок подсчитывается за недавний период с экспоненциальным сглаживанием. Если существует одна реплика с минимальным количеством ошибок (т.е. ошибки произошли недавно на других репликах), запрос отправляется на неё. Если есть несколько реплик с одинаковым минимальным количеством ошибок, запрос отправляется на реплику с именем хоста, наиболее похожим на имя хоста сервера в конфигурационном файле (по количеству различных символов в идентичных позициях, до минимальной длины обоих имён хостов).
Например, example01-01-1 и example01-01-2 отличаются в одной позиции, в то время как example01-01-1 и example01-02-2 различаются в двух местах. Этот метод может показаться примитивным, но он не требует внешних данных о топологии сети и не сравнивает IP-адреса, что было бы сложно для наших IPv6 адресов.
Таким образом, если есть эквивалентные реплики, предпочтение отдается ближайшей по имени. Мы также можем предположить, что при отправке запроса на один и тот же сервер, при отсутствии сбоев, распределенный запрос также будет обращаться к одним и тем же серверам. Так что даже если на репликах находятся разные данные, запрос, как правило, вернет одни и те же результаты.
Расстояние Левенштейна имени хоста
Точно так же, как nearest_hostname
, но сравнивает имя хоста на основе расстояния Левенштейна. Например:
По порядку
Реплики с одинаковым количеством ошибок используется в том порядке, в котором они указаны в конфигурации. Этот метод подходит, когда точно известно, какая реплика предпочтительнее.
Первый или случайный
Этот алгоритм выбирает первую реплику в наборе или случайную реплику, если первая недоступна. Он эффективен в конфигурациях с перекрестной репликацией, но бесполезен в других конфигурациях.
Алгоритм first_or_random
решает проблему алгоритма in_order
. С in_order
при отказе одной реплики следующая получает двойную нагрузку, в то время как остальные реплики обрабатывают обычное количество трафика. При использовании алгоритма first_or_random
нагрузка равномерно распределяется между остающимися доступными репликами.
Можно явно определить, какая реплика будет первой, с помощью настройки load_balancing_first_offset
. Это обеспечивает больший контроль за балансировкой нагрузки от запросов между репликами.
По кругу
Этот алгоритм использует политику круговой балансировки между репликами с одинаковым количеством ошибок (учитываются только запросы с политикой round_robin
).
load_balancing_first_offset
На какую реплику предпочтительно отправить запрос, когда используется стратегия балансировки нагрузки FIRST_OR_RANDOM.
load_marks_asynchronously
Асинхронно загружать метки MergeTree.
local_filesystem_read_method
Метод чтения данных с локальной файловой системы, один из: read, pread, mmap, io_uring, pread_threadpool.
Метод 'io_uring' является экспериментальным и не работает для Log, TinyLog, StripeLog, File, Set и Join, а также других таблиц с добавляемыми файлами при наличии конкурентных операций чтения и записи. Если вы читаете различные статьи о 'io_uring' в Интернете, не поддавайтесь на их обман. Это не лучший метод чтения файлов, за исключением случая большого количества мелких запросов ввода-вывода, чего нет в ClickHouse. Нет причин включать 'io_uring'.
local_filesystem_read_prefetch
Следует ли использовать предварительную выборку при чтении данных с локальной файловой системы.
lock_acquire_timeout
Определяет, сколько секунд запрос на блокировку ждет перед тем, как завершиться неудачей.
Время ожидания блокировки используется для защиты от взаимных блокировок при выполнении операций чтения/записи с таблицами. Когда время ожидания истекает и запрос на блокировку завершается неудачей, сервер ClickHouse выбрасывает исключение "Попытка блокировки превышена! Возможная взаимная блокировка предотвращена. Клиент должен повторить попытку." с кодом ошибки DEADLOCK_AVOIDED
.
Возможные значения:
- Положительное целое число (в секундах).
- 0 — Нет времени ожидания блокировки.
log_comment
Указывает значение для поля log_comment
таблицы system.query_log и текст комментария для журнала сервера.
Это может быть использовано для улучшения читаемости журналов сервера. Кроме того, это помогает выбрать запросы, относящиеся к тесту, из system.query_log
после выполнения clickhouse-test.
Возможные значения:
- Произвольная строка длиной не более max_query_size. Если слишком превышен max_query_size, сервер выбрасывает исключение.
Пример
Запрос:
Результат:
log_formatted_queries
Позволяет записывать отформатированные запросы в системную таблицу system.query_log (заполняет колонку formatted_query
в system.query_log).
Возможные значения:
- 0 — Отформатированные запросы не записываются в системную таблицу.
- 1 — Отформатированные запросы записываются в системную таблицу.
log_processors_profiles
Записывать время, которое процессор провел во время выполнения/ожидания данных в таблицу system.processors_profile_log
.
См. также:
log_profile_events
Записывать статистику производительности запросов в query_log
, query_thread_log
и query_views_log
.
log_queries
Настройка ведения журнала запросов.
Запросы, отправленные в ClickHouse с этой настройкой, записываются в соответствии с правилами конфигурационного параметра сервера query_log.
Пример:
log_queries_cut_to_length
Если длина запроса превышает заданный предел (в байтах), то обрезать запрос при записи в журнaл запросов. Также ограничить длину напечатанного запроса в обычном текстовом журнале.
log_queries_min_query_duration_ms
Если включено (не нулевое), запросы быстрее, чем значение этой настройки, не будут записываться в журнал (вы можете подумать об этом как о long_query_time
для журнала медленных запросов MySQL), и это, в основном, означает, что вы не найдете их в следующих таблицах:
system.query_log
system.query_thread_log
Только запросы следующего типа попадут в журнал:
-
QUERY_FINISH
-
EXCEPTION_WHILE_PROCESSING
-
Тип: миллисекунды
-
Значение по умолчанию: 0 (любой запрос)
log_queries_min_type
Минимальный тип для записи в query_log
.
Возможные значения:
QUERY_START
(=1
)QUERY_FINISH
(=2
)EXCEPTION_BEFORE_START
(=3
)EXCEPTION_WHILE_PROCESSING
(=4
)
Можно использовать для ограничения того, какие сущности будут попадать в query_log
, например, если вас интересуют только ошибки, тогда можно использовать EXCEPTION_WHILE_PROCESSING
:
log_queries_probability
Позволяет пользователю записывать в системы таблицы query_log, query_thread_log и query_views_log только выборку запросов, выбранных случайным образом, с заданной вероятностью. Это помогает уменьшить нагрузку при большом объеме запросов за секунду.
Возможные значения:
- 0 — Запросы не записываются в системные таблицы.
- Положительное число с плавающей точкой в диапазоне [0..1]. Например, если значение настройки равно
0.5
, примерно половина запросов будет записываться в системные таблицы. - 1 — Все запросы записываются в системные таблицы.
log_query_settings
Записывать настройки запросов в query_log
и журнал спана OpenTelemetry.
log_query_threads
Настройка ведения журнала потоков запросов.
Потоки запросов записываются в таблицу system.query_thread_log. Эта настройка действует только тогда, когда log_queries истинно. Потоки запросов, выполняемые ClickHouse с этой настройкой, записываются в соответствии с правилами конфигурационного параметра сервера query_thread_log.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Пример
log_query_views
Настройка ведения журнала представлений запросов.
Когда запрос, выполняемый ClickHouse с этой настройкой, имеет связанные представления (материализованные или live-представления), они записываются в конфигурационный параметр сервера query_views_log.
Пример:
low_cardinality_allow_in_native_format
Разрешает или ограничивает использование типа данных LowCardinality с форматом Native.
Если использование LowCardinality
ограничено, сервер ClickHouse конвертирует колонки типа LowCardinality
в обычные для запросов SELECT
, и конвертирует обычные колонки в колонки типа LowCardinality
для запросов INSERT
.
Эта настройка необходима в основном для сторонних клиентов, которые не поддерживают тип данных LowCardinality
.
Возможные значения:
- 1 — Использование
LowCardinality
не ограничено. - 0 — Использование
LowCardinality
ограничено.
low_cardinality_max_dictionary_size
Устанавливает максимальный размер в строках разделяемого глобального словаря для типа данных LowCardinality, который может быть записан в файловую систему хранения. Эта настройка предотвращает проблемы с оперативной памятью в случае неограниченного роста словаря. Все данные, которые не могут быть закодированы из-за ограничения максимального размера словаря, ClickHouse записывает обычным способом.
Возможные значения:
- Любое положительное целое число.
low_cardinality_use_single_dictionary_for_part
Включает или отключает использование единого словаря для части данных.
По умолчанию сервер ClickHouse отслеживает размер словарей, и если словарь переполняется, сервер начинает записывать следующий. Чтобы запретить создание нескольких словарей, установите low_cardinality_use_single_dictionary_for_part = 1
.
Возможные значения:
- 1 — Запрещает создание нескольких словарей для части данных.
- 0 — Создание нескольких словарей для части данных не запрещено.
low_priority_query_wait_time_ms
Когда механизм приоритизации запросов используется (см. настройку priority
), запросы с низким приоритетом ждут завершения более приоритетных запросов. Эта настройка указывает продолжительность ожидания.
make_distributed_plan
Создаёт распределённый план запроса.
materialize_skip_indexes_on_insert
Если INSERT создаёт и сохраняет индексы пропуска. Если отключено, индексы пропуска будут созданы и сохранены во время слияний или явного MATERIALIZE INDEX.
materialize_statistics_on_insert
Если INSERT создаёт и вставляет статистику. Если отключено, статистика будет построена и сохранена во время слияний или явного MATERIALIZE STATISTICS.
materialize_ttl_after_modify
Применяет TTL для старых данных после запроса ALTER MODIFY TTL.
materialized_views_ignore_errors
Позволяет игнорировать ошибки для MATERIALIZED VIEW и передавать оригинальный блок в таблицу независимо от MVs.
max_analyze_depth
Максимальное количество анализов, выполняемых интерпретатором.
max_ast_depth
Максимальная глубина вложенности синтаксического дерева запроса. При превышении выбрасывается исключение.
На данный момент это не проверяется во время парсинга, а только после парсинга запроса. Это означает, что слишком глубокое синтаксическое дерево может быть создано во время парсинга, но запрос завершится с ошибкой.
max_ast_elements
Максимальное количество элементов в синтаксическом дереве запроса. При превышении выбрасывается исключение.
На данный момент это не проверяется во время парсинга, а только после парсинга запроса. Это означает, что слишком глубокое синтаксическое дерево может быть создано во время парсинга, но запрос завершится с ошибкой.
max_autoincrement_series
Ограничение на количество серий, создаваемых функцией generateSeriesID
.
Поскольку каждая серия представляет собой узел в Keeper, рекомендуется не иметь более нескольких миллионов из них.
max_backup_bandwidth
Максимальная скорость чтения в байтах в секунду для конкретной резервной копии на сервере. Ноль означает неограниченное.
max_block_size
В ClickHouse данные обрабатываются блоками, которые представляют собой наборы частей колонок. Внутренние циклы обработки для одного блока эффективны, но затраты при обработке каждого блока заметны.
Настройка max_block_size
указывает рекомендуемое максимальное количество строк, которое следует включить в один блок при загрузке данных из таблиц. Блоки размером max_block_size
не всегда загружаются из таблицы: если ClickHouse определяет, что нужно извлечь меньше данных, обрабатывается меньший блок.
Размер блока не должен быть слишком маленьким, чтобы избежать заметных затрат при обработке каждого блока. Он также не должен быть слишком большим, чтобы обеспечить быструю реализацию запросов с LIMIT после обработки первого блока. При установке max_block_size
цель должна заключаться в том, чтобы избежать чрезмерного потребления памяти при извлечении большого количества колонок в нескольких потоках и сохранить хотя бы некоторую локальность кэша.
max_bytes_before_external_group_by
Облачное значение по умолчанию: половина объема памяти на реплику.
Включает или отключает выполнение операторов GROUP BY
в внешней памяти.
(См. GROUP BY в внешней памяти)
Возможные значения:
- Максимальный объем ОЗУ (в байтах), который может быть использован для одной операции GROUP BY.
0
—GROUP BY
в внешней памяти отключен.
Если использование памяти во время операций GROUP BY превышает этот порог в байтах, активируйте режим 'внешней агрегации' (spill data to disk).
Рекомендуемое значение — половина доступной системной памяти.
max_bytes_before_external_sort
Облачное значение по умолчанию: половина объема памяти на реплику.
Включает или отключает выполнение операторов ORDER BY
в внешней памяти. См. Подробности реализации ORDER BY.
Если использование памяти во время операции ORDER BY превышает этот порог в байтах, активируется режим 'внешней сортировки' (spill data to disk).
Возможные значения:
- Максимальный объем ОЗУ (в байтах), который может быть использован для одной операции ORDER BY. Рекомендуемое значение — половина доступной системной памяти.
0
—ORDER BY
в внешней памяти отключен.
max_bytes_before_remerge_sort
В случае ORDER BY с LIMIT, когда использование памяти выше указанного порога, выполняются дополнительные шаги слияния блоков перед финальным слиянием, чтобы сохранить только верхние строки LIMIT.
max_bytes_in_distinct
Максимальное количество байт состояния (в распакованных байтах) в памяти, которое используется хеш-таблицей при использовании DISTINCT.
max_bytes_in_join
Максимальный размер в байтах хеш-таблицы, используемой при соединении таблиц.
Эта настройка применяется к операциям SELECT ... JOIN и Join table engine.
Если запрос содержит соединения, ClickHouse проверяет эту настройку для каждого промежуточного результата.
ClickHouse может предпринять различные действия, когда предел достигается. Используйте настройки join_overflow_mode, чтобы выбрать действие.
Возможные значения:
- Положительное целое число.
- 0 — Контроль памяти отключен.
max_bytes_in_set
Максимальное количество байт (незапакованных данных), используемое множеством в операторе IN, созданным из подзапроса.
max_bytes_ratio_before_external_group_by
Соотношение доступной памяти, разрешенное для GROUP BY
. После достижения этого порога
используется внешняя память для агрегации.
Например, если установлено значение 0.6
, GROUP BY
разрешит использовать 60% доступной памяти
(для сервера/пользователя/слияний) в начале выполнения, после чего начнётся внешняя агрегация.
max_bytes_ratio_before_external_sort
Соотношение доступной памяти, разрешенное для ORDER BY
. После достижения этого порога
используется внешняя сортировка.
Например, если установлено значение 0.6
, ORDER BY
разрешит использовать 60%
доступной памяти
(для сервера/пользователя/слияний) в начале выполнения, после чего начнётся внешняя сортировка.
max_bytes_to_read
Максимальное количество байт (незапакованных данных), которые могут быть прочитаны из таблицы при выполнении запроса. Ограничение проверяется для каждого обработанного блока данных, применяется только к самому глубокому выражению таблицы и при чтении с удаленного сервера, проверяется только на удалённом сервере.
max_bytes_to_read_leaf
Максимальное количество байт (незапакованных данных), которые могут быть прочитаны из локальной таблицы на узле-листе при выполнении распределённого запроса. В то время как распределенные запросы могут выдавать несколько подзапросов каждому шард (листьев) - этот лимит будет проверяться только на этапе чтения на узлах-листах и будет игнорироваться на этапе слияния результатов на корневом узле.
Например, если кластер состоит из 2 шардов, и каждый шард содержит таблицу с
100 байт данных. Распределённый запрос, который предполагает читать все данные
из обеих таблиц с настройкой max_bytes_to_read=150
, потерпит неудачу, так как в общем это
будет 200 байт. Запрос с max_bytes_to_read_leaf=150
будет успешным, так как
узлы-листья прочитают максимум 100 байт.
Ограничение проверяется для каждого обработанного блока данных.
Эта настройка нестабильна с prefer_localhost_replica=1
.
max_bytes_to_sort
Максимальное количество байт перед сортировкой. Если необходимо обработать больше указанного
количества незапакованных байтов для операции ORDER BY, поведение будет
определяться параметром sort_overflow_mode
, который по умолчанию установлен в throw
.
max_bytes_to_transfer
Максимальное количество байт (незапакованных данных), которые могут быть переданы удалённому серверу или сохранены во временной таблице, когда выполняется секция GLOBAL IN/JOIN.
max_columns_to_read
Максимальное количество колонок, которые могут быть прочитаны из таблицы в одном запросе. Если запрос требует чтения большего количества колонок, выбрасывается исключение.
Эта настройка полезна для предотвращения слишком сложных запросов.
Значение 0
означает неограниченное количество.
max_compress_block_size
Максимальный размер блоков незапакованных данных перед сжатием для записи в таблицу. По умолчанию — 1,048,576 (1 МБ). Указание меньшего размера блока обычно приводит к слегка снижению коэффициента сжатия, скорость сжатия и распаковки немного увеличивается из-за локальности кэша, а потребление памяти уменьшается.
Это настройка уровня эксперта, и вам не следует её изменять, если вы только начинаете работать с ClickHouse.
Не путайте блоки для сжатия (кучу памяти, состоящую из байтов) с блоками для обработки запросов (набор строк из таблицы).
max_concurrent_queries_for_all_users
Бросает исключение, если значение этой настройки меньше или равно текущему количеству одновременно обрабатываемых запросов.
Пример: max_concurrent_queries_for_all_users
можно установить на 99 для всех пользователей, а администратор базы данных может установить его на 100 для себя, чтобы выполнять запросы для расследования даже когда сервер перегружен.
Изменение настройки для одного запроса или пользователя не затрагивает другие запросы.
Возможные значения:
- Положительное целое число.
- 0 — Без ограничений.
Пример
См. Также
max_concurrent_queries_for_user
Максимальное количество одновременно обрабатываемых запросов на пользователя.
Возможные значения:
- Положительное целое число.
- 0 — Без ограничений.
Пример
max_distributed_connections
Максимальное количество одновременных соединений с удаленными серверами для распределенной обработки одного запроса к одной распределенной таблице. Рекомендуется устанавливать значение не меньше числа серверов в кластере.
Следующие параметры используются только при создании распределенных таблиц (и при запуске сервера), поэтому нет необходимости изменять их во время выполнения.
max_distributed_depth
Ограничивает максимальную глубину рекурсивных запросов для таблиц Distributed.
Если значение превышено, сервер выбрасывает исключение.
Возможные значения:
- Положительное целое число.
- 0 — Неограниченная глубина.
max_download_buffer_size
Максимальный размер буфера для параллельной загрузки (например, для URL engine) на каждый поток.
max_download_threads
Максимальное количество потоков для загрузки данных (например, для URL engine).
max_estimated_execution_time
Максимальное предполагаемое время выполнения запроса в секундах. Проверяется для каждого блока данных, когда истекает timeout_before_checking_execution_speed
.
max_execution_speed
Максимальное количество выполняемых строк в секунду. Проверяется для каждого блока данных, когда
timeout_before_checking_execution_speed
истекает. Если скорость выполнения высокая, скорость выполнения будет снижена.
max_execution_speed_bytes
Максимальное количество выполняемых байтов в секунду. Проверяется для каждого блока данных, когда
timeout_before_checking_execution_speed
истекает. Если скорость выполнения высокая, скорость выполнения будет снижена.
max_execution_time
Максимальное время выполнения запроса в секундах.
Параметр max_execution_time
может быть немного сложным для понимания.
Он работает на основе интерполяции относительно текущей скорости выполнения запроса
(это поведение контролируется timeout_before_checking_execution_speed
).
ClickHouse прерывает запрос, если предполагаемое время выполнения превышает
указанное max_execution_time
. По умолчанию timeout_before_checking_execution_speed
установлен в 10 секунд. Это означает, что после 10 секунд выполнения запроса ClickHouse
начнёт оценивать общее время выполнения. Если, например, max_execution_time
установлен на 3600 секунд (1 час), ClickHouse завершит запрос, если предполагаемое
время превысит этот лимит в 3600 секунд. Если вы установите timeout_before_checking_execution_speed
в 0, ClickHouse будет использовать реальное время как основу для max_execution_time
.
Если время выполнения запроса превышает указанное количество секунд, поведение будет
определяться режимом 'timeout_overflow_mode', который по умолчанию установлен в throw
.
Тайм-аут проверяется, и запрос может остановиться только в обозначенных местах во время обработки данных. В настоящее время он не может остановиться во время слияния состояний агрегации или во время анализа запроса, и фактическое время выполнения будет выше значения этой настройки.
max_execution_time_leaf
Семантически аналогично max_execution_time
, но применяется только
на узлах-листах для распределённых или удалённых запросов.
Например, если мы хотим ограничить время выполнения на узле-листе до 10s
, но
не хотим ограничений на начальном узле, вместо того чтобы иметь max_execution_time
в
настройках вложенного подзапроса:
Мы можем использовать max_execution_time_leaf
как настройки запроса:
max_expanded_ast_elements
Максимальный размер синтаксического дерева запроса в количестве узлов после расширения алиасов и звёздочки.
max_fetch_partition_retries_count
Количество попыток при извлечении партиции с другого хоста.
max_final_threads
Устанавливает максимальное количество параллельных потоков для фазы чтения данных запроса SELECT
с модификатором FINAL.
Возможные значения:
- Положительное целое число.
- 0 или 1 — Отключено. Запросы
SELECT
выполняются в одном потоке.
max_http_get_redirects
Максимальное количество разрешённых пересылок HTTP GET. Обеспечивает дополнительные меры безопасности, предотвращающие возможность перенаправления вашего запроса на неожиданные сервисы зловредным сервером.
Это происходит, когда внешний сервер перенаправляет на другой адрес, но этот адрес походит на внутренний адрес инфраструктуры компании, и, послав HTTP-запрос к внутреннему серверу, вы можете запросить внутренний API из внутренней сети, минуя аутентификацию, или даже запросить другие сервисы, такие как Redis или Memcached. Когда у вас нет внутренней инфраструктуры (включая что-то, работащее на вашем локальном хосте) или вы доверяете серверу, безопасно позволить пересылки. Хотя имейте в виду, что если URL использует HTTP вместо HTTPS, вам придется доверять не только удалённому серверу, но и вашему интернет-провайдеру и каждой сети посередине.
max_hyperscan_regexp_length
Определяет максимальную длину каждого регулярного выражения в гиперсканирующих функциях множественного совпадения.
Возможные значения:
- Положительное целое число.
- 0 - Длина не ограничена.
Пример
Запрос:
Результат:
Запрос:
Результат:
См. Также
max_hyperscan_regexp_total_length
Устанавливает максимальную общую длину всех регулярных выражений в каждой гиперсканирующей функции множественного совпадения.
Возможные значения:
- Положительное целое число.
- 0 - Длина не ограничена.
Пример
Запрос:
Результат:
Запрос:
Результат:
См. Также
max_insert_block_size
Размер блоков (в количестве строк), формируемых для вставки в таблицу. Эта настройка применяется только в случаях, когда сервер формирует блоки. Например, для INSERT через HTTP интерфейс сервер разбирает формат данных и формирует блоки указанного размера. Но при использовании clickhouse-client клиент разбирает данные самостоятельно, и настройка 'max_insert_block_size' на сервере не влияет на размер вставляемых блоков. Эта настройка также не имеет назначения при использовании INSERT SELECT, так как данные вставляются с использованием тех же блоков, которые формируются после SELECT.
По умолчанию немного больше, чем max_block_size
. Причина в том, что определённые движки таблиц (*MergeTree
) формируют часть данных на диске для каждого вставленного блока, что является довольно крупной сущностью. Аналогично, таблицы *MergeTree
сортируют данные во время вставки, и достаточно большой размер блока позволяет сортировать больше данных в ОЗУ.
max_insert_delayed_streams_for_parallel_write
Максимальное количество потоков (колонок) для задержки окончательной выгрузки части. По умолчанию - авто (100 в случае, если основной хранилище поддерживает параллельную запись, например S3 и отключено в противном случае).
max_insert_threads
Максимальное количество потоков для выполнения запроса INSERT SELECT
.
Возможные значения:
- 0 (или 1) —
INSERT SELECT
без параллельного выполнения. - Положительное целое число. Больше 1.
Облачное значение по умолчанию: от 2
до 4
, в зависимости от размера сервиса.
Параллельный INSERT SELECT
имеет эффект только если часть SELECT
выполняется параллельно, см. настройку max_threads. Более высокие значения приведут к большему использованию памяти.
max_joined_block_size_rows
Максимальный размер блока для результата JOIN (если алгоритм соединения поддерживает это). 0 означает неограниченное.
max_limit_for_vector_search_queries
Запросы SELECT с LIMIT, превышающим эту настройку, не могут использовать векторные индексы схожести. Это помогает предотвращать переполнение памяти в векторных индексах схожести.
max_live_view_insert_blocks_before_refresh
Ограничивает максимальное количество вставленных блоков, после чего сливаемые блоки удаляются и запрос повторно выполняется.
max_local_read_bandwidth
Максимальная скорость локальных чтений в байтах в секунду.
max_local_write_bandwidth
Максимальная скорость локальных записей в байтах в секунду.
max_memory_usage
Облачное значение по умолчанию: зависит от объема ОЗУ на реплике.
Максимальное количество RAM, которое можно использовать для выполнения запроса на одном сервере.
Значение 0
означает неограниченное.
Эта настройка не учитывает объем доступной памяти или общий объем памяти на машине. Ограничение применяется к одному запросу в пределах одного сервера.
Вы можете использовать SHOW PROCESSLIST
, чтобы увидеть текущее потребление памяти для каждого запроса.
Пиковое потребление памяти отслеживается для каждого запроса и записывается в лог.
Использование памяти полностью не отслеживается для состояний следующих агрегатных функций
с аргументами String
и Array
:
min
max
any
anyLast
argMin
argMax
Потребление памяти также ограничено параметрами max_memory_usage_for_user
и max_server_memory_usage
.
max_memory_usage_for_user
Максимальное количество RAM, которое можно использовать для выполнения запросов пользователя на одном сервере. Ноль означает неограниченное.
По умолчанию объем не ограничен (max_memory_usage_for_user = 0
).
Также смотрите описание max_memory_usage
.
Например, если вы хотите установить max_memory_usage_for_user
на 1000 байт для пользователя с именем clickhouse_read
, вы можете использовать команду
Вы можете проверить, что это сработало, выйдя из своей клиентской сессии, войдя снова, а затем используя функцию getSetting
:
max_network_bandwidth
Ограничивает скорость обмена данными по сети в байтах в секунду. Эта настройка применяется к каждому запросу.
Возможные значения:
- Положительное целое число.
- 0 — Контроль пропускной способности отключен.
max_network_bandwidth_for_all_users
Ограничивает скорость обмена данными по сети в байтах в секунду. Эта настройка применяется ко всем одновременно выполняемым запросам на сервере.
Возможные значения:
- Положительное целое число.
- 0 — Контроль скорости обмена отключен.
max_network_bandwidth_for_user
Ограничивает скорость обмена данными по сети в байтах в секунду. Эта настройка применяется ко всем одновременно выполняемым запросам, выполняемым одним пользователем.
Возможные значения:
- Положительное целое число.
- 0 — Контроль скорости обмена отключен.
max_network_bytes
Ограничивает объем данных (в байтах), который принимается или передается по сети при выполнении запроса. Эта настройка применяется к каждому отдельному запросу.
Возможные значения:
- Положительное целое число.
- 0 — Контроль объема данных отключен.
max_number_of_partitions_for_independent_aggregation
Максимальное количество партиций в таблице для применения оптимизации.
max_os_cpu_wait_time_ratio_to_throw
Максимальное соотношение между временем ожидания CPU ОС (метрика OSCPUWaitMicroseconds) и занятым временем (метрика OSCPUVirtualTimeMicroseconds), чтобы рассмотреть возможность отклонения запросов. Линейная интерполяция между минимальным и максимальным соотношением используется для вычисления вероятности, при этом вероятность равна 1 в этой точке.
max_parallel_replicas
Максимальное количество реплик для каждого шарда при выполнении запроса.
Допустимые значения:
- Положительное целое число.
Дополнительная информация
Эта опция будет давать разные результаты в зависимости от использованных настроек.
Эта настройка будет приводить к некорректным результатам, если участвуют соединения или подзапросы, и не все таблицы соответствуют определённым требованиям. См. Распределенные подзапросы и max_parallel_replicas для получения дополнительных сведений.
Параллельная обработка с использованием SAMPLE
ключа
Запрос может обрабатываться быстрее, если он выполняется на нескольких серверах параллельно. Однако производительность запроса может ухудшиться в следующих случаях:
- Позиция ключа выборки в ключе партиционирования не позволяет эффективно сканировать диапазоны.
- Добавление ключа выборки в таблицу делает фильтрацию по другим колонкам менее эффективной.
- Ключ выборки является выражением, вычисление которого требует значительных затрат.
- Распределение латентности кластера имеет длинный хвост, из-за чего выполнение запроса на большем количестве серверов увеличивает общую латентность запроса.
Параллельная обработка с использованием parallel_replicas_custom_key
Эта настройка полезна для любых реплицируемых таблиц.
max_parser_backtracks
Максимальное количество обратных переходов парсера (сколько раз он пробует различные альтернативы в процессе рекурсивного спуска).
max_parser_depth
Ограничивает максимальную глубину рекурсии в парсере рекурсивного спуска. Позволяет контролировать размер стека.
Допустимые значения:
- Положительное целое число.
- 0 — Глубина рекурсии не ограничена.
max_parsing_threads
Максимальное количество потоков для разбора данных в форматах ввода, которые поддерживают параллельный разбор. По умолчанию оно определяется автоматически.
max_partition_size_to_drop
Ограничение на удаление партиций во время выполнения запроса. Значение 0 означает, что вы можете удалять партиции без каких-либо ограничений.
Облачное значение по умолчанию: 1 ТБ.
Эта настройка запроса перекрывает её эквивалент серверной настройки, см. max_partition_size_to_drop
max_partitions_per_insert_block
Ограничивает максимальное количество партиций в одном вставляемом блоке и выбрасывает исключение, если блок содержит слишком много партиций.
- Положительное целое число.
0
— Неограниченное количество партиций.
Подробности
При вставке данных ClickHouse вычисляет количество партиций в вставляемом блоке. Если количество партиций превышает
max_partitions_per_insert_block
, ClickHouse либо записывает предупреждение, либо выбрасывает исключение в зависимости от throw_on_max_partitions_per_insert_block
. Исключения имеют следующий текст:
"Слишком много партиций для одного INSERT блока (
partitions_count
партиций, лимит " + toString(max_partitions) + "). Лимит контролируется настройкой 'max_partitions_per_insert_block'. Большое количество партиций — это распространенное недоразумение. Это приведет к значительному негативному влиянию на производительность, включая медленное время запуска сервера, медленные запросы INSERT и медленные запросы SELECT. Рекомендуемое общее количество партиций для таблицы — это менее 1000..10000. Обратите внимание, что партиционирование не предназначено для ускорения запросов SELECT (ORDER BY ключа достаточно, чтобы сделать диапазонные запросы быстрыми). Партиции предназначены для манипуляций с данными (DROP PARTITION и т. д.)."
Эта настройка является предохранительным порогом, так как использование большого количества партиций является распространенным недоразумением.
max_partitions_to_read
Ограничивает максимальное количество партиций, которые могут быть доступны в одном запросе.
Значение настройки, указанное при создании таблицы, может быть переопределено через настройку уровня запроса.
Допустимые значения:
- Положительное целое число
-1
- неограниченное (по умолчанию)
Вы также можете указать настройку MergeTree max_partitions_to_read
в настройках таблиц.
max_parts_to_move
Ограничивает количество частей, которые могут быть перемещены в одном запросе. Ноль означает неограниченное количество.
max_query_size
Максимальное количество байт в строке запроса, которое может быть обработано парсером SQL. Данные в операторе VALUES запросов INSERT обрабатываются отдельным парсером потоков (который использует O(1) ОЗУ) и не подвержены этому ограничению.
max_query_size
не может быть установлен в рамках SQL-запроса (например, SELECT now() SETTINGS max_query_size=10000
), потому что ClickHouse необходимо выделить буфер для разбора запроса, и размер этого буфера определяется настройкой max_query_size
, которая должна быть настроена до выполнения запроса.
max_read_buffer_size
Максимальный размер буфера для чтения из файловой системы.
max_read_buffer_size_local_fs
Максимальный размер буфера для чтения из локальной файловой системы. Если установить 0, то будет использоваться max_read_buffer_size.
max_read_buffer_size_remote_fs
Максимальный размер буфера для чтения из удалённой файловой системы. Если установить 0, то будет использоваться max_read_buffer_size.
max_recursive_cte_evaluation_depth
Максимальный лимит на глубину оценки рекурсивных CTE.
max_remote_read_network_bandwidth
Максимальная скорость обмена данными по сети в байтах в секунду для чтения.
max_remote_write_network_bandwidth
Максимальная скорость обмена данными по сети в байтах в секунду для записи.
max_replica_delay_for_distributed_queries
Отключает отстающие реплики для распределенных запросов. См. Репликация.
Устанавливает время в секундах. Если задержка реплики больше или равна заданному значению, эта реплика не используется.
Допустимые значения:
- Положительное целое число.
- 0 — Задержки реплик не проверяются.
Чтобы предотвратить использование любой реплики с ненулевой задержкой, установите этот параметр в 1.
Используется при выполнении SELECT
из распределенной таблицы, указывающей на реплицируемые таблицы.
max_result_bytes
Ограничивает размер результата в байтах (несжатый). Запрос остановится после обработки блока данных, если порог будет достигнут, но он не обрежет последний блок результата, поэтому размер результата может быть больше порога.
Замечания
Размер результата в памяти учитывается для этого порога. Даже если размер результата мал, он может ссылаться на более крупные структуры данных в памяти, представляющие словари колонок LowCardinality и Arenas колонок AggregateFunction, поэтому порог может быть превышен, несмотря на малый размер результата.
Настройка является достаточно низким уровнем и должна использоваться с осторожностью.
max_result_rows
Облачное значение по умолчанию: 0
.
Ограничивает количество строк в результате. Также проверяется для подзапросов и на удаленных серверах при выполнении частей распределённого запроса.
Нет лимита, когда значение равно 0
.
Запрос остановится после обработки блока данных, если порог будет достигнут, но он не обрежет последний блок результата, поэтому размер результата может быть больше порога.
max_rows_in_distinct
Максимальное количество различных строк при использовании DISTINCT.
max_rows_in_join
Ограничивает количество строк в хеш-таблице, используемой при соединении таблиц.
Эта настройка применяется к операциям SELECT ... JOIN и движку таблиц Join.
Если запрос содержит несколько соединений, ClickHouse проверяет эту настройку для каждого промежуточного результата.
ClickHouse может проводить различные действия, когда лимит достигнут. Используйте
join_overflow_mode
настройку, чтобы выбрать действие.
Допустимые значения:
- Положительное целое число.
0
— Неограниченное количество строк.
max_rows_in_set
Максимальное количество строк для набора данных в операторе IN, созданном из подзапроса.
max_rows_in_set_to_optimize_join
Максимальный размер набора для фильтрации соединённых таблиц по наборам строк друг друга перед соединением.
Допустимые значения:
- 0 — Отключено.
- Любое положительное целое число.
max_rows_to_group_by
Максимальное количество уникальных ключей, полученных из агрегации. Эта настройка позволяет ограничить потребление памяти при агрегации.
Если агрегация во время GROUP BY генерирует более указанного количества
строк (уникальных ключей GROUP BY), поведение будет определено
настройкой 'group_by_overflow_mode', которая по умолчанию равна throw
, но также может быть переключена
в режим приблизительной агрегации GROUP BY.
max_rows_to_read
Максимальное количество строк, которые могут быть прочитаны из таблицы при выполнении запроса. Ограничение проверяется для каждого обработанного фрагмента данных, применяется только к глубочайшему выражению таблицы и при чтении с удалённого сервера проверяется только на удалённом сервере.
max_rows_to_read_leaf
Максимальное количество строк, которые могут быть прочитаны из локальной таблицы на узле-листе при выполнении распределенного запроса. Хотя распределённые запросы могут выдавать несколько подзапросов каждому шард (листьев) — этот лимит будет проверяться только на стадии чтения на листовых узлах и игнорироваться на стадии объединения результатов на корневом узле.
Например, кластер состоит из 2 шардов, и каждый шард содержит таблицу с
100 строками. Распределённый запрос, который предполагает чтение всех данных из обоих
таблиц с настройкой max_rows_to_read=150
, потерпит неудачу, так как в общей сложности будет
200 строк. Запрос с max_rows_to_read_leaf=150
будет успешным, так как листовые узлы
подустят максимум 100 строк.
Ограничение проверяется для каждого обработанного фрагмента данных.
Эта настройка нестабильна с prefer_localhost_replica=1
.
max_rows_to_sort
Максимальное количество строк перед сортировкой. Это позволяет ограничить потребление памяти во время сортировки.
Если необходимо обработать больше указанного количества записей для операции ORDER BY,
поведение будет определено настройкой sort_overflow_mode
, которая по умолчанию установлена на throw
.
max_rows_to_transfer
Максимальный размер (в строках), который может быть передан на удалённый сервер или сохранён в временной таблице, когда выполняется секция GLOBAL IN/JOIN.
max_sessions_for_user
Максимальное количество одновременных сессий для каждого аутентифицированного пользователя на сервере ClickHouse.
Пример:
Допустимые значения:
- Положительное целое число
0
- бесконечное количество одновременных сессий (по умолчанию)
max_size_to_preallocate_for_aggregation
На сколько элементов разрешено предварительно выделить место во всех хеш-таблицах в общей сложности перед агрегацией.
max_size_to_preallocate_for_joins
На сколько элементов разрешено предварительно выделить место во всех хеш-таблицах в общей сложности перед соединением.
max_streams_for_merge_tree_reading
Если не равен нулю, ограничьте количество потоков чтения для таблицы MergeTree.
max_streams_multiplier_for_merge_tables
Запрашивать больше потоков при чтении из таблицы Merge. Потоки будут распределены по таблицам, которые таблица Merge будет использовать. Это позволяет более равномерно распределить работу по потокам и особенно полезно, когда объединяемые таблицы различаются по размеру.
max_streams_to_max_threads_ratio
Позволяет использовать больше источников, чем число потоков, чтобы более равномерно распределить работу по потокам. Предполагается, что это временное решение, поскольку в будущем будет возможно сделать количество источников равным количеству потоков, но для каждого источника динамически выбирать доступную работу для себя.
max_subquery_depth
Если запрос содержит больше указанного числа вложенных подзапросов, выдает исключение.
Это позволяет провести проверку разумности, чтобы защитить пользователей вашего кластера от написания чрезмерно сложных запросов.
max_table_size_to_drop
Ограничение на удаление таблиц во время выполнения запроса. Значение 0 означает, что вы можете удалять все таблицы без каких-либо ограничений.
Облачное значение по умолчанию: 1 ТБ.
Эта настройка запроса перекрывает её эквивалент серверной настройки, см. max_table_size_to_drop
max_temporary_columns
Максимальное количество временных колонок, которые должны храниться в ОЗУ одновременно при выполнении запроса, включая постоянные колонки. Если запрос генерирует более указанного количества временных колонок в памяти в результате промежуточного вычисления, то выбрасывается исключение.
Эта настройка полезна для предотвращения чрезмерно сложных запросов.
Значение 0
означает неограниченное количество.
max_temporary_data_on_disk_size_for_query
Максимальное количество данных, занимаемых временными файлами на диске в байтах для всех одновременно выполняемых запросов.
Допустимые значения:
- Положительное целое число.
0
— неограниченное (по умолчанию).
max_temporary_data_on_disk_size_for_user
Максимальное количество данных, занимаемых временными файлами на диске в байтах для всех одновременно выполняемых запросов пользователя.
Допустимые значения:
- Положительное целое число.
0
— неограниченное (по умолчанию).
max_temporary_non_const_columns
Как и max_temporary_columns
, максимальное количество временных колонок, которые должны
храниться в ОЗУ одновременно при выполнении запроса, но без учета постоянных
колонок.
Постоянные колонки формируются довольно часто при выполнении запроса, но они требуют приблизительно нулевых вычислительных ресурсов.
max_threads
Максимальное количество потоков для обработки запросов, исключая потоки для извлечения данных из удалённых серверов (см. параметр 'max_distributed_connections').
Этот параметр применяется к потокам, которые выполняют одни и те же этапы обработки запроса параллельно. Например, при чтении из таблицы, если есть возможность оценивать выражения с функциями, фильтровать с помощью WHERE и предварительно агрегировать для GROUP BY параллельно с использованием как минимум 'max_threads' числа потоков, то используются 'max_threads'.
Для запросов, которые завершаются быстро из-за LIMIT, вы можете установить более низкое значение 'max_threads'. Например, если необходимое количество записей находится в каждом блоке и max_threads = 8, то будет извлечено 8 блоков, хотя было бы достаточно прочитать лишь один.
Чем меньше значение max_threads
, тем меньше памяти потребляется.
max_threads_for_indexes
Максимальное количество потоков для обработки индексов.
max_untracked_memory
Небольшие выделения и освобождения группируются в локальную переменную потока и отслеживаются или профилируются только тогда, когда сумма (по абсолютному значению) становится больше указанного значения. Если значение больше чем 'memory_profiler_step', оно эффективно будет снижено до 'memory_profiler_step'.
memory_overcommit_ratio_denominator
Это представляет собой мягкий предел памяти, когда жесткий предел достигнут на глобальном уровне. Это значение используется для вычисления коэффициента перерасчёта для запроса. Ноль означает пропуск запроса. Узнайте больше о перерасчете памяти.
memory_overcommit_ratio_denominator_for_user
Это представляет собой мягкий предел памяти, когда жесткий предел достигнут на уровне пользователя. Это значение используется для вычисления коэффициента перерасчёта для запроса. Ноль означает пропуск запроса. Узнайте больше о перерасчете памяти.
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 с трассировкой 'MemorySample'. Вероятность для каждого выделения/освобождения независимо от размера выделения (может быть изменена с помощью memory_profiler_sample_min_allocation_size
и memory_profiler_sample_max_allocation_size
). Обратите внимание, что выборка происходит только тогда, когда количество неотслеживаемой памяти превышает 'max_untracked_memory'. Вы можете установить 'max_untracked_memory' в 0 для более детальной выборки.
memory_profiler_step
Устанавливает шаг профилировщика памяти. Когда использование памяти запросом становится больше, чем каждый следующий шаг в байтах, профилировщик памяти будет собирать трассировку выделения и запишет её в trace_log.
Допустимые значения:
-
Положительное целое число в байтах.
-
0 для отключения профилировщика памяти.
memory_tracker_fault_probability
Для тестирования безопасности исключений
- выбрасывать исключение каждый раз, когда вы выделяете память с указанной вероятностью.
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. Число гранул в полосе компактной части таблиц MergeTree, для которых используется многобуферный считыватель, который поддерживает параллельное считывание и предзагрузку. В случае чтения из удалённой файловой системы использование многобуферного считывателя увеличивает количество запросов на чтение.
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 последовательно читает диапазон файла, содержащий оба блока, тем самым избегая дополнительного поиска.
Допустимые значения:
- Любое положительное целое число.
merge_tree_min_bytes_per_task_for_remote_reading
Минимальное количество байт для чтения за задачу.
merge_tree_min_read_task_size
Жесткий нижний предел размера задачи (даже когда количество гранул низкое и количество доступных потоков высокое, мы не выделим меньшие задачи).
merge_tree_min_rows_for_concurrent_read
Если количество строк, которые нужно прочитать из файла таблицы с движком MergeTree, превышает merge_tree_min_rows_for_concurrent_read
, то ClickHouse пытается выполнить параллельное чтение этого файла в несколько потоков.
Допустимые значения:
- Положительное целое число.
merge_tree_min_rows_for_concurrent_read_for_remote_filesystem
Минимальное количество строк для чтения из одного файла перед тем, как движок MergeTree может параллелизировать чтение при чтении из удаленной файловой системы. Мы не рекомендуем использовать эту настройку.
Возможные значения:
- Положительное целое число.
merge_tree_min_rows_for_seek
Если расстояние между двумя блоками данных для чтения в одном файле меньше merge_tree_min_rows_for_seek
строк, то ClickHouse не ищет в файле, а читает данные последовательно.
Возможные значения:
- Любое положительное целое число.
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability
Для тестирования PartsSplitter
- разбивайте диапазоны чтения на пересекающиеся и непересекающиеся каждый раз, когда вы читаете из MergeTree с заданной вероятностью.
merge_tree_use_const_size_tasks_for_remote_reading
Использовать ли задачи фиксированного размера для чтения из удаленной таблицы.
merge_tree_use_deserialization_prefixes_cache
Разрешает кэширование метаданных колонок из префиксов файла во время чтения из широких частей в MergeTree.
merge_tree_use_prefixes_deserialization_thread_pool
Разрешает использование пула потоков для параллельного чтения префиксов в широких частях в MergeTree. Размер этого пула потоков контролируется серверной настройкой max_prefixes_deserialization_thread_pool_size
.
merge_tree_use_v1_object_and_dynamic_serialization
При включении будет использоваться версия сериализации V1 для типов JSON и Dynamic в MergeTree вместо V2. Изменение этой настройки вступает в силу только после перезапуска сервера.
metrics_perf_events_enabled
Если включено, некоторые события производительности будут измеряться во время выполнения запросов.
metrics_perf_events_list
Список показателей производительности, разделенный запятыми, которые будут измеряться во время выполнения запросов. Пустой означает все события. См. PerfEventInfo в источниках для доступных событий.
min_bytes_to_use_direct_io
Минимальный объем данных, необходимый для использования прямого доступа I/O к диску хранения.
ClickHouse использует эту настройку при чтении данных из таблиц. Если общий объем хранения всех данных, которые необходимо прочитать, превышает min_bytes_to_use_direct_io
байт, то ClickHouse читает данные с диска хранения с опцией O_DIRECT
.
Возможные значения:
- 0 — Прямой доступ I/O отключен.
- Положительное целое число.
min_bytes_to_use_mmap_io
Это экспериментальная настройка. Устанавливает минимальное количество памяти для чтения больших файлов без копирования данных из ядра в пространство пользователя. Рекомендуемый порог составляет около 64 МБ, так как mmap/munmap медленны. Имеет смысл только для больших файлов и помогает только если данные находятся в кэше страниц.
Возможные значения:
- Положительное целое число.
- 0 — Большие файлы читаются только с копированием данных из ядра в пространство пользователя.
min_chunk_bytes_for_parallel_parsing
- Тип: неотрицательное целое число
- Значение по умолчанию: 1 МБ
Минимальный размер блока в байтах, который каждый поток будет парсить параллельно.
min_compress_block_size
Для MergeTree таблиц. С целью уменьшения задержки при обработке запросов блок сжимается при записи следующей метки, если его размер составляет не менее min_compress_block_size
. По умолчанию 65,536.
Фактический размер блока, если несжатые данные меньше max_compress_block_size
, не меньше этого значения и не меньше объема данных для одной метки.
Рассмотрим пример. Допустим, что index_granularity
был установлен на 8192 во время создания таблицы.
Мы записываем колонку типа UInt32 (4 байта на значение). При записи 8192 строк, в сумме получится 32 КБ данных. Поскольку min_compress_block_size = 65,536, сжатый блок будет сформирован для каждых двух меток.
Мы записываем колонку URL с типом String (средний размер 60 байт на значение). При записи 8192 строк, в среднем получится чуть меньше 500 КБ данных. Поскольку это больше чем 65,536, сжатый блок будет сформирован для каждой метки. В этом случае, при чтении данных с диска в диапазоне одной метки, лишние данные не будут распакованы.
Это настройка экспертного уровня, и вам не следует изменять ее, если вы только начинаете работать с ClickHouse.
min_count_to_compile_aggregate_expression
Минимальное количество идентичных агрегатных выражений для начала JIT-компиляции. Работает только если включена настройка compile_aggregate_expressions.
Возможные значения:
- Положительное целое число.
- 0 — Идентичные агрегатные выражения всегда JIT-компилируются.
min_count_to_compile_expression
Минимальное количество выполнения одного и того же выражения перед его компиляцией.
min_count_to_compile_sort_description
Количество идентичных описаний сортировки перед их JIT-компиляцией.
min_execution_speed
Минимальная скорость выполнения в строках в секунду. Проверяется на каждом блоке данных, когда истекает timeout_before_checking_execution_speed
. Если скорость выполнения ниже, выбрасывается исключение.
min_execution_speed_bytes
Минимальное количество байт выполнения в секунду. Проверяется на каждом блоке данных, когда истекает timeout_before_checking_execution_speed
. Если скорость выполнения ниже, выбрасывается исключение.
min_external_sort_block_bytes
Минимальный размер блока в байтах для внешней сортировки, который будет записан на диск, чтобы избежать слишком большого количества файлов.
min_external_table_block_size_bytes
Сжимать блоки, переданные во внешнюю таблицу, до указанного размера в байтах, если блоки недостаточно большие.
min_external_table_block_size_rows
Сжимать блоки, переданные во внешнюю таблицу, до указанного размера в строках, если блоки недостаточно большие.
min_free_disk_bytes_to_perform_insert
Минимальное количество свободного дискового пространства для выполнения вставки.
min_free_disk_ratio_to_perform_insert
Минимальное соотношение свободного дискового пространства для выполнения вставки.
min_free_disk_space_for_temporary_data
Минимальное дисковое пространство, которое необходимо сохранить во время записи временных данных, используемых в внешней сортировке и агрегации.
min_hit_rate_to_use_consecutive_keys_optimization
Минимальная скорость попадания кеша, которая используется для оптимизации последовательных ключей при агрегации, чтобы она оставалась включенной.
min_insert_block_size_bytes
Устанавливает минимальное количество байт в блоке, которое может быть вставлено в таблицу с помощью запроса INSERT
. Блоки меньшего размера объединяются в более крупные.
Возможные значения:
- Положительное целое число.
- 0 — Объединение отключено.
min_insert_block_size_bytes_for_materialized_views
Устанавливает минимальное количество байт в блоке, который может быть вставлен в таблицу с помощью запроса INSERT
. Блоки меньшего размера объединяются в более крупные. Эта настройка применяется только для блоков, вставляемых в материализованное представление. Настраивая эту настройку, вы контролируете объединение блоков при записи в материализованное представление и избегаете чрезмерного использования памяти.
Возможные значения:
- Любое положительное целое число.
- 0 — Объединение отключено.
См. также
min_insert_block_size_rows
Устанавливает минимальное количество строк в блоке, который может быть вставлен в таблицу с помощью запроса INSERT
. Блоки меньшего размера объединяются в более крупные.
Возможные значения:
- Положительное целое число.
- 0 — Объединение отключено.
min_insert_block_size_rows_for_materialized_views
Устанавливает минимальное количество строк в блоке, который может быть вставлен в таблицу с помощью запроса INSERT
. Блоки меньшего размера объединяются в более крупные. Эта настройка применяется только для блоков, вставляемых в материализованное представление. Настраивая эту настройку, вы контролируете объединение блоков при записи в материализованное представление и избегаете чрезмерного использования памяти.
Возможные значения:
- Любое положительное целое число.
- 0 — Объединение отключено.
См. также
min_joined_block_size_bytes
Минимальный размер блока для результата JOIN (если алгоритм соединения поддерживает это). 0 означает неограниченный.
min_os_cpu_wait_time_ratio_to_throw
Минимальное соотношение между временем ожидания CPU ОС (метрика OSCPUWaitMicroseconds) и временем занятости (метрика OSCPUVirtualTimeMicroseconds) для принятия решения о необходимости отклонения запросов. Линейная интерполяция между минимальным и максимальным соотношением используется для вычисления вероятности, вероятность на этом этапе равна 0.
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
Не добавлять псевдонимы в список выражений верхнего уровня при переписывании нескольких соединений.
mutations_execute_nondeterministic_on_initiator
Если истинно, постоянные ненаправленные функции (например, функция now()
) выполняются на инициаторе и заменяются литеральными значениями в запросах UPDATE
и DELETE
. Это помогает сохранять данные синхронизированными на репликах при выполнении мутаций с постоянными ненаправленными функциями. Значение по умолчанию: false
.
mutations_execute_subqueries_on_initiator
Если истинно, скалярные подзапросы выполняются на инициаторе и заменяются литеральными значениями в запросах UPDATE
и DELETE
. Значение по умолчанию: false
.
mutations_max_literal_size_to_replace
Максимальный размер сериализованной литералы в байтах для замены в запросах UPDATE
и DELETE
. Применяется только в том случае, если хотя бы одна из двух настроек выше включена. Значение по умолчанию: 16384 (16 КБ).
mutations_sync
Позволяет выполнять запросы ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS
(мутации) синхронно.
Возможные значения:
- 0 - Мутации выполняются асинхронно.
- 1 - Запрос ожидает завершения всех мутаций на текущем сервере.
- 2 - Запрос ожидает завершения всех мутаций на всех репликах (если они существуют).
mysql_datatypes_support_level
Определяет, как типы MySQL преобразуются в соответствующие типы ClickHouse. Список, разделенный запятыми, в любом сочетании decimal
, datetime64
, date2Date32
или date2String
.
decimal
: преобразовыватьNUMERIC
иDECIMAL
типы вDecimal
, когда точность это позволяет.datetime64
: преобразовыватьDATETIME
иTIMESTAMP
типы вDateTime64
, а не вDateTime
, когда точность не равна0
.date2Date32
: преобразовыватьDATE
вDate32
, а не вDate
. Имеет приоритет надdate2String
.date2String
: преобразовыватьDATE
вString
, а не вDate
. Переопределяетсяdatetime64
.
mysql_map_fixed_string_to_text_in_show_columns
При включении, тип данных FixedString ClickHouse будет отображаться как TEXT
в SHOW COLUMNS.
Действует только при подключении через MySQL протокол.
- 0 - Использовать
BLOB
. - 1 - Использовать
TEXT
.
mysql_map_string_to_text_in_show_columns
При включении, тип данных String ClickHouse будет отображаться как TEXT
в SHOW COLUMNS.
Действует только при подключении через MySQL протокол.
- 0 - Использовать
BLOB
. - 1 - Использовать
TEXT
.
mysql_max_rows_to_insert
Максимальное количество строк в пакетной вставке MySQL для движка хранения MySQL.
network_compression_method
Устанавливает метод сжатия данных, используемый для связи между серверами и между сервером и clickhouse-client.
Возможные значения:
LZ4
— устанавливает метод сжатия LZ4.ZSTD
— устанавливает метод сжатия ZSTD.
См. также
network_zstd_compression_level
Настраивает уровень сжатия ZSTD. Используется только когда network_compression_method установлен на ZSTD
.
Возможные значения:
- Положительное целое число от 1 до 15.
normalize_function_names
Нормализовать имена функций до их канонических имен.
number_of_mutations_to_delay
Если измененная таблица содержит хотя бы столько же незаконченных мутаций, искусственно замедлить мутации таблицы. 0 - отключено.
number_of_mutations_to_throw
Если измененная таблица содержит хотя бы столько же незаконченных мутаций, выбрасывается исключение 'Слишком много мутаций ...'. 0 - отключено.
odbc_bridge_connection_pool_size
Размер пула соединений для каждой строки настроек соединения в ODBC мосту.
odbc_bridge_use_connection_pooling
Использовать пул соединений в ODBC мосту. Если установить в false, новое соединение создается каждый раз.
offset
Устанавливает количество строк, которые нужно пропустить, прежде чем начать возвращать строки из запроса. Это корректирует описание смещения, установленное с помощью OFFSET, так что эти два значения суммируются.
Возможные значения:
- 0 — Не пропускаются строки.
- Положительное целое число.
Пример
Входная таблица:
Запрос:
Результат:
opentelemetry_start_trace_probability
Устанавливает вероятность, что ClickHouse может начать трассировку для выполняемых запросов (если не предоставлен родительский контекст трассировки).
Возможные значения:
- 0 — Трассировка для всех выполняемых запросов отключена (если не предоставлен родительский контекст трассировки).
- Положительное дробное число в диапазоне [0..1]. Например, если значение настройки равно
0,5
, ClickHouse может начинать трассировку в среднем для половины запросов. - 1 — Трассировка для всех выполняемых запросов включена.
opentelemetry_trace_processors
Собирать спаны OpenTelemetry для процессоров.
optimize_aggregation_in_order
Включает оптимизацию GROUP BY в запросах SELECT для агрегации данных в соответствующем порядке в таблицах MergeTree.
Возможные значения:
- 0 — Оптимизация
GROUP BY
отключена. - 1 — Оптимизация
GROUP BY
включена.
См. также
optimize_aggregators_of_group_by_keys
Устраняет агрегаторы min/max/any/anyLast для ключей GROUP BY в разделе SELECT.
optimize_and_compare_chain
Пополняет постоянное сравнение в цепочках AND, чтобы улучшить возможность фильтрации. Поддерживает операторы <
, <=
, >
, >=
, =
и их сочетания. Например, (a < b) AND (b < c) AND (c < 5)
будет (a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)
.
optimize_append_index
Использовать ограничения для добавления условия индекса. Значение по умолчанию — false
.
Возможные значения:
- true, false
optimize_arithmetic_operations_in_aggregate_functions
Переместить арифметические операции за пределы агрегатных функций.
optimize_count_from_files
Включает или отключает оптимизацию подсчета числа строк из файлов в различных входных форматах. Применяется к табличным функциям/движкам file
/s3
/url
/hdfs
/azureBlobStorage
.
Возможные значения:
- 0 — Оптимизация отключена.
- 1 — Оптимизация включена.
optimize_distinct_in_order
Включает оптимизацию DISTINCT, если некоторые колонки в DISTINCT образуют префикс сортировки. Например, префикс сортировочного ключа в Merge Tree или операторе 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
(причина в том, что когда-нибудь это может быть включено по умолчанию, и оно будет работать корректно только если данные были вставлены через распределенную таблицу, т.е. данные распределены в соответствии с ключом шардирования).
optimize_exchanges
Удаляет ненужные обмены в плане распределенного запроса. Отключите ее для отладки.
optimize_extract_common_expressions
Позволяет извлечение общих выражений из дизъюнкций в выражениях WHERE, PREWHERE, ON, HAVING и QUALIFY. Логическое выражение вроде (A AND B) OR (A AND C)
может быть переписано в A AND (B OR C)
, что может помочь использовать:
- индексы в простых фильтрующих выражениях
- оптимизацию соединения cross to inner join.
optimize_functions_to_subcolumns
Включает или отключает оптимизацию, преобразуя некоторые функции в чтение подколонок. Это уменьшает объем данных для чтения.
Эти функции могут быть преобразованы:
- length для чтения подколонки size0.
- empty для чтения подколонки size0.
- notEmpty для чтения подколонки size0.
- isNull для чтения подколонки null.
- isNotNull для чтения подколонки null.
- count для чтения подколонки null.
- mapKeys для чтения подколонки keys.
- mapValues для чтения подколонки values.
Возможные значения:
- 0 — Оптимизация отключена.
- 1 — Оптимизация включена.
optimize_group_by_constant_keys
Оптимизация GROUP BY, когда все ключи в блоке постоянные.
optimize_group_by_function_keys
Устраняет функции других ключей в разделе GROUP BY.
optimize_if_chain_to_multiif
Заменяет цепочки if(cond1, then1, if(cond2, ...))
на multiIf
. В данный момент это не дает преимущества для числовых типов.
optimize_if_transform_strings_to_enum
Заменяет аргументы строкового типа в If
и Transform
на enum
. Отключено по умолчанию, поскольку это может привести к несогласованным изменениям в распределенном запросе, что может привести к его сбою.
optimize_injective_functions_in_group_by
Заменяет инъективные функции на их аргументы в разделе GROUP BY.
optimize_injective_functions_inside_uniq
Удаляет инъективные функции с одним аргументом внутри функций uniq*()
.
optimize_min_equality_disjunction_chain_length
Минимальная длина выражения expr = x1 OR ... expr = xN
для оптимизации.
optimize_min_inequality_conjunction_chain_length
Минимальная длина выражения expr <> x1 AND ... expr <> xN
для оптимизации.
optimize_move_to_prewhere
Включает или отключает автоматическую оптимизацию PREWHERE в запросах SELECT.
Работает только для таблиц *MergeTree.
Возможные значения:
- 0 — Автоматическая оптимизация
PREWHERE
отключена. - 1 — Автоматическая оптимизация
PREWHERE
включена.
optimize_move_to_prewhere_if_final
Включает или отключает автоматическую оптимизацию PREWHERE в запросах SELECT с модификатором FINAL.
Работает только для таблиц *MergeTree.
Возможные значения:
- 0 — Автоматическая оптимизация
PREWHERE
в запросахSELECT
с модификаторомFINAL
отключена. - 1 — Автоматическая оптимизация
PREWHERE
в запросахSELECT
с модификаторомFINAL
включена.
См. также
- Настройка optimize_move_to_prewhere.
optimize_multiif_to_if
Заменяет multiIf
с единственным условием на if
.
optimize_normalize_count_variants
Переписывание агрегатных функций, которые семантически равны count() как count().
optimize_on_insert
Включает или отключает преобразование данных перед вставкой, как если бы слияние было выполнено над этим блоком (в соответствии с движком таблицы).
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Пример
Разница между включенной и отключенной оптимизацией:
Запрос:
Результат:
Обратите внимание, что эта настройка влияет на поведение материализованных представлений.
optimize_or_like_chain
Оптимизирует множественные OR LIKE
в multiMatchAny
. Эта оптимизация не должна быть включена по умолчанию, поскольку она может нарушать анализ индексов в некоторых случаях.
optimize_read_in_order
Включает оптимизацию ORDER BY в запросах SELECT для чтения данных из таблиц MergeTree.
Возможные значения:
- 0 — Оптимизация
ORDER BY
отключена. - 1 — Оптимизация
ORDER BY
включена.
См. также
optimize_read_in_window_order
Включает оптимизацию ORDER BY
в оконной клаузе для чтения данных в соответствующем порядке в таблицах MergeTree.
optimize_redundant_functions_in_order_by
Удаляет функции из ORDER BY
, если их аргументы также присутствуют в ORDER BY
.
optimize_respect_aliases
Если установлено в true, будет уважаться псевдонимы в WHERE/GROUP BY/ORDER BY
, что поможет с обрезкой партиций/вторичными индексами/оптимизацией агрегации в ORDER BY
/оптимизацией чтения в порядке/оптимизацией тривиального подсчета.
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_sum_if_to_count_if
Переписывает функции sumIf()
и sum(if())
в функцию countIf()
, когда логически эквивалентно.
optimize_skip_merged_partitions
Включает или отключает оптимизацию для запроса OPTIMIZE TABLE ... FINAL, если есть только одна часть с уровнем > 0 и она не имеет истекшего TTL.
OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1
По умолчанию запрос OPTIMIZE TABLE ... FINAL
переписывает одну часть, даже если есть только одна часть.
Возможные значения:
- 1 — Включить оптимизацию.
- 0 — Отключить оптимизацию.
optimize_skip_unused_shards
Включает или отключает пропуск неиспользуемых шардов для запросов SELECT, которые имеют условие ключа шардирования в WHERE/PREWHERE
(при условии, что данные распределены по ключу шардирования, в противном случае запрос дает некорректный результат).
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
optimize_skip_unused_shards_limit
Лимит для количества значений ключа шардирования, отключает optimize_skip_unused_shards
, если лимит достигнут.
Слишком много значений может потребовать значительное количество ресурсов для обработки, в то время как польза сомнительна, поскольку если у вас огромный номер значений в IN (...)
, то, скорее всего, запрос будет отправлен ко всем шартам в любом случае.
optimize_skip_unused_shards_nesting
Контролирует optimize_skip_unused_shards
(поэтому все еще требует optimize_skip_unused_shards
) в зависимости от уровня вложенности распределенного запроса (случай, когда у вас есть Distributed
таблица, которая смотрит на другую Distributed
таблицу).
Возможные значения:
- 0 — Отключено,
optimize_skip_unused_shards
всегда работает. - 1 — Включает
optimize_skip_unused_shards
только для первого уровня. - 2 — Включает
optimize_skip_unused_shards
до второго уровня.
optimize_skip_unused_shards_rewrite_in
Переписывает IN
в запросе для удаленных шардов, чтобы исключить значения, которые не принадлежат шару (требует optimize_skip_unused_shards
).
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
optimize_sorting_by_input_stream_properties
Оптимизирует сортировку по свойствам сортировки входного потока.
optimize_substitute_columns
Использует ограничения для замены колонок. По умолчанию false
.
Возможные значения:
- true, false.
optimize_syntax_fuse_functions
Включает объединение агрегатных функций с идентичным аргументом. Переписывает запрос, содержащий как минимум две агрегатные функции из sum, count или avg с идентичным аргументом в sumCount.
Возможные значения:
- 0 — Функции с идентичным аргументом не объединяются.
- 1 — Функции с идентичным аргументом объединяются.
Пример
Запрос:
Результат:
optimize_throw_if_noop
Включает или отключает выброс исключения, если запрос OPTIMIZE не выполнил слияние.
По умолчанию OPTIMIZE
возвращает успешно, даже если ничего не было сделано. Эта настройка позволяет различать эти ситуации и получать причину в сообщении об исключении.
Возможные значения:
- 1 — Выброс исключения включен.
- 0 — Выброс исключения отключен.
optimize_time_filter_with_preimage
Оптимизация предикатов Date и DateTime путем преобразования функций в эквивалентные сравнения без преобразований (например, toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31'
).
optimize_trivial_approximate_count_query
Использует приблизительное значение для тривиальных запросов подсчета для хранилищ, которые поддерживают такую оценку, например, EmbeddedRocksDB.
Возможные значения:
- 0 — Оптимизация отключена.
- 1 — Оптимизация включена.
optimize_trivial_count_query
Включает или отключает оптимизацию для тривиального запроса SELECT count() FROM table
с использованием метаданных из MergeTree. Если вам нужно использовать безопасность на уровне строк, отключите эту настройку.
Возможные значения:
- 0 — Оптимизация отключена.
- 1 — Оптимизация включена.
См. также:
optimize_trivial_insert_select
Оптимизация тривиального запроса 'INSERT INTO table SELECT ... FROM TABLES'.
optimize_uniq_to_count
Переписывает uniq
и его варианты (кроме uniqUpTo
) в count
, если подзапрос имеет distinct или group by клаузу.
optimize_use_implicit_projections
Автоматически выбирает неявные проекции для выполнения запроса SELECT.
optimize_use_projections
Включает или отключает оптимизацию проекций при обработке запросов SELECT
.
Возможные значения:
- 0 — Оптимизация проекций отключена.
- 1 — Оптимизация проекций включена.
optimize_using_constraints
Использует ограничения для оптимизации запроса. По умолчанию false
.
Возможные значения:
- true, false.
os_thread_priority
Устанавливает приоритет ( nice ) для потоков, выполняющих запросы. Планировщик ОС учитывает этот приоритет при выборе следующего потока для выполнения на каждом доступном ядре CPU.
Чтобы использовать эту настройку, вам необходимо установить возможность CAP_SYS_NICE
. Пакет clickhouse-server
настраивает это во время установки. Некоторые виртуальные среды не позволяют устанавливать возможность CAP_SYS_NICE
. В этом случае clickhouse-server
выдает о этом сообщение в начале работы.
Возможные значения:
- Вы можете задать значения в диапазоне
[-20, 19]
.
Низкие значения означают более высокий приоритет. Потоки с низкими значениями приоритета nice
выполняются чаще, чем потоки с высокими значениями. Высокие значения предпочтительны для длительных неинтерактивных запросов, поскольку это позволяет им быстро отказаться от ресурсов в пользу коротких интерактивных запросов, когда они приходят.
output_format_compression_level
Уровень сжатия по умолчанию, если вывод запроса сжат. Настройка применяется, когда запрос SELECT
имеет INTO OUTFILE
или при записи в табличные функции file
, url
, hdfs
, s3
или azureBlobStorage
.
Возможные значения: от 1
до 22
.
output_format_compression_zstd_window_log
Может быть использовано, когда методом сжатия выходных данных является zstd
. Если больше 0
, эта настройка явно устанавливает размер окна сжатия (степень 2
) и включает режим длительного сжатия для zstd. Это может помочь достичь лучшего коэффициента сжатия.
Возможные значения: неотрицательные числа. Обратите внимание, что если значение слишком мало или слишком велико, zstdlib
вызовет исключение. Типичные значения составляют от 20
(размер окна = 1MB
) до 30
(размер окна = 1GB
).
output_format_parallel_formatting
Включает или отключает параллельное форматирование данных. Поддерживается только для форматов TSV, TSKV, CSV и JSONEachRow.
Возможные значения:
- 1 — Включено.
- 0 — Отключено.
page_cache_block_size
Размер файловых блоков, которые необходимо хранить в кэше страниц пользовательского пространства, в байтах. Все чтения, которые проходят через кэш, будут округлены до кратного этого размера.
Эта настройка может быть настроена на уровне каждого запроса, но записи кэша с разными размерами блоков не могут быть повторно использованы. Изменение этой настройки фактически аннулирует существующие записи в кэше.
Большее значение, например, 1 MiB, подходит для высокопроизводительных запросов, а меньшее значение, например, 64 KiB, подходит для запросов с низкой задержкой.
page_cache_inject_eviction
Кэш страниц пользовательского пространства иногда будет случайным образом аннулировать некоторые страницы. Предназначено для тестирования.
page_cache_lookahead_blocks
При пропуске кэша страниц пользовательского пространства прочитать до этого количества последовательных блоков сразу из базового хранилища, если они также не находятся в кэше. Каждый блок является page_cache_block_size
байт.
Большее значение хорошо подходит для высокопроизводительных запросов, в то время как запросы с низкой задержкой будут работать лучше без предзагрузки.
parallel_distributed_insert_select
Включает параллельный распределенный запрос INSERT ... SELECT
.
Если мы выполняем запросы INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b
и обе таблицы используют один и тот же кластер и обе таблицы являются либо реплицированными, либо нереплицированными, то этот запрос обрабатывается локально на каждом шарде.
Возможные значения:
- 0 — Отключено.
- 1 —
SELECT
будет выполнен на каждом шарде из базовой таблицы распределенного движка. - 2 —
SELECT
иINSERT
будут выполнены на каждом шарде из/в базовую таблицу распределенного движка.
parallel_hash_join_threshold
Когда применяется алгоритм соединения на основе хеширования, этот порог помогает решить, использовать hash
или parallel_hash
(только в случае, если оценка размера правой таблицы доступна).
Первый используется, когда мы знаем, что размер правой таблицы ниже порога.
parallel_replica_offset
Это внутренняя настройка, которая не должна использоваться напрямую и представляет собой деталь реализации режима "параллельные реплики". Эта настройка будет автоматически настроена сервером-инициатором для распределенных запросов к индексу реплики, участвующей в обработке запроса среди параллельных реплик.
parallel_replicas_allow_in_with_subquery
Если true, подзапрос для IN будет выполняться на каждой последовательной реплике.
parallel_replicas_count
Это внутренняя настройка, которая не должна использоваться напрямую и представляет собой деталь реализации режима "параллельные реплики". Эта настройка будет автоматически настроена сервером-инициатором для распределенных запросов к количеству параллельных реплик, участвующих в обработке запроса.
parallel_replicas_custom_key
Произвольное целочисленное выражение, которое можно использовать для разделения работы между репликами для конкретной таблицы. Значение может быть любым целочисленным выражением.
Предпочтительны простые выражения с использованием первичных ключей.
Если эта настройка используется в кластере, состоящем из одного шара с несколькими репликами, эти реплики будут преобразованы в виртуальные шарды. В противном случае она будет работать так же, как для ключа SAMPLE
, будет использовать несколько реплик каждого шара.
parallel_replicas_custom_key_range_lower
Позволяет типу фильтра range
равномерно распределять работу между репликами на основе настраиваемого диапазона [parallel_replicas_custom_key_range_lower, INT_MAX]
.
При использовании совместно с parallel_replicas_custom_key_range_upper это позволяет фильтру равномерно делить работу над репликами для диапазона [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]
.
Примечание: Эта настройка не приведет к дополнительному фильтрации данных во время обработки запроса, скорее она меняет точки, в которых диапазон фильтра разбивает диапазон [0, INT_MAX]
для параллельной обработки.
parallel_replicas_custom_key_range_upper
Позволяет типу фильтра range
равномерно распределять работу между репликами на основе настраиваемого диапазона [0, parallel_replicas_custom_key_range_upper]
. Значение 0 отключает верхний предел, устанавливая его на максимальное значение выражения настраиваемого ключа.
При использовании совместно с parallel_replicas_custom_key_range_lower это позволяет фильтру равномерно делить работу над репликами для диапазона [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]
.
Примечание: Эта настройка не приведет к дополнительной фильтрации данных во время обработки запроса, скорее она меняет точки, в которых диапазон фильтра разбивает диапазон [0, INT_MAX]
для параллельной обработки.
parallel_replicas_for_cluster_engines
Заменяет движки табличных функций на альтернативы с кластером.
parallel_replicas_for_non_replicated_merge_tree
Если true, ClickHouse будет использовать алгоритм параллельных реплик также для нереплицированных таблиц MergeTree.
parallel_replicas_index_analysis_only_on_coordinator
Анализ индексов выполняется только на реплике-координаторе и пропускается на других репликах. Эффективно только при включенном parallel_replicas_local_plan.
parallel_replicas_insert_select_local_pipeline
Использовать локальный конвейер во время распределенного INSERT SELECT с параллельными репликами.
parallel_replicas_local_plan
Создать локальный план для локальной реплики.
parallel_replicas_mark_segment_size
Части виртуально разделены на сегменты, которые будут распределены между репликами для параллельного чтения. Эта настройка контролирует размер этих сегментов. Не рекомендуется изменять, пока вы не будете абсолютно уверены в том, что делаете. Значение должно быть в диапазоне [128; 16384].
parallel_replicas_min_number_of_rows_per_replica
Ограничивает количество реплик, используемых в запросе, до (предполагаемые строки для чтения / min_number_of_rows_per_replica). Максимум по-прежнему ограничен параметром 'max_parallel_replicas'.
parallel_replicas_mode
Тип фильтра, который следует использовать с настраиваемым ключом для параллельных реплик. По умолчанию — использовать операцию модуля на настраиваемом ключе, диапазон — использовать диапазонный фильтр на настраиваемом ключе, используя все возможные значения для типа значения настраиваемого ключа.
parallel_replicas_only_with_analyzer
Анализатор должен быть включен для использования параллельных реплик. При отключенном анализаторе выполнение запроса переходит к локальному выполнению, даже если включено параллельное чтение из реплик. Использование параллельных реплик без включенного анализатора не поддерживается.
parallel_replicas_prefer_local_join
Если true, и JOIN может быть выполнен с алгоритмом параллельных реплик, и все хранилища правой стороны JOIN являются *MergeTree, будет использоваться локальный JOIN вместо GLOBAL JOIN.
parallel_view_processing
Включает одновременную отправку к связанным представлениям вместо последовательной.
parallelize_output_from_storages
Параллелизация вывода для шага чтения из хранилища. Она позволяет параллелизовать обработку запроса сразу после чтения из хранилища, если это возможно.
parsedatetime_e_requires_space_padding
Форматировщик '%e' в функции 'parseDateTime' ожидает, что дни с одной цифрой будут дополнены пробелом, например, ' 2' принимается, а '2' вызывает ошибку.
parsedatetime_parse_without_leading_zeros
Форматировщики '%c', '%l' и '%k' в функции 'parseDateTime' обрабатывают месяцы и часы без начальных нулей.
partial_merge_join_left_table_buffer_bytes
Если не 0, группировать блоки левой таблицы в более крупные для левой стороны в алгоритме частичного соединения. Использует до 2x указанной памяти на поток соединения.
partial_merge_join_rows_in_right_blocks
Ограничивает размеры блоков данных правого соединения в алгоритме частичного соединения для запросов JOIN.
Сервер ClickHouse:
- Разделяет данные правого соединения на блоки с количеством строк до указанного значения.
- Индексирует каждый блок по его минимальным и максимальным значениям.
- Выгружает подготовленные блоки на диск, если это возможно.
Возможные значения:
- Любое положительное целое. Рекомендуемый диапазон значений: [1000, 100000].
partial_result_on_first_cancel
Позволяет запросу вернуть частичный результат после отмены.
parts_to_delay_insert
Если целевая таблица содержит хотя бы столько активных частей в одной партиции, искусственно замедлить вставку в таблицу.
parts_to_throw_insert
Если больше, чем это число активных частей в одной партиции целевой таблицы, выбросить исключение 'Слишком много частей ...'.
periodic_live_view_refresh
Интервал, по истечении которого периодически обновляемый live-представление принудительно обновляется.
poll_interval
Блокировать на сервере в цикле ожидания запроса в течение указанного количества секунд.
postgresql_connection_attempt_timeout
Тайм-аут соединения в секундах для одной попытки подключения к конечной точке PostgreSQL. Значение передается как параметр connect_timeout
URL подключения.
postgresql_connection_pool_auto_close_connection
Закрывать соединение перед возвратом его в пул.
postgresql_connection_pool_retries
Количество попыток push/pop для пула соединений PostgreSQL и движка таблицы.
postgresql_connection_pool_size
Размер пула соединений для движка таблицы PostgreSQL и движка базы данных.
postgresql_connection_pool_wait_timeout
Тайм-аут push/pop в пуле соединений на пустом пуле для движка таблицы PostgreSQL и движка базы данных. По умолчанию он заблокирует на пустом пуле.
postgresql_fault_injection_probability
Приблизительная вероятность сбоя внутренних (для репликации) запросов PostgreSQL. Допустимое значение находится в интервале [0.0f, 1.0f].
prefer_column_name_to_alias
Включает или отключает использование оригинальных имён колонок вместо псевдонимов в выражениях и частях запросов. Это особенно важно, когда псевдоним совпадает с именем колонки, см. Псевдонимы выражений. Включите эту настройку, чтобы сделать правила синтаксиса псевдонимов в ClickHouse более совместимыми с большинством других движков баз данных.
Возможные значения:
- 0 — Имя колонки заменяется псевдонимом.
- 1 — Имя колонки не заменяется псевдонимом.
Пример
Разница между включенным и выключенным:
Запрос:
Результат:
Запрос:
Результат:
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
может изменить поведение запросов для распределенных таблиц, он не подходит для локальных таблиц или таблиц из внешних ресурсов. Здесь в игру вступает настройка prefer_global_in_and_join
.
Например, у нас есть узлы, обслуживающие запросы, которые содержат локальные таблицы, не подходящие для распределения. Нам нужно распределить их данные на лету во время распределенной обработки с использованием ключевого слова GLOBAL
— GLOBAL IN
/GLOBAL JOIN
.
Другим случаем использования prefer_global_in_and_join
является доступ к таблицам, созданным внешними движками. Эта настройка помогает сократить количество вызовов во внешние источники при соединении таких таблиц: всего один вызов на запрос.
Смотрите также:
- Распределённые подзапросы для получения дополнительной информации о том, как использовать
GLOBAL IN
/GLOBAL JOIN
.
prefer_localhost_replica
Включает/отключает предпочтительное использование localhost реплики при обработке распределенных запросов.
Возможные значения:
- 1 — ClickHouse всегда отправляет запрос на localhost реплику, если она существует.
- 0 — ClickHouse использует стратегию баланса, указанную в настройке load_balancing.
Отключите эту настройку, если вы используете max_parallel_replicas без parallel_replicas_custom_key. Если parallel_replicas_custom_key установлен, отключите эту настройку только если она используется на кластере с несколькими шардированными частями, содержащими несколько реплик. Если она используется на кластере с одной шардой и несколькими репликами, отключение этой настройки даст негативные результаты.
prefer_warmed_unmerged_parts_seconds
Эта настройка имеет эффект только в ClickHouse Cloud. Если объединённая часть меньше этого количества секунд и не была предварительно разогрета (см. cache_populated_by_fetch), но все её исходные части доступны и предварительно разогреты, SELECT запросы будут читать из этих частей вместо этого. Только для Replicated-/SharedMergeTree. Обратите внимание, что эта проверка лишь удостоверяется в том, что CacheWarmer обработал часть; если часть была извлечена в кэш чем-то другим, она всё равно будет считаться холодной, пока CacheWarmer не доберётся до неё; если она была разогрета и затем исключена из кэша, она всё равно будет считаться разогретой.
preferred_block_size_bytes
Эта настройка корректирует размер блока данных для обработки запросов и представляет собой дополнительную тонкую настройку для более грубой настройки 'max_block_size'. Если колонки большие и с 'max_block_size' строк размер блока, вероятно, будет больше указанного значения в байтах, его размер будет уменьшен для лучшей локальности кэша CPU.
preferred_max_column_in_block_size_bytes
Ограничение на максимальный размер колонки в блоке при считывании. Помогает снизить количество промахов кэша. Должен быть близок к размеру кэша L2.
preferred_optimize_projection_name
Если установлено в непустую строку, ClickHouse будет пытаться применить указанную проекцию в запросе.
Возможные значения:
- строка: имя предпочтительной проекции.
prefetch_buffer_size
Максимальный размер буфера предварительной выборки для чтения из файловой системы.
print_pretty_type_names
Позволяет красиво выводить имена глубоко вложенных типов с отступами в запросе DESCRIBE
и в функции toTypeName()
.
Пример:
priority
Приоритет запроса. 1 - самый высокий, более высокое значение - более низкий приоритет; 0 - не использовать приоритеты.
push_external_roles_in_interserver_queries
Включить передачу пользовательских ролей от инициатора к другим узлам во время выполнения запроса.
query_cache_compress_entries
Сжимать записи в кэше запросов. Уменьшает использование памяти кэша запросов за счет медленнее вставок в него / чтения из него.
Возможные значения:
- 0 - Отключено
- 1 - Включено
query_cache_max_entries
Максимальное количество результатов запросов, которые текущий пользователь может хранить в кэше запросов. 0 означает неограниченно.
Возможные значения:
- Положительное целое число >= 0.
query_cache_max_size_in_bytes
Максимальное количество памяти (в байтах), которую текущий пользователь может выделить в кэше запросов. 0 означает неограниченно.
Возможные значения:
- Положительное целое число >= 0.
query_cache_min_query_duration
Минимальная продолжительность в миллисекундах, в течение которой запрос должен выполняться, чтобы его результат хранился в кэше запросов.
Возможные значения:
- Положительное целое число >= 0.
query_cache_min_query_runs
Минимальное количество раз, которое SELECT
запрос должен быть выполнен, прежде чем его результат будет сохранен в кэше запросов.
Возможные значения:
- Положительное целое число >= 0.
query_cache_nondeterministic_function_handling
Управляет тем, как кэш запросов обрабатывает SELECT
запросы с недетерминированными функциями, такими как rand()
или now()
.
Возможные значения:
'throw'
- Создавать исключение и не кэшировать результат запроса.'save'
- Кэшировать результат запроса.'ignore'
- Не кэшировать результат запроса и не создавать исключение.
query_cache_share_between_users
Если включено, результат SELECT
запросов, кэшируемых в кэше запросов, может быть прочитан другими пользователями. Рекомендуется не включать эту настройку по соображениям безопасности.
Возможные значения:
- 0 - Отключено
- 1 - Включено
query_cache_squash_partial_results
Сжимать блоки частичных результатов в блоки размером max_block_size. Уменьшает производительность вставок в кэш запросов, но улучшает сжимаемость записей кэша (см. query_cache_compress_entries).
Возможные значения:
- 0 - Отключено
- 1 - Включено
query_cache_system_table_handling
Управляет тем, как кэш запросов обрабатывает SELECT
запросы к системным таблицам, т.е. таблицам в базах данных system.*
и information_schema.*
.
Возможные значения:
'throw'
- Создавать исключение и не кэшировать результат запроса.'save'
- Кэшировать результат запроса.'ignore'
- Не кэшировать результат запроса и не создавать исключение.
query_cache_tag
Строка, которая выступает в качестве метки для записей кэша запросов. Одни и те же запросы с разными метками считаются разными кэшем запросов.
Возможные значения:
- Любая строка.
query_cache_ttl
После этого времени в секундах записи в кэше запросов становятся устаревшими.
Возможные значения:
- Положительное целое число >= 0.
query_condition_cache_store_conditions_as_plaintext
Сохраняет фильтрационное условие для кэша условий запросов в открытом виде. Если включено, system.query_condition_cache показывает вербальное фильтрационное условие, что облегчает отладку проблем с кэшем. Отключено по умолчанию, так как открытые фильтрационные условия могут раскрыть конфиденциальную информацию.
Возможные значения:
- 0 - Отключено
- 1 - Включено
query_metric_log_interval
Интервал в миллисекундах, через который собирается query_metric_log для отдельных запросов.
Если установить в любое отрицательное значение, оно примет значение collect_interval_milliseconds
из настройки query_metric_log или по умолчанию составит 1000, если не установлено.
Чтобы отключить сбор для отдельного запроса, установите query_metric_log_interval
в 0.
Значение по умолчанию: -1.
query_plan_aggregation_in_order
Включает оптимизацию уровня плана запроса агрегации в порядке.
Эта настройка вступает в силу только если настройка query_plan_enable_optimizations равна 1.
Это настройка уровня эксперта, которая должна использоваться только для отладки разработчиками. Настройка может измениться в будущем несовместимым образом или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_convert_join_to_in
Разрешает преобразование JOIN в подзапрос с IN, если выходные колонки привязаны только к левой таблице.
query_plan_convert_outer_join_to_inner_join
Разрешить преобразование OUTER JOIN в INNER JOIN, если фильтр после JOIN всегда фильтрует значения по умолчанию.
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, если ключи соединения содержат префикс ПЕРВИЧНОГО КЛЮЧА для обеих таблиц. Поддерживается для алгоритмов hash, parallel_hash и full_sorting_merge.
query_plan_join_swap_table
Определяет, какая сторона соединения должна быть таблицей-строителем (также называемой внутренней, той, которая вставляется в хеш-таблицу для хеш-соединения) в плане запроса. Эта настройка поддерживается только для строгих соединений ALL
с предложением JOIN ON
. Возможные значения:
- 'auto': Позволить планировщику решить, какую таблицу использовать в качестве таблицы-строителя.
- 'false': Никогда не менять таблицы (правая таблица — это таблица-строитель).
- 'true': Всегда менять таблицы (левая таблица — это таблица-строитель).
query_plan_lift_up_array_join
Переключает оптимизацию уровня плана запроса, которая перемещает ARRAY JOIN выше в плане выполнения. Эта настройка вступает в силу только если настройка query_plan_enable_optimizations равна 1.
Это настройка уровня эксперта, которая должна использоваться только для отладки разработчиками. Настройка может измениться в будущем несовместимым образом или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_lift_up_union
Переключает оптимизацию уровня плана запроса, которая перемещает большие поддеревья плана запроса в объединение для включения дальнейших оптимизаций. Эта настройка вступает в силу только если настройка query_plan_enable_optimizations равна 1.
Это настройка уровня эксперта, которая должна использоваться только для отладки разработчиками. Настройка может измениться в будущем несовместимым образом или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_max_limit_for_lazy_materialization
Управляет максимальным лимитом, позволяющим использовать план запроса для оптимизации ленивой материализации. Если 0, лимита нет.
query_plan_max_optimizations_to_apply
Ограничивает общее количество оптимизаций, применяемых к плану запроса, см. настройку query_plan_enable_optimizations. Полезно для избежания долгого времени оптимизации для сложных запросов. В запросе EXPLAIN PLAN прекратите применение оптимизаций после достижения этого лимита и верните план таким, каким он есть. Для обычного выполнения запроса, если фактическое количество оптимизаций превышает эту настройку, будет выброшено исключение.
Это настройка уровня эксперта, которая должна использоваться только для отладки разработчиками. Настройка может измениться в будущем несовместимым образом или быть удалена.
query_plan_merge_expressions
Переключает оптимизацию уровня плана запроса, которая объединяет последовательные фильтры. Эта настройка вступает в силу только если настройка query_plan_enable_optimizations равна 1.
Это настройка уровня эксперта, которая должна использоваться только для отладки разработчиками. Настройка может измениться в будущем несовместимым образом или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_merge_filter_into_join_condition
Позволить объединение фильтра в условие JOIN и преобразование CROSS JOIN в INNER.
query_plan_merge_filters
Позволять объединять фильтры в плане запроса.
query_plan_reuse_storage_ordering_for_window_functions
Включает оптимизацию на уровне плана запроса, которая использует сортировку хранения при сортировке для оконных функций. Эта настройка вступает в силу только в том случае, если параметр query_plan_enable_optimizations равен 1.
Эта настройка предназначена для экспертов и должна использоваться только для отладки разработчиками. Настройка может измениться в будущем с несовместимыми изменениями или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_split_filter
Эта настройка предназначена для экспертов и должна использоваться только для отладки разработчиками. Настройка может измениться в будущем с несовместимыми изменениями или быть удалена.
Включает оптимизацию на уровне плана запроса, которая разделяет фильтры на выражения. Эта настройка вступает в силу только в том случае, если параметр query_plan_enable_optimizations равен 1.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_try_use_vector_search
Включает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства. Эта настройка вступает в силу только в том случае, если параметр query_plan_enable_optimizations равен 1.
Эта настройка предназначена для экспертов и должна использоваться только для отладки разработчиками. Настройка может измениться в будущем с несовместимыми изменениями или быть удалена.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_use_new_logical_join_step
Использовать новый логический шаг соединения в плане запроса
query_profiler_cpu_time_period_ns
Устанавливает период для таймера тактового синхронизатора CPU профайлера запросов query profiler. Этот таймер учитывает только время CPU.
Возможные значения:
-
Положительное целое число в наносекундах.
Рекомендуемые значения:
- 10000000 (100 раз в секунду) наносекунд и больше для единичных запросов.
- 1000000000 (один раз в секунду) для профилирования на уровне кластера.
-
0 для отключения таймера.
Временно отключено в ClickHouse Cloud.
См. также:
- Системная таблица trace_log
query_profiler_real_time_period_ns
Устанавливает период для реального таймера профайлера запросов query profiler. Реальный таймер учитывает время по часам.
Возможные значения:
-
Положительное целое число в наносекундах.
Рекомендуемые значения:
- 10000000 (100 раз в секунду) наносекунд и меньше для единичных запросов.
- 1000000000 (один раз в секунду) для профилирования на уровне кластера.
-
0 для отключения таймера.
Временно отключено в ClickHouse Cloud.
См. также:
- Системная таблица trace_log
queue_max_wait_ms
Время ожидания в очереди запросов, если количество одновременно выполняемых запросов превышает максимальное.
rabbitmq_max_wait_ms
Время ожидания для чтения из RabbitMQ перед повторной попыткой.
read_backoff_max_throughput
Настройки для уменьшения числа потоков в случае медленных операций чтения. Учитывает события, когда пропускная способность чтения оказывается меньше указанного количества байт в секунду.
read_backoff_min_concurrency
Настройки для поддержки минимального количества потоков в случае медленных операций чтения.
read_backoff_min_events
Настройки для уменьшения числа потоков в случае медленных операций чтения. Указывает количество событий, после которых число потоков будет уменьшено.
read_backoff_min_interval_between_events_ms
Настройки для уменьшения числа потоков в случае медленных операций чтения. Игнорировать событие, если предыдущее событие прошло менее указанного времени.
read_backoff_min_latency_ms
Настройка для уменьшения числа потоков в случае медленных операций чтения. Учитывать только чтения, которые заняли не менее указанного времени.
read_from_filesystem_cache_if_exists_otherwise_bypass_cache
Разрешить использование кеша файловой системы в пассивном режиме - использовать существующие записи кеша, но не добавлять новые записи в кеш. Если вы установите эту настройку для тяжелых ad-hoc запросов и оставите ее отключенной для коротких запросов в реальном времени, это позволит избежать колебаний кеша из-за слишком тяжелых запросов и улучшить общую эффективность системы.
read_from_page_cache_if_exists_otherwise_bypass_cache
Использовать кеш страниц в пользовательском пространстве в пассивном режиме, аналогично read_from_filesystem_cache_if_exists_otherwise_bypass_cache.
read_in_order_two_level_merge_threshold
Минимальное количество частей для чтения, чтобы выполнить предварительный этап слияния при многопоточном чтении в порядке первичного ключа.
read_in_order_use_buffering
Использовать буферизацию перед слиянием при чтении в порядке первичного ключа. Это увеличивает параллелизм выполнения запросов.
read_in_order_use_virtual_row
Использовать виртуальную строку при чтении в порядке первичного ключа или его монотонной функции. Это полезно, когда поиск ведется по нескольким частям, так как касаются только релевантных.
read_overflow_mode
Что делать, когда предел превышен.
read_overflow_mode_leaf
Устанавливает, что происходит, когда объем прочитанных данных превышает один из предельных значений.
Возможные варианты:
throw
: выбросить исключение (по умолчанию).break
: остановить выполнение запроса и вернуть частичный результат.
read_priority
Приоритет для чтения данных из локальной файловой системы или удаленной файловой системы. Поддерживается только для метода 'pread_threadpool' для локальной файловой системы и для метода threadpool
для удаленной файловой системы.
read_through_distributed_cache
Эта настройка имеет эффект только в ClickHouse Cloud. Разрешить чтение из распределенного кеша.
readonly
0 - нет ограничений на чтение. 1 - только запросы на чтение, а также изменение явно разрешенных настроек. 2 - только запросы на чтение, а также изменение настроек, кроме настройки 'readonly'.
receive_data_timeout_ms
Таймаут соединения для получения первого пакета данных или пакета с положительным прогрессом от реплики.
receive_timeout
Таймаут для получения данных из сети, в секундах. Если байты не были получены в этом интервале, выбрасывается исключение. Если вы установите эту настройку на клиенте, таймаут 'send_timeout' для сокета также будет установлен на соответствующем конечном соединении на сервере.
regexp_max_matches_per_row
Устанавливает максимальное количество совпадений для одного регулярного выражения на строку. Используйте это для защиты от перегрузки памяти при использовании жадного регулярного выражения в функции extractAllGroupsHorizontal.
Возможные значения:
- Положительное целое число.
reject_expensive_hyperscan_regexps
Отклонять шаблоны, которые, вероятно, будут дорогими для оценки с помощью hyperscan (из-за взрыва состояния NFA).
remerge_sort_lowered_memory_bytes_ratio
Если использование памяти после повторного слияния не снизится на это соотношение, повторное слияние будет отключено.
remote_filesystem_read_method
Метод чтения данных из удаленной файловой системы, один из: read, threadpool.
remote_filesystem_read_prefetch
Следует использовать предварительное чтение при чтении данных из удаленной файловой системы.
remote_fs_read_backoff_max_tries
Максимальное количество попыток чтения с применением отката.
remote_fs_read_max_backoff_ms
Максимальное время ожидания при попытке чтения данных с удаленного диска.
remote_read_min_bytes_for_seek
Минимальное количество байтов, необходимых для удаленного чтения (url, s3), чтобы осуществить переход, вместо чтения с игнорированием.
rename_files_after_processing
-
Тип: String
-
Значение по умолчанию: Пустая строка
Эта настройка позволяет указать шаблон переименования для файлов, обработанных с помощью функции таблицы file
. Когда параметр установлен, все файлы, прочитанные функцией таблицы file
, будут переименованы в соответствии с указанным шаблоном с заполнителями, только если обработка файлов была успешной.
Заполнители
%a
— Полное оригинальное имя файла (например, "sample.csv").%f
— Оригинальное имя файла без расширения (например, "sample").%e
— Оригинальное расширение файла с точкой (например, ".csv").%t
— Временная метка (в микросекундах).%%
— Символ процента ("%").
Пример
-
Параметр:
--rename_files_after_processing="processed_%f_%t%e"
-
Запрос:
SELECT * FROM file('sample.csv')
Если чтение sample.csv
прошло успешно, файл будет переименован в processed_sample_1683473210851438.csv
.
replace_running_query
При использовании HTTP интерфейса можно передать параметр 'query_id'. Это любая строка, которая служит идентификатором запроса. Если в это время уже существует запрос от того же пользователя с тем же 'query_id', поведение зависит от параметра 'replace_running_query'.
0
(по умолчанию) – Выбросить исключение (не позволять выполнять запрос, если запрос с тем же 'query_id' уже выполняется).
1
– Отменить старый запрос и начать выполнять новый.
Установите этот параметр в 1 для реализации предложений об условиях сегментации. После ввода следующего символа, если старый запрос еще не завершен, он должен быть отменен.
replace_running_query_max_wait_ms
Время ожидания завершения запроса с тем же query_id
, когда активна настройка replace_running_query.
Возможные значения:
- Положительное целое число.
- 0 — Выбрасывание исключения, которое не позволяет запустить новый запрос, если сервер уже выполняет запрос с тем же
query_id
.
replication_wait_for_inactive_replica_timeout
Указывает, как долго (в секундах) ждать, пока неактивные реплики выполнят запросы ALTER, OPTIMIZE или TRUNCATE.
Возможные значения:
- 0 — Не ждать.
- Отрицательное целое число — Ждать неограниченное время.
- Положительное целое число — количество секунд ожидания.
restore_replace_external_dictionary_source_to_null
Заменить источники внешнего словаря на Null при восстановлении. Полезно для тестирования.
restore_replace_external_engines_to_null
Для тестирования. Заменяет все внешние движки на Null, чтобы не инициировать внешние соединения.
restore_replace_external_table_functions_to_null
Для тестирования. Заменяет все внешние табличные функции на Null, чтобы не инициировать внешние соединения.
restore_replicated_merge_tree_to_shared_merge_tree
Заменить движок таблицы с ReplicatedMergeTree -> SharedMergeTree во время ВОССТАНОВЛЕНИЯ.
result_overflow_mode
Значение по умолчанию для облака: throw
Устанавливает, что делать, если объем результата превышает одно из предельных значений.
Возможные значения:
throw
: выбросить исключение (по умолчанию).break
: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
Использование 'break' аналогично использованию LIMIT. Break
прерывает выполнение только на уровне блока. Это означает, что количество возвращаемых строк больше чем
max_result_rows
, кратное max_block_size
и зависит от max_threads
.
Пример
rewrite_count_distinct_if_with_count_distinct_implementation
Позволяет переписать countDistinctIf
с помощью настройки count_distinct_implementation.
Возможные значения:
- true — Разрешить.
- false — Запретить.
s3_allow_multipart_copy
Разрешить многочастичное копирование в S3.
s3_allow_parallel_part_upload
Использовать несколько потоков для многочастичной загрузки в s3. Это может привести к немного большему использованию памяти.
s3_check_objects_after_upload
Проверять каждый загруженный объект в S3 с помощью запроса head, чтобы убедиться, что загрузка прошла успешно.
s3_connect_timeout_ms
Таймаут соединения для хоста с дисков S3.
s3_create_new_file_on_insert
Включает или отключает создание нового файла при каждой вставке в таблицы движка s3. Если включено, при каждой вставке создается новый объект S3 с ключом, аналогично следующему шаблону:
начальный: data.Parquet.gz
-> data.1.Parquet.gz
-> data.2.Parquet.gz
, и т.д.
Возможные значения:
- 0 — запрос
INSERT
создает новый файл или завершается, если файл существует и s3_truncate_on_insert не установлен. - 1 — запрос
INSERT
создает новый файл при каждой вставке, используя суффикс (со второго) если s3_truncate_on_insert не установлен.
Смотрите дополнительные детали здесь.
s3_disable_checksum
Не рассчитывать контрольную сумму при отправке файла в S3. Это ускоряет запись, избегая чрезмерной обработки файла. Это в основном безопасно, так как данные таблиц MergeTree проверяются ClickHouse, и когда S3 доступен через HTTPS, уровень TLS уже обеспечивает целостность при передаче по сети. В то время как дополнительные контрольные суммы в S3 дают дополнительный уровень защиты.
s3_ignore_file_doesnt_exist
Игнорировать отсутствие файла, если он не существует при чтении определенных ключей.
Возможные значения:
- 1 —
SELECT
возвращает пустой результат. - 0 —
SELECT
выбрасывает исключение.
s3_list_object_keys_size
Максимальное количество файлов, которые могут быть возвращены в пакете запросом ListObject.
s3_max_connections
Максимальное количество соединений на сервер.
s3_max_get_burst
Максимальное количество запросов, которые могут быть выданы одновременно, прежде чем будет достигнут лимит запросов в секунду. По умолчанию (0) равно s3_max_get_rps
.
s3_max_get_rps
Лимит на количество запросов S3 GET в секунду перед ограничением. Ноль означает неограниченно.
s3_max_inflight_parts_for_one_file
Максимальное количество одновременно загруженных частей в запросе многочастичной загрузки. 0 означает неограниченно.
s3_max_part_number
Максимальный номер части для загрузки в S3.
s3_max_put_burst
Максимальное количество запросов, которые могут быть выданы одновременно, прежде чем будет достигнут лимит запросов в секунду. По умолчанию (0) равно s3_max_put_rps
.
s3_max_put_rps
Лимит на количество запросов S3 PUT в секунду перед ограничением. Ноль означает неограниченно.
s3_max_redirects
Максимальное количество разрешенных переходов S3.
s3_max_single_operation_copy_size
Максимальный размер для копирования в одной операции в S3. Эта настройка используется только если s3_allow_multipart_copy установлена в true.
s3_max_single_part_upload_size
Максимальный размер объекта для загрузки с помощью единой части загрузки в S3.
s3_max_single_read_retries
Максимальное количество попыток во время одного чтения S3.
s3_max_unexpected_write_error_retries
Максимальное количество попыток в случае неожиданных ошибок во время записи в S3.
s3_max_upload_part_size
Максимальный размер части для загрузки во время многочастичной загрузки в S3.
s3_min_upload_part_size
Минимальный размер части для загрузки во время многочастичной загрузки в S3.
s3_request_timeout_ms
Время ожидания для отправки и приема данных в S3. Ошибка, если один TCP вызов чтения или записи блокирует на это время.
s3_retry_attempts
Настройка для Aws::Client::RetryStrategy, Aws::Client выполняет повторы самостоятельно, 0 означает отсутствие повторов.
s3_skip_empty_files
Включает или отключает пропуск пустых файлов в таблицах движка S3.
Возможные значения:
- 0 —
SELECT
выбрасывает исключение, если пустой файл несовместим с запрашиваемым форматом. - 1 —
SELECT
возвращает пустой результат для пустого файла.
s3_slow_all_threads_after_network_error
Если установлено значение true
, то все потоки, выполняющие запросы S3 к одной и той же конечной точке, замедляются на некоторое время после того, как один запрос S3 завершится с ошибкой сети, подлежащей повторной попытке.
Если установлено значение false
, то каждый поток, выполняющий запрос S3, использует независимый набор откатов при ошибках сети.
s3_strict_upload_part_size
Точный размер части для загрузки во время многочастичной загрузки в S3 (некоторые реализации не поддерживают переменные размеры частей).
s3_throw_on_zero_files_match
Выбросить ошибку, когда запрос ListObjects не может сопоставить ни один файл.
s3_truncate_on_insert
Включает или отключает обрезку перед вставками в таблицы движка S3. Если отключено, выбросится исключение при попытках вставки, если объект S3 уже существует.
Возможные значения:
- 0 — запрос
INSERT
создает новый файл или завершается, если файл существует и s3_create_new_file_on_insert не установлен. - 1 — запрос
INSERT
заменяет существующее содержимое файла новыми данными.
Смотрите дополнительные детали здесь.
s3_upload_part_size_multiply_factor
Умножать s3_min_upload_part_size на этот коэффициент каждый раз, когда s3_multiply_parts_count_threshold части были загружены из одной записи в S3.
s3_upload_part_size_multiply_parts_count_threshold
Каждый раз, когда это количество частей было загружено в S3, s3_min_upload_part_size умножается на s3_upload_part_size_multiply_factor.
s3_use_adaptive_timeouts
Если установлено значение true
, для всех запросов S3 первые две попытки выполняются с низкими тайм-аутами отправки и получения.
Если установлено значение false
, все попытки выполняются с одинаковыми тайм-аутами.
s3_validate_request_settings
Включает проверку настроек запроса S3.
Возможные значения:
- 1 — валидировать настройки.
- 0 — не валидировать настройки.
s3queue_default_zookeeper_path
Префикс пути zookeeper по умолчанию для движка S3Queue.
s3queue_enable_logging_to_s3queue_log
Включить запись в system.s3queue_log. Значение может быть переопределено для таблицы с помощью настроек таблицы.
s3queue_migrate_old_metadata_to_buckets
Перенос старой структуры метаданных таблицы S3Queue в новую.
schema_inference_cache_require_modification_time_for_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, смотрите консистентность SharedMergeTree для получения дополнительной информации о поведении select_sequential_consistency
в SharedMergeTree.
Включает или отключает последовательную консистентность для запросов SELECT
. Требуется, чтобы insert_quorum_parallel
был отключен (включен по умолчанию).
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Использование
Когда последовательная консистентность включена, ClickHouse позволяет клиенту выполнять запрос SELECT
только для тех реплик, которые содержат данные из всех предыдущих запросов INSERT
, выполненных с insert_quorum
. Если клиент ссылается на частичную реплику, ClickHouse сгенерирует исключение. Запрос SELECT
не будет включать данные, которые еще не были записаны в кворум реплик.
Когда insert_quorum_parallel
включен (по умолчанию), select_sequential_consistency
не работает. Это связано с тем, что параллельные запросы INSERT
могут записываться в разные наборы кворум-реплик, поэтому нет гарантии, что одна реплика получит все записи.
Смотрите также:
send_logs_level
Отправляет текстовые логи сервера с указанным минимальным уровнем клиенту. Доступные значения: 'trace', 'debug', 'information', 'warning', 'error', 'fatal', 'none'.
send_logs_source_regexp
Отправляет текстовые логи сервера с указанным регулярным выражением для сопоставления имени источника лога. Пустое значение означает все источники.
send_progress_in_http_headers
Включает или отключает заголовки HTTP-ответов X-ClickHouse-Progress
в ответах clickhouse-server
.
Для получения дополнительной информации читайте описание HTTP интерфейса.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
send_timeout
Таймаут для отправки данных в сеть, в секундах. Если клиенту нужно отправить какие-либо данные, но он не может отправить ни одного байта в этот интервал, выбрасывается исключение. Если вы установите эту настройку на клиенте, 'receive_timeout' для сокета также будет установлен на соответствующей стороне соединения на сервере.
serialize_query_plan
Сериализует план запроса для распределенной обработки.
session_timezone
Устанавливает неявный часовой пояс текущей сессии или запроса. Неявный часовой пояс применяется к значениям типа DateTime/DateTime64, для которых не указан явно часовой пояс. Эта настройка имеет приоритет над глобально настроенным (уровень сервера) неявным часовым поясом. Пустое значение '' (пустая строка) означает, что неявный часовой пояс текущей сессии или запроса равен часовому поясу сервера.
Вы можете использовать функции timeZone()
и serverTimeZone()
, чтобы получить часовой пояс сессии и часовой пояс сервера.
Возможные значения:
- Любое имя часового пояса из
system.time_zones
, например,Europe/Berlin
,UTC
илиZulu
.
Примеры:
Назначьте часовой пояс сессии 'America/Denver' для внутреннего DateTime без явно указанного часового пояса:
Не все функции, которые разбирают DateTime/DateTime64, учитывают session_timezone
. Это может привести к тонким ошибкам.
Смотрите следующий пример и объяснение.
Это происходит из-за разных конвейеров разбора:
toDateTime()
без явно указанного часового пояса, использованная в первом запросеSELECT
, учитывает настройкуsession_timezone
и глобальный часовой пояс.- Во втором запросе DateTime разбирается из строки и наследует тип и часовой пояс существующей колонки
d
. Таким образом, настройкиsession_timezone
и глобальный часовой пояс не учитываются.
Смотрите также
set_overflow_mode
Устанавливает, что происходит, когда количество данных превышает один из лимитов.
Возможные значения:
throw
: выбросить исключение (по умолчанию).break
: прекратить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
shared_merge_tree_sync_parts_on_partition_operations
Автоматически синхронизирует набор частей данных после операций MOVE|REPLACE|ATTACH в таблицах SMT. Только для облака.
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 аргументами только для строк с ненулевыми значениями во всех аргументах. Применяется, когда настройка short_circuit_function_evaluation_for_nulls
включена.
Когда соотношение строк, содержащих значения NULL, к общему количеству строк превышает этот порог, эти строки, содержащие значения NULL, не будут оцениваться.
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.
Пример
Различие между включением и отключением:
Запрос:
Результат:
Запрос:
Результат:
skip_unavailable_shards
Включает или отключает бесшумное пропускание недоступных шардов.
Шард считается недоступным, если все его реплики недоступны. Реплика недоступна в следующих случаях:
-
ClickHouse не может подключиться к реплике по какой-либо причине.
При подключении к реплике ClickHouse выполняет несколько попыток. Если все эти попытки не удались, реплика считается недоступной.
-
Реплика не может быть разрешена через DNS.
Если имя хоста реплики не может быть разрешено через DNS, это может указывать на следующие ситуации:
-
У хоста реплики нет DNS-записи. Это может произойти в системах с динамическим DNS, например, Kubernetes, где узлы могут быть нерешаемыми во время простоя, и это не является ошибкой.
-
Ошибка конфигурации. Файл конфигурации ClickHouse содержит неправильное имя хоста.
-
Возможные значения:
-
1 — пропуск включен.
Если шард недоступен, ClickHouse возвращает результат на основе частичных данных и не сообщает об ошибках доступности узлов.
-
0 — пропуск отключен.
Если шард недоступен, ClickHouse выбрасывает исключение.
sleep_after_receiving_query_ms
Время для паузы после получения запроса в TCPHandler.
sleep_in_send_data_ms
Время для паузы при отправке данных в TCPHandler.
sleep_in_send_tables_status_ms
Время для паузы при отправке статуса таблиц в ответе TCPHandler.
sort_overflow_mode
Устанавливает, что происходит, если количество строк, полученных до сортировки, превышает один из лимитов.
Возможные значения:
throw
: выбросить исключение.break
: прекратить выполнение запроса и вернуть частичный результат.
split_intersecting_parts_ranges_into_layers_final
Разбивает пересекающиеся диапазоны частей на слои во время окончательной оптимизации.
split_parts_ranges_into_intersecting_and_non_intersecting_final
Разбивает диапазоны частей на пересекающиеся и непересекающиеся во время окончательной оптимизации.
splitby_max_substrings_includes_remaining_string
Управляет, будет ли функция splitBy*() с аргументом max_substrings
> 0 включать оставшуюся строку в последний элемент результирующего массива.
Возможные значения:
0
- Оставшаяся строка не будет включена в последний элемент результирующего массива.1
- Оставшаяся строка будет включена в последний элемент результирующего массива. Это поведение функции Sparksplit()
и метода Python 'string.split()'.
stop_refreshable_materialized_views_on_startup
При запуске сервера предотвращает планирование обновляемых материализованных представлений, как если бы с помощью SYSTEM STOP VIEWS. Вы можете вручную запустить их с помощью SYSTEM START VIEWS
или SYSTEM START VIEW <name>
после этого. Также применяется к новым представлениям. Не влияет на не обновляемые материализованные представления.
storage_file_read_method
Метод чтения данных из файла хранения, один из: read
, pread
, mmap
. Метод mmap не применяется для clickhouse-server (он предназначен для clickhouse-local).
storage_system_stack_trace_pipe_read_timeout_ms
Максимальное время для чтения из трубки для получения информации от потоков при запросе таблицы system.stack_trace
. Эта настройка используется в тестовых целях и не предназначена для изменения пользователями.
stream_flush_interval_ms
Работает для таблиц с потоковой передачей в случае тайм-аута или когда поток генерирует max_insert_block_size строк.
Значение по умолчанию — 7500.
Чем меньше значение, тем чаще данные сбрасываются в таблицу. Установка слишком низкого значения приводит к низкой производительности.
stream_like_engine_allow_direct_select
Разрешить прямой запрос SELECT для движков Kafka, RabbitMQ, FileLog, Redis Streams и NATS. В случае наличия прикрепленных материализованных представлений запрос SELECT не разрешается, даже если эта настройка включена.
stream_like_engine_insert_queue
Когда потокоподобный движок читает из нескольких очередей, пользователю нужно выбрать одну очередь для вставки при записи. Используется в Redis Streams и NATS.
stream_poll_timeout_ms
Таймаут для опроса данных от/в потоковые хранилища.
system_events_show_zero_values
Позволяет выбирать события с нулевыми значениями из system.events
.
Некоторые системы мониторинга требуют передачи всех значений метрик для каждой контрольной точки, даже если значение метрики равно нулю.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
Примеры
Запрос
Результат
Запрос
Результат
table_function_remote_max_addresses
Устанавливает максимальное количество адресов, сгенерированных по шаблонам для функции remote.
Возможные значения:
- Положительное целое число.
tcp_keep_alive_timeout
Время в секундах, в течение которого соединение должно оставаться неактивным, прежде чем TCP начнет отправлять пакеты keepalive.
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
Время ожидания блокировки кеша для резервирования пространства для временных данных в кэше файловой системы.
temporary_files_codec
Устанавливает кодек сжатия для временных файлов, используемых в операциях сортировки и соединения на диске.
Возможные значения:
- LZ4 — применяется сжатие LZ4.
- NONE — сжатие не применяется.
throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert
Выбрасывать исключение при запросе INSERT, когда настройка deduplicate_blocks_in_dependent_materialized_views
включена вместе с async_insert
. Это гарантирует корректность, так как эти функции не могут работать вместе.
throw_if_no_data_to_insert
Разрешает или запрещает пустые INSERT-запросы, включено по умолчанию (выбрасывает ошибку при пустом вставке). Применяется только к INSERT-запросам с использованием clickhouse-client
или использованию интерфейса gRPC.
throw_on_error_from_cache_on_write_operations
Игнорировать ошибки от кеша при записи операций (INSERT, объединения).
throw_on_max_partitions_per_insert_block
Позволяет контролировать поведение при достижении max_partitions_per_insert_block
.
Возможные значения:
true
- Когда блок вставки достигаетmax_partitions_per_insert_block
, выбрасывается исключение.false
- Логи предупреждают, когда достигнутmax_partitions_per_insert_block
.
Это может быть полезным, если вы пытаетесь понять влияние на пользователей при изменении max_partitions_per_insert_block
.
throw_on_unsupported_query_inside_transaction
Выбрасывать исключение, если внутри транзакции используется неподдерживаемый запрос.
timeout_before_checking_execution_speed
Проверяет, что скорость выполнения не слишком медленная (не менее min_execution_speed
), после истечения указанного времени в секундах.
timeout_overflow_mode
Устанавливает, что делать, если запрос выполняется дольше, чем max_execution_time
или предполагаемое время выполнения превышает max_estimated_execution_time
.
Возможные значения:
throw
: выбросить исключение (по умолчанию).break
: прекратить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
timeout_overflow_mode_leaf
Устанавливает, что происходит, когда запрос в листовом узле выполняется дольше, чем max_execution_time_leaf
.
Возможные значения:
throw
: выбросить исключение (по умолчанию).break
: прекратить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
totals_auto_threshold
Порог для totals_mode = 'auto'
.
Смотрите раздел "Модификатор WITH TOTALS".
totals_mode
Как вычислять TOTALS, когда HAVING присутствует, а также когда max_rows_to_group_by и group_by_overflow_mode = 'any' присутствуют. Смотрите раздел "Модификатор WITH TOTALS".
trace_profile_events
Включает или отключает сбор стек-трассировок при каждом обновлении событий профилирования вместе с именем профилируемого события и значением инкремента, и отправляет их в trace_log.
Возможные значения:
- 1 — Включен трейсинг событий профилирования.
- 0 — Трейсинг событий профилирования отключен.
transfer_overflow_mode
Устанавливает, что происходит, когда количество данных превышает один из лимитов.
Возможные значения:
throw
: выбросить исключение (по умолчанию).break
: прекратить выполнение запроса и вернуть частичный результат, как если бы исходные данные закончились.
transform_null_in
Включает равенство значений NULL для оператора IN.
По умолчанию значения NULL
не могут быть сравнены, так как NULL
означает не определенное значение. Таким образом, сравнение expr = NULL
всегда должно возвращать false
. С этой настройкой NULL = NULL
возвращает true
для оператора IN.
Возможные значения:
- 0 — Сравнение значений
NULL
в оператореIN
возвращаетfalse
. - 1 — Сравнение значений
NULL
в оператореIN
возвращаетtrue
.
Пример
Рассмотрим таблицу null_in
:
Запрос:
Результат:
Запрос:
Результат:
Смотрите также
traverse_shadow_remote_data_paths
Перебирать замороженные данные (скрытый каталог) в дополнение к фактическим данным таблицы при запросе system.remote_data_paths.
union_default_mode
Устанавливает режим для объединения результатов запросов SELECT
. Настройка используется только при совместном использовании с UNION без явного указания UNION ALL
или UNION DISTINCT
.
Возможные значения:
'DISTINCT'
— ClickHouse выводит строки в результате объединения запросов, удаляя дубликаты.'ALL'
— ClickHouse выводит все строки в результате объединения запросов, включая дубликаты.''
— ClickHouse выдает исключение при использовании сUNION
.
Смотрите примеры в UNION.
unknown_packet_in_send_data
Отправить неизвестный пакет вместо N-го пакета данных.
update_parallel_mode
Определяет поведение параллельных запросов обновления.
Возможные значения:
sync
- запускать последовательно все запросыUPDATE
.auto
- запускать последовательно только запросы обновления с зависимостями между столбцами, обновляемыми в одном запросе, и столбцами, используемыми в выражениях другого запроса.async
- не синхронизировать запросы обновления.
update_sequential_consistency
Если true, набор частей обновляется до последней версии перед выполнением обновления.
use_async_executor_for_materialized_views
Использовать асинхронное и потенциально многопоточное выполнение запроса материализованного представления, что может ускорить обработку представлений во время INSERT, но также потреблять больше памяти.
use_cache_for_count_from_files
Включает кеширование количества строк при подсчете из файлов в табличных функциях file
/s3
/url
/hdfs
/azureBlobStorage
.
Включено по умолчанию.
use_client_time_zone
Использовать часовой пояс клиента для интерпретации строковых значений DateTime, вместо использования часового пояса сервера.
use_compact_format_in_distributed_parts_names
Использует компактный формат для хранения блоков для фонового (distributed_foreground_insert
) INSERT в таблицы с движком Distributed
.
Возможные значения:
- 0 — Использует формат
user[:password]@host:port#default_database
. - 1 — Использует формат директории
[shard{shard_index}[_replica{replica_index}]]
.
- при
use_compact_format_in_distributed_parts_names=0
изменения из определения кластера не будут применены для фонового INSERT. - при
use_compact_format_in_distributed_parts_names=1
изменение порядка узлов в определении кластера будет изменятьshard_index
/replica_index
, так что будьте внимательны.
use_concurrency_control
Учитывайте контроль параллелизма сервера (см. глобальные настройки сервера concurrent_threads_soft_limit_num
и concurrent_threads_soft_limit_ratio_to_cores
). Если отключено, это позволяет использовать большее количество потоков, даже если сервер перегружен (не рекомендуется для нормального использования и в основном нужно для тестов).
use_hedged_requests
Включает логику хеджирования запросов для удаленных запросов. Это позволяет устанавливать множество соединений с различными репликами для запроса. Новое соединение устанавливается в случае, если существующие соединения с репликами не были установлены в течение hedged_connection_timeout
или если данные не были получены в течение receive_data_timeout
. Запрос использует первое соединение, которое отправляет непустой пакет прогресса (или пакет данных, если allow_changing_replica_until_first_data_packet
); другие соединения отменяются. Запросы с max_parallel_replicas > 1
поддерживаются.
По умолчанию включено.
По умолчанию отключено в Cloud.
use_hive_partitioning
При включении ClickHouse будет обнаруживать разбиение на разделы в стиле Hive в пути (/name=value/
) в таблицах, подобных файлам File/S3/URL/HDFS/AzureBlobStorage и позволит использовать колонки-разделы как виртуальные колонки в запросе. Эти виртуальные колонки будут иметь те же имена, что и в разбиенном пути, но начинаться с _
.
use_iceberg_metadata_files_cache
Если включено, функция таблицы iceberg и хранилище iceberg могут использовать кэш файлов метаданных iceberg.
Возможные значения:
- 0 - Отключено
- 1 - Включено
use_iceberg_partition_pruning
Использовать обрезку разбиений Iceberg для таблиц Iceberg.
use_index_for_in_with_subqueries
Попробуйте использовать индекс, если есть подзапрос или табличное выражение на правой стороне оператора IN.
use_index_for_in_with_subqueries_max_values
Максимальный размер множества на правой стороне оператора IN для использования табличного индекса для фильтрации. Это позволяет избежать ухудшения производительности и увеличенного использования памяти из-за подготовки дополнительных структур данных для крупных запросов. Ноль означает отсутствие лимита.
use_json_alias_for_old_object_type
При включении будет использоваться псевдоним типа JSON
для создания старого типа Object('json') вместо нового типа JSON.
use_legacy_to_time
При включении позволяет использовать устаревшую функцию toTime, которая конвертирует дату с временем в определенную фиксированную дату, сохраняя время. В противном случае используется новая функция toTime, которая конвертирует различные типы данных в тип Time. Старая устаревшая функция также доступна без условий как toTimeWithFixedDate.
use_page_cache_for_disks_without_file_cache
Используйте кэш страниц пользовательского пространства для удаленных дисков, на которых кэш файловой системы отключен.
use_page_cache_with_distributed_cache
Используйте кэш страниц пользовательского пространства, когда используется распределенный кэш.
use_query_cache
Если включено, запросы SELECT
могут использовать кэш запросов. Параметры enable_reads_from_query_cache и enable_writes_to_query_cache более детально контролируют, как используется кэш.
Возможные значения:
- 0 - Отключено
- 1 - Включено
use_query_condition_cache
Включить кэш условий запроса. Кэш хранит диапазоны гранул в частях данных, которые не удовлетворяют условию в операторе WHERE
, и повторно использует эту информацию в качестве эпhemerального индекса для последующих запросов.
Возможные значения:
- 0 - Отключено
- 1 - Включено
use_skip_indexes
Используйте индексы пропуска данных во время выполнения запроса.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
use_skip_indexes_if_final
Контролирует, используются ли индексы пропуска при выполнении запроса с модификатором FINAL.
По умолчанию эта настройка отключена, поскольку индексы пропуска могут исключить строки (гранулы), содержащие последние данные, что может привести к неправильным результатам. Когда включено, индексы пропуска применяются даже с модификатором FINAL, что потенциально улучшает производительность, но с риском упустить недавние обновления.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
use_skip_indexes_if_final_exact_mode
Контролирует, расширяются ли гранулы, возвращаемые индексом пропуска, в новых частях, чтобы вернуть правильные результаты при выполнении запроса с модификатором FINAL.
Использование индексов пропуска может исключить строки (гранулы), содержащие последние данные, что может привести к неправильным результатам. Эта настройка может гарантировать, что правильные результаты будут возвращены путем сканирования новых частей, которые имеют пересечение с диапазонами, возвращенными индексом пропуска.
Возможные значения:
- 0 — Отключено.
- 1 — Включено.
use_structure_from_insertion_table_in_table_functions
Используйте структуру из таблицы вставки вместо вывода схемы из данных. Возможные значения: 0 - отключено, 1 - включено, 2 - авто.
use_uncompressed_cache
Включать ли кэш нежатых блоков. Принимает 0 или 1. По умолчанию 0 (отключено). Использование кэша нежатых блоков (только для таблиц в семье MergeTree) может значительно снизить задержку и увеличить пропускную способность при работе с большим количеством коротких запросов. Включите эту настройку для пользователей, которые отправляют частые короткие запросы. Обратите внимание на параметр конфигурации uncompressed_cache_size (настраивается только в файле конфигурации) – размер нежатых кэшированных блоков. По умолчанию 8 GiB. Нежатый кэш заполняется по мере необходимости, и наименее используемые данные автоматически удаляются.
Для запросов, которые читают хотя бы в каком-то большом объеме данных (миллион строк или более), нежатый кэш автоматически отключается, чтобы сэкономить место для действительно небольших запросов. Это означает, что вы можете всегда оставлять настройку 'use_uncompressed_cache' установленной на 1.
use_variant_as_common_type
Позволяет использовать тип Variant
в качестве результирующего типа для функций if/multiIf/array/map, когда нет общего типа для типов аргументов.
Пример:
use_with_fill_by_sorting_prefix
Колонки, предшествующие колонкам WITH FILL в ORDER BY, формируют префикс сортировки. Строки с разными значениями в префиксе сортировки заполняются независимо.
validate_enum_literals_in_operators
Если включено, проверяются литералы перечислений в операторах, таких как IN
, NOT IN
, ==
, !=
, на соответствие типу перечисления и выбрасывается исключение, если литерал не является допустимым значением перечисления.
validate_mutation_query
Валидация запросов мутации перед их принятием. Мутации выполняются в фоновом режиме, и выполнение недействительного запроса приведет к зависанию мутаций, требуя ручного вмешательства.
Изменяйте эту настройку только в случае возникновения несовместимой ошибки.
validate_polygons
Включает или отключает выбрасывание исключения в функции pointInPolygon, если многоугольник самопересекается или самотангентен.
Возможные значения:
- 0 — Выброс исключения отключен.
pointInPolygon
принимает недействительные многоугольники и возвращает возможно неправильные результаты для них. - 1 — Выброс исключения включен.
vector_search_filter_strategy
Если запрос векторного поиска содержит условие WHERE, эта настройка определяет, будет ли оно оцениваться сначала (предварительная фильтрация) ИЛИ будет ли сначала проверяться индекс векторного сходства (постфильтрация). Возможные значения:
- 'auto' - Постфильтрация (точная семантика может измениться в будущем).
- 'postfilter' - Использовать индекс векторного сходства для определения ближайших соседей, затем применить другие фильтры.
- 'prefilter' - Сначала оценить другие фильтры, затем выполнить поиск методом грубой силы для определения соседей.
vector_search_postfilter_multiplier
Умножает извлеченные ближайшие соседи из индекса векторного сходства на это число перед выполнением постфильтрации по другим предикатам.
wait_changes_become_visible_after_commit_mode
Ожидание, когда подтвержденные изменения станут фактически видимыми в последнем снимке.
wait_for_async_insert
Если true, ожидать обработки асинхронной вставки.
wait_for_async_insert_timeout
Тайм-аут ожидания обработки асинхронной вставки.
wait_for_window_view_fire_signal_timeout
Тайм-аут ожидания сигнала срабатывания окна представления в обработке временных событий.
window_view_clean_interval
Интервал очистки окна представления в секундах для освобождения устаревших данных.
window_view_heartbeat_interval
Интервал опроса в секундах для указания того, что запрос на наблюдение активен.
workload
Имя рабочей нагрузки, используемое для доступа к ресурсам.
write_through_distributed_cache
Имеет эффект только в ClickHouse Cloud. Позволяет запись в распределенный кэш (запись в s3 также будет выполнена посредством распределенного кэша).
zstd_window_log_max
Позволяет выбрать максимальный размер окна журнала ZSTD (не будет использован для семейства MergeTree).