ClickHouse/docs/ru/operations/server-configuration-parameters/settings.md
2023-11-29 16:03:07 +01:00

117 KiB
Raw Blame History

slug sidebar_position sidebar_label
/ru/operations/server-configuration-parameters/settings 57 Конфигурационные параметры сервера

Конфигурационные параметры сервера

builtin_dictionaries_reload_interval

Интервал (в секундах) перезагрузки встроенных словарей.

ClickHouse перезагружает встроенные словари с заданным интервалом. Это позволяет править словари «на лету» без перезапуска сервера.

Значение по умолчанию - 3600.

Пример

<builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>

compression

Настройки компрессии данных.

:::danger Внимание Лучше не использовать, если вы только начали работать с ClickHouse. :::

Общий вид конфигурации:

<compression>
    <case>
      <min_part_size>...</min_part_size>
      <min_part_size_ratio>...</min_part_size_ratio>
      <method>...</method>
      <level>...</level>
    </case>
    ...
</compression>

Поля блока <case>:

  • min_part_size - Минимальный размер части таблицы.
  • min_part_size_ratio - Отношение размера минимальной части таблицы к полному размеру таблицы.
  • method - Метод сжатия. Возможные значения: lz4, lz4hc, zstd,deflate_qpl.
  • level Уровень сжатия. См. Кодеки.

Можно сконфигурировать несколько разделов <case>.

ClickHouse проверяет условия для min_part_size и min_part_size_ratio и выполнит те блоки case, для которых условия совпали.

  • Если кусок данных совпадает с условиями, ClickHouse использует указанные метод сжатия.
  • Если кусок данных совпадает с несколькими блоками case, ClickHouse использует первый совпавший блок условий.

Если ни один <case> не подходит, то ClickHouse применит алгоритм сжатия lz4.

Пример

<compression incl="clickhouse_compression">
    <case>
        <min_part_size>10000000000</min_part_size>
        <min_part_size_ratio>0.01</min_part_size_ratio>
        <method>zstd</method>
        <level>1</level>
    </case>
</compression>

encryption

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

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

Пример

Загрузка из файла конфигурации:

<encryption_codecs>
    <aes_128_gcm_siv>
        <key>12345567812345678</key>
    </aes_128_gcm_siv>
</encryption_codecs>

:::note Примечание Хранение ключей в конфигурационном файле не рекомендовано. Это не безопасно. Вы можете переместить ключи в отдельный файл на секретном диске и сделать symlink к этому конфигурационному файлу в папке config.d/. :::

Загрузка из файла конфигурации, когда ключ представлен в шестнадцатеричной форме:

<encryption_codecs>
    <aes_128_gcm_siv>
        <key_hex>00112233445566778899aabbccddeeff</key_hex>
    </aes_128_gcm_siv>
</encryption_codecs>

Загрузка ключа из переменной окружения:

<encryption_codecs>
    <aes_128_gcm_siv>
        <key_hex from_env="ENVVAR"></key_hex>
    </aes_128_gcm_siv>
</encryption_codecs>

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

Все эти методы могут быть применены для нескольких ключей:

<encryption_codecs>
    <aes_128_gcm_siv>
        <key_hex id="0">00112233445566778899aabbccddeeff</key_hex>
        <key_hex id="1" from_env="ENVVAR"></key_hex>
        <current_key_id>1</current_key_id>
    </aes_128_gcm_siv>
</encryption_codecs>

Параметр current_key_id указывает текущий ключ для шифрования.

Также пользователь может добавить одноразовое случайное число длинной 12 байт (по умолчанию шифрование и дешифровка будут использовать одноразовое число длинной 12 байт, заполненное нулями):

<encryption_codecs>
    <aes_128_gcm_siv>
        <nonce>012345678910</nonce>
    </aes_128_gcm_siv>
</encryption_codecs>

Одноразовое число также может быть представлено в шестнадцатеричной форме:

<encryption_codecs>
    <aes_128_gcm_siv>
        <nonce_hex>abcdefabcdef</nonce_hex>
    </aes_128_gcm_siv>
</encryption_codecs>

Всё вышеперечисленное также применимо для алгоритма aes_256_gcm_siv (но ключ должен быть длиной 32 байта).

custom_settings_prefixes

Список префиксов для пользовательских настроек. Префиксы должны перечисляться через запятую.

Пример

<custom_settings_prefixes>custom_</custom_settings_prefixes>

См. также

core_dump

Задает мягкое ограничение для размера файла дампа памяти.

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

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

Значение по умолчанию: 1073741824 (1 ГБ).

:::info Примечание Жесткое ограничение настраивается с помощью системных инструментов. :::

Пример

<core_dump>
    <size_limit>1073741824</size_limit>
</core_dump>

database_atomic_delay_before_drop_table_sec

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

Значение по умолчанию: 480 (8 минут).

default_database

База данных по умолчанию.

Перечень баз данных можно получить запросом SHOW DATABASES.

Пример

<default_database>default</default_database>

default_profile

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

Профили настроек находятся в файле, указанном в параметре user_config.

Пример

<default_profile>default</default_profile>

default_replica_path

Путь к таблице в ZooKeeper.

Пример

<default_replica_path>/clickhouse/tables/{uuid}/{shard}</default_replica_path>

default_replica_name

Имя реплики в ZooKeeper.

Пример

<default_replica_name>{replica}</default_replica_name>

dictionaries_config

Путь к конфигурации внешних словарей.

Путь:

  • Указывается абсолютным или относительно конфигурационного файла сервера.
  • Может содержать wildcard-ы * и ?.

Смотрите также «Внешние словари».

Пример

<dictionaries_config>*_dictionary.xml</dictionaries_config>

user_defined_executable_functions_config

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

Путь:

  • Указывается абсолютным или относительно конфигурационного файла сервера.
  • Может содержать wildcard-ы * и ?.

Смотрите также “Исполняемые пользовательские функции.”.

Пример

<user_defined_executable_functions_config>*_function.xml</user_defined_executable_functions_config>

dictionaries_lazy_load

Отложенная загрузка словарей.

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

Если false, все словари будут загружаться на старте сервера. Сервер будет ждать на старте окончания загрузки всех словарей перед началом обработки соединений (исключение: если wait_dictionaries_load_at_startup установлена в false - см. ниже).

По умолчанию - true.

Пример

<dictionaries_lazy_load>true</dictionaries_lazy_load>

format_schema_path

Путь к каталогу со схемами для входных данных. Например со схемами для формата CapnProto.

Пример

  <!-- Directory containing schema files for various input formats. -->
  <format_schema_path>format_schemas/</format_schema_path>

graphite

Отправка данных в Graphite.

Настройки:

  • host Сервер Graphite.
  • port Порт сервера Graphite.
  • interval Период отправки в секундах.
  • timeout Таймаут отправки данных в секундах.
  • root_path Префикс для ключей.
  • metrics Отправка данных из таблицы system.metrics.
  • events Отправка дельты данных, накопленной за промежуток времени из таблицы system.events.
  • events_cumulative Отправка суммарных данных из таблицы system.events.
  • asynchronous_metrics Отправка данных из таблицы system.asynchronous_metrics.

Можно определить несколько секций <graphite>, например, для передачи различных данных с различной частотой.

Пример

<graphite>
    <host>localhost</host>
    <port>42000</port>
    <timeout>0.1</timeout>
    <interval>60</interval>
    <root_path>one_min</root_path>
    <metrics>true</metrics>
    <events>true</events>
    <events_cumulative>false</events_cumulative>
    <asynchronous_metrics>true</asynchronous_metrics>
</graphite>

graphite_rollup

Настройка прореживания данных для Graphite.

Подробнее читайте в разделе GraphiteMergeTree.

Пример

<graphite_rollup_example>
    <default>
        <function>max</function>
        <retention>
            <age>0</age>
            <precision>60</precision>
        </retention>
        <retention>
            <age>3600</age>
            <precision>300</precision>
        </retention>
        <retention>
            <age>86400</age>
            <precision>3600</precision>
        </retention>
    </default>
</graphite_rollup_example>

http_port/https_port

Порт для обращений к серверу по протоколу HTTP(s).

Если указан https_port, то требуется конфигурирование openSSL.

Если указан http_port, то настройка openSSL игнорируется, даже если она задана.

Пример

<https_port>9999</https_port>

http_server_default_response

Страница, показываемая по умолчанию, при обращении к HTTP(s) серверу ClickHouse. Значение по умолчанию «Ok.» (с переводом строки на конце).

Пример

Показывает https://tabix.io/ при обращении к http://localhost:http_port.

<http_server_default_response>
  <![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]>
</http_server_default_response>

hsts_max_age

Срок действия HSTS в секундах. Значение по умолчанию 0 (HSTS выключен). Для включения HSTS задайте положительное число. Срок действия HSTS будет равен введенному числу.

Пример

<hsts_max_age>600000</hsts_max_age>

include_from

Путь к файлу с подстановками.

Подробности смотрите в разделе «Конфигурационные файлы».

Пример

<include_from>/etc/metrica.xml</include_from>

interserver_listen_host

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

Примеры:

<interserver_listen_host>::ffff:a00:1</interserver_listen_host>
<interserver_listen_host>10.0.0.1</interserver_listen_host>

interserver_http_port

Порт для обмена между серверами ClickHouse.

Пример

<interserver_http_port>9009</interserver_http_port>

interserver_http_host

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

Если не указано, то определяется аналогично команде hostname -f.

Удобно использовать, чтобы отвязаться от конкретного сетевого интерфейса.

Пример

<interserver_http_host>example.yandex.ru</interserver_http_host>

interserver_https_port

Порт для обмена данными между репликами ClickHouse по протоколу HTTPS.

Пример

<interserver_https_port>9010</interserver_https_port>

interserver_https_host

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

Пример

<interserver_https_host>example.yandex.ru</interserver_https_host>

interserver_http_credentials

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

По умолчанию, если секция interserver_http_credentials не задана в конфигурации, аутентификация при репликации не используется.

:::note Примечание Настройки interserver_http_credentials не относятся к конфигурации учетных данных клиента ClickHouse. ::: :::note Примечание Учетные данные в interserver_http_credentials являются общими для репликации по HTTP и HTTPS. :::

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

  • user — имя пользователя.
  • password — пароль.
  • allow_empty — если true, то другие реплики могут подключаться без аутентификации, даже если учетные данные заданы. Если false, то подключение без аутентификации не допускается. Значение по умолчанию: false.
  • old — секция содержит старые значения user и password, которые используются в процессе изменения учетных данных. Можно указывать несколько секций old.

Изменение учетных данных

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

Чтобы включить аутентификацию, установите interserver_http_credentials.allow_empty в значение true и задайте учетные данные. С такой конфигурацией разрешены подключения как с аутентификацией, так и без нее.

<interserver_http_credentials>
    <user>admin</user>
    <password>111</password>
    <allow_empty>true</allow_empty>
</interserver_http_credentials>

После конфигурации всех реплик установите allow_empty в значение false или удалите эту настройку. Это сделает аутентификацию с новыми учетными данными обязательной.

Чтобы изменить учетные данные, перенесите имя пользователя и пароль в секцию interserver_http_credentials.old и укажите новые значения для user и password. Сервер будет использовать новые учетные данные при подключении к другим репликам и при этом будет разрешать подключения как с новыми, так и со старыми учетными данными.

<interserver_http_credentials>
    <user>admin</user>
    <password>222</password>
    <old>
        <user>admin</user>
        <password>111</password>
    </old>
    <old>
        <user>temp</user>
        <password>000</password>
    </old>
</interserver_http_credentials>

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

keep_alive_timeout

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

Пример

<keep_alive_timeout>10</keep_alive_timeout>

listen_host

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

Примеры:

<listen_host>::1</listen_host>
<listen_host>127.0.0.1</listen_host>

listen_backlog

Бэклог (размер очереди соединений, ожидающих принятия) прослушивающего сокета.

Значение по умолчанию: 4096 (как в linux 5.4+).

Обычно это значение незачем менять по следующим причинам:

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

Так что даже если у вас TcpExtListenOverflows (из nstat) ненулевой и растет для сервера ClickHouse, это не повод увеличивать значение по умолчанию, поскольку:

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

Примеры:

<listen_backlog>4096</listen_backlog>

logger

Настройки логирования.

Ключи:

  • level - Уровень логирования. Допустимые значения: trace, debug, information, warning, error.
  • log - Файл лога. Содержит все записи согласно level.
  • errorlog - Файл лога ошибок.
  • size - Размер файла. Действует для log и errorlog. Как только файл достиг размера size, ClickHouse архивирует и переименовывает его, а на его месте создает новый файл лога.
  • count - Количество заархивированных файлов логов, которые сохраняет ClickHouse.
  • stream_compress Сжимать log и errorlog с помощью алгоритма lz4. Чтобы активировать, узтановите значение 1 или true.

Имена файлов log и errorlog (только имя файла, а не директорий) поддерживают спецификаторы шаблонов даты и времени.

Спецификаторы форматирования С помощью следующих спецификаторов, можно определить шаблон для формирования имени файла. Столбец “Пример” показывает возможные значения на момент времени 2023-07-06 18:32:07.

Спецификатор Описание Пример
%% Литерал % %
%n Символ новой строки
%t Символ горизонтальной табуляции
%Y Год как десятичное число, например, 2017 2023
%y Последние 2 цифры года в виде десятичного числа (диапазон [00,99]) 23
%C Первые 2 цифры года в виде десятичного числа (диапазон [00,99]) 20
%G Год по неделям согласно ISO 8601, то есть год, который содержит указанную неделю. Обычно используется вместе с %V. 2023
%g Последние 2 цифры года по неделям ISO 8601, т.е. года, содержащего указанную неделю (диапазон [00,99]). 23
%b Сокращённое название месяца, например Oct (зависит от локали) Jul
%h Синоним %b Jul
%B Полное название месяца, например, October (зависит от локали) July
%m Месяц в виде десятичного числа (диапазон [01,12]) 07
%U Неделя года в виде десятичного числа (воскресенье - первый день недели) (диапазон [00,53]) 27
%W Неделя года в виде десятичного числа (понедельник - первый день недели) (диапазон [00,53]) 27
%V Неделя года ISO 8601 (диапазон [01,53]) 27
%j День года в виде десятичного числа (диапазон [001,366]) 187
%d День месяца в виде десятичного числа (диапазон [01,31]) Перед одиночной цифрой ставится ноль. 06
%e День месяца в виде десятичного числа (диапазон [1,31]). Перед одиночной цифрой ставится пробел.   6
%a Сокращённое название дня недели, например, Fri (зависит от локали) Thu
%A Полный день недели, например, Friday (зависит от локали) Thursday
%w День недели в виде десятичного числа, где воскресенье равно 0 (диапазон [0-6]) 4
%u День недели в виде десятичного числа, где понедельник равен 1 (формат ISO 8601) (диапазон [1-7]) 4
%H Час в виде десятичного числа, 24-часовой формат (диапазон [00-23]) 18
%I Час в виде десятичного числа, 12-часовой формат (диапазон [01,12]) 06
%M Минуты в виде десятичного числа (диапазон [00,59]) 32
%S Секунды как десятичное число (диапазон [00,60]) 07
%c Стандартная строка даты и времени, например, Sun Oct 17 04:41:13 2010 (зависит от локали) Thu Jul 6 18:32:07 2023
%x Локализованное представление даты (зависит от локали) 07/06/23
%X Локализованное представление времени, например, 18:40:20 или 6:40:20 PM (зависит от локали) 18:32:07
%D Эквивалентно "%m/%d/%y" 07/06/23
%F Эквивалентно "%Y-%m-%d" (формат даты ISO 8601) 2023-07-06
%r Локализованное 12-часовое время (зависит от локали) 06:32:07 PM
%R Эквивалентно "%H:%M" 18:32
%T Эквивалентно "%H:%M:%S" (формат времени ISO 8601) 18:32:07
%p Локализованное обозначение a.m. или p.m. (зависит от локали) PM
%z Смещение от UTC в формате ISO 8601 (например, -0430), или без символов, если информация о часовом поясе недоступна +0800
%Z Зависящее от локали название или аббревиатура часового пояса, если информация о часовом поясе доступна Z AWST

Пример

<logger>
    <level>trace</level>
    <log>/var/log/clickhouse-server/clickhouse-server-%F-%T.log</log>
    <errorlog>/var/log/clickhouse-server/clickhouse-server-%F-%T.err.log</errorlog>
    <size>1000M</size>
    <count>10</count>
</logger>

Также, существует поддержка записи в syslog. Пример настроек:

<logger>
    <use_syslog>1</use_syslog>
    <syslog>
        <address>syslog.remote:10514</address>
        <hostname>myhost.local</hostname>
        <facility>LOG_LOCAL6</facility>
        <format>syslog</format>
    </syslog>
</logger>

Ключи для syslog:

  • use_syslog - обязательная настройка, если требуется запись в syslog
  • address - хост[:порт] демона syslogd. Если не указан, используется локальный
  • hostname - опционально, имя хоста, с которого отсылаются логи
  • facility - категория syslog, записанная в верхнем регистре, с префиксом «LOG_»: (LOG_USER, LOG_DAEMON, LOG_LOCAL3 и прочие). Значения по умолчанию: при указанном address - LOG_USER, иначе - LOG_DAEMON
  • format - формат сообщений. Возможные значения - bsd и syslog

send_crash_reports

Настройки для отправки сообщений о сбоях в команду разработчиков ядра ClickHouse через Sentry. Включение этих настроек, особенно в pre-production среде, может дать очень ценную информацию и поможет развитию ClickHouse.

Сервер на котором включены данные настройки должен иметь доступ в Интернет по протоколу IPv4 (на момент написания документации IPv6 не поддерживается публичным облаком Sentry) для правильной работы данной функциональности.

Ключи:

  • enabled Булевый флаг чтобы включить функциональность, по умолчанию false. Установите true чтобы разрешить отправку отчетов о сбоях.
  • endpoint Вы можете переопределить URL на который будут отсылаться отчеты об ошибках и использовать собственную инсталляцию Sentry. Используйте URL синтаксис Sentry DSN.
  • anonymize - Запретить отсылку имени хоста сервера в отчете о сбое.
  • http_proxy - Настройка HTTP proxy для отсылки отчетов о сбоях.
  • debug - Настроить клиентскую библиотеку Sentry в debug режим.
  • tmp_path - Путь в файловой системе для временного хранения состояния отчетов о сбоях перед отправкой на сервер Sentry.
  • environment - Произвольное название среды, в которой запущен сервер ClickHouse, которое будет упомянуто в каждом отчете от сбое. По умолчанию имеет значение test или prod в зависимости от версии ClickHouse.

Рекомендованные настройки

<send_crash_reports>
    <enabled>true</enabled>
</send_crash_reports>

macros

Подстановки параметров реплицируемых таблиц.

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

Подробнее смотрите в разделе Создание реплицируемых таблиц.

Пример

<macros incl="macros" optional="true" />

mark_cache_size

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

Кэш общий для сервера, память выделяется по мере необходимости.

Пример

<mark_cache_size>5368709120</mark_cache_size>

max_server_memory_usage

Ограничивает объём оперативной памяти, используемой сервером ClickHouse. Настройка может быть задана только для профиля default.

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

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

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

Дополнительная информация

Значение по умолчанию для max_server_memory_usage рассчитывается как memory_amount * max_server_memory_usage_to_ram_ratio.

См. также

max_server_memory_usage_to_ram_ratio

Определяет долю оперативной памяти, доступную для использования сервером Clickhouse. Если сервер попытается использовать больше, предоставляемый ему объём памяти будет ограничен до расчётного значения.

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

  • Положительное число с плавающей запятой.
  • 0 — сервер Clickhouse может использовать всю оперативную память.

Значение по умолчанию: 0.9.

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

На серверах с небольшим объёмом оперативной памяти и файла подкачки может потребоваться установить настройку max_server_memory_usage_to_ram_ratio в значение, большее 1.

Пример

<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>

См. также

max_concurrent_queries

Определяет максимальное количество одновременно обрабатываемых запросов, связанных с таблицей семейства MergeTree. Запросы также могут быть ограничены настройками: max_concurrent_insert_queries, max_concurrent_select_queries, max_concurrent_queries_for_user, max_concurrent_queries_for_all_users, min_marks_to_honor_max_concurrent_queries.

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

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

  • Положительное целое число.
  • 0 — нет лимита.

Значение по умолчанию: 100.

Пример

<max_concurrent_queries>100</max_concurrent_queries>

max_concurrent_insert_queries

Определяет максимальное количество одновременных INSERT запросов.

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

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

  • Положительное целое число.
  • 0 — нет лимита.

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

Example

<max_concurrent_insert_queries>100</max_concurrent_insert_queries>

max_concurrent_select_queries

Определяет максимальное количество одновременных SELECT запросов.

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

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

  • Положительное целое число.
  • 0 — нет лимита.

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

Example

<max_concurrent_select_queries>100</max_concurrent_select_queries>

max_concurrent_queries_for_user

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

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

  • Положительное целое число.
  • 0 — нет лимита.

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

Пример

<max_concurrent_queries_for_user>5</max_concurrent_queries_for_user>

max_concurrent_queries_for_all_users

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

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

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

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

  • Положительное целое число.
  • 0 — нет лимита.

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

Пример

<max_concurrent_queries_for_all_users>99</max_concurrent_queries_for_all_users>

Смотрите также

min_marks_to_honor_max_concurrent_queries

Определяет минимальное количество засечек, считываемых запросом для применения настройки max_concurrent_queries.

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

  • Положительное целое число.
  • 0 — выключена.

Пример

<min_marks_to_honor_max_concurrent_queries>10</min_marks_to_honor_max_concurrent_queries>

max_connections

Максимальное количество входящих соединений.

Пример

<max_connections>4096</max_connections>

max_open_files

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

По умолчанию - maximum.

Рекомендуется использовать в Mac OS X, поскольку функция getrlimit() возвращает некорректное значение.

Пример

<max_open_files>262144</max_open_files>

max_table_size_to_drop

Ограничение на удаление таблиц.

Если размер таблицы семейства MergeTree превышает max_table_size_to_drop (в байтах), то ее нельзя удалить запросом DROP.

Если таблицу все же необходимо удалить, не перезапуская при этом сервер ClickHouse, то необходимо создать файл <clickhouse-path>/flags/force_drop_table и выполнить запрос DROP.

Значение по умолчанию - 50GB.

Значение 0 означает, что можно удалять все таблицы без ограничений.

Пример

<max_table_size_to_drop>0</max_table_size_to_drop>

max_thread_pool_size

ClickHouse использует потоки из глобального пула потоков для обработки запросов. Если в пуле нет свободных потоков, то в нем создается еще один. Параметр max_thread_pool_size ограничивает максимальное количество потоков в пуле.

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

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

Значение по умолчанию: 10000.

Пример

<max_thread_pool_size>12000</max_thread_pool_size>

max_thread_pool_free_size

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

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

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

Значение по умолчанию: 1000.

Пример

<max_thread_pool_free_size>1200</max_thread_pool_free_size>

thread_pool_queue_size

Максимальное количество задач, которые запланированы для выполнения в глобальном пуле потоков. При увеличении этого параметра возрастает использование памяти. Рекомендуется, чтобы значение этого параметра совпадало со значением параметра max_thread_pool_size.

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

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

Значение по умолчанию: 10000.

Пример

<thread_pool_queue_size>12000</thread_pool_queue_size>

background_buffer_flush_schedule_pool_size

Задает количество потоков для выполнения фонового сброса данных в таблицах с движком Buffer.

Допустимые значения:

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

Значение по умолчанию: 16.

background_move_pool_size

Задает количество потоков для фоновых перемещений кусков между дисками. Работает для таблиц с движком MergeTree.

Допустимые значения:

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

Значение по умолчанию: 8.

background_schedule_pool_size

Задает количество потоков для выполнения фоновых задач. Работает для реплицируемых таблиц, стримов в Kafka и обновления IP адресов у записей во внутреннем DNS кеше.

Допустимые значения:

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

Значение по умолчанию: 512.

background_fetches_pool_size

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

Допустимые значения:

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

Значение по умолчанию: 16.

background_distributed_schedule_pool_size

Задает количество потоков для выполнения фоновых задач. Работает для таблиц с движком Distributed.

Допустимые значения:

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

Значение по умолчанию: 16.

background_message_broker_schedule_pool_size

Задает количество потоков для фонового потокового вывода сообщений.

Допустимые значения:

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

Значение по умолчанию: 16.

Смотрите также

merge_tree

Тонкая настройка таблиц семейства MergeTree.

Подробнее смотрите в заголовочном файле MergeTreeSettings.h.

Пример

<merge_tree>
    <max_suspicious_broken_parts>5</max_suspicious_broken_parts>
</merge_tree>

metric_log

Эта настройка включена по умолчанию. Если это не так, вы можете включить ее сами.

Включение

Чтобы вручную включить сбор истории метрик в таблице system.metric_log, создайте /etc/clickhouse-server/config.d/metric_log.xml следующего содержания:

<clickhouse>
    <metric_log>
        <database>system</database>
        <table>metric_log</table>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
        <collect_interval_milliseconds>1000</collect_interval_milliseconds>
        <max_size_rows>1048576</max_size_rows>
        <reserved_size_rows>8192</reserved_size_rows>
        <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
        <flush_on_crash>false</flush_on_crash>
    </metric_log>
</clickhouse>

Выключение

Чтобы отключить настройку metric_log , создайте файл /etc/clickhouse-server/config.d/disable_metric_log.xml следующего содержания:

<clickhouse>
<metric_log remove="1" />
</clickhouse>

replicated_merge_tree

Тонкая настройка таблиц в ReplicatedMergeTree.

Эта настройка имеет более высокий приоритет.

Подробнее смотрите в заголовочном файле MergeTreeSettings.h.

Пример

<replicated_merge_tree>
    <max_suspicious_broken_parts>5</max_suspicious_broken_parts>
</replicated_merge_tree>

openSSL

Настройки клиента/сервера SSL.

Поддержку SSL обеспечивает библиотека libpoco. Описание интерфейса находится в файле SSLManager.h

Ключи настроек сервера/клиента:

  • privateKeyFile - Путь к файлу с секретным ключом сертификата в формате PEM. Файл может содержать ключ и сертификат одновременно.
  • certificateFile - Путь к файлу сертификата клиента/сервера в формате PEM. Можно не указывать, если privateKeyFile содержит сертификат.
  • caConfig - Путь к файлу или каталогу, которые содержат доверенные корневые сертификаты.
  • verificationMode - Способ проверки сертификатов узла. Подробности находятся в описании класса Context. Допустимые значения: none, relaxed, strict, once.
  • verificationDepth - Максимальная длина верификационной цепи. Верификация завершится ошибкой, если длина цепи сертификатов превысит установленное значение.
  • loadDefaultCAFile - Признак того, что будут использоваться встроенные CA-сертификаты для OpenSSL. Допустимые значения: true, false. |
  • cipherList - Поддерживаемые OpenSSL-шифры. Например, ALL:!ADH:!LOW:!EXP:!MD5:!3DES:@STRENGTH.
  • cacheSessions - Включение/выключение кеширования сессии. Использовать обязательно вместе с sessionIdContext. Допустимые значения: true, false.
  • sessionIdContext - Уникальный набор произвольных символов, которые сервер добавляет к каждому сгенерированному идентификатору. Длина строки не должна превышать SSL_MAX_SSL_SESSION_ID_LENGTH. Рекомендуется к использованию всегда, поскольку позволяет избежать проблем как в случае, если сервер кеширует сессию, так и если клиент затребовал кеширование. По умолчанию ${application.name}.
  • sessionCacheSize - Максимальное количество сессий, которые кэширует сервер. По умолчанию - 1024*20. 0 - неограниченное количество сессий.
  • sessionTimeout - Время кеширования сессии на сервере.
  • extendedVerification - Автоматическая расширенная проверка сертификатов после завершении сессии. Допустимые значения: true, false.
  • requireTLSv1 - Требование соединения TLSv1. Допустимые значения: true, false.
  • requireTLSv1_1 - Требование соединения TLSv1.1. Допустимые значения: true, false.
  • requireTLSv1_2 - Требование соединения TLSv1.2. Допустимые значения: true, false.
  • fips - Активация режима OpenSSL FIPS. Поддерживается, если версия OpenSSL, с которой собрана библиотека поддерживает fips.
  • privateKeyPassphraseHandler - Класс (подкласс PrivateKeyPassphraseHandler)запрашивающий кодовую фразу доступа к секретному ключу. Например, <privateKeyPassphraseHandler>, <name>KeyFileHandler</name>, <options><password>test</password></options>, </privateKeyPassphraseHandler>.
  • invalidCertificateHandler - Класс (подкласс CertificateHandler) для подтверждения не валидных сертификатов. Например, <invalidCertificateHandler> <name>RejectCertificateHandler</name> </invalidCertificateHandler>.
  • disableProtocols - Запрещенные к использованию протоколы.
  • preferServerCiphers - Предпочтение серверных шифров на клиенте.

Пример настройки:

<openSSL>
    <server>
        <!-- openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt -->
        <certificateFile>/etc/clickhouse-server/server.crt</certificateFile>
        <privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile>
        <!-- openssl dhparam -out /etc/clickhouse-server/dhparam.pem 4096 -->
        <dhParamsFile>/etc/clickhouse-server/dhparam.pem</dhParamsFile>
        <verificationMode>none</verificationMode>
        <loadDefaultCAFile>true</loadDefaultCAFile>
        <cacheSessions>true</cacheSessions>
        <disableProtocols>sslv2,sslv3</disableProtocols>
        <preferServerCiphers>true</preferServerCiphers>
    </server>
    <client>
        <loadDefaultCAFile>true</loadDefaultCAFile>
        <cacheSessions>true</cacheSessions>
        <disableProtocols>sslv2,sslv3</disableProtocols>
        <preferServerCiphers>true</preferServerCiphers>
        <!-- Use for self-signed: <verificationMode>none</verificationMode> -->
        <invalidCertificateHandler>
            <!-- Use for self-signed: <name>AcceptCertificateHandler</name> -->
            <name>RejectCertificateHandler</name>
        </invalidCertificateHandler>
    </client>
</openSSL>

part_log

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

Запросы логируются не в отдельный файл, а в таблицу system.part_log. Вы можете изменить название этой таблицы в параметре table (см. ниже).

При настройке логирования используются следующие параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false. Пример
<part_log>
    <database>system</database>
    <table>part_log</table>
    <partition_by>toMonday(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
</part_log>

path

Путь к каталогу с данными.

:::danger Обратите внимание Завершающий слеш обязателен. :::

Пример

<path>/var/lib/clickhouse/</path>

prometheus

Опубликовать данные о метриках, для сбора с помощью системы мониторинга Prometheus.

Настройки:

  • endpoint путь по которому будет осуществляться экспорт данных метрик по HTTP протоколу для сбора с помощью prometheus. Должен начинаться с /.
  • port порт по которому будет доступен endpoint для сбора метрик.
  • metrics флаг для экспорта текущих значений метрик из таблицы system.metrics.
  • events флаг для экспорта текущих значений метрик из таблицы system.events.
  • asynchronous_metrics флаг для экспорта текущих значений значения метрик из таблицы system.asynchronous_metrics.
  • errors - флаг для экспорта количества ошибок (по кодам) случившихся с момента последнего рестарта сервера. Эта информация может быть получена из таблицы system.errors

Пример

 <prometheus>
        <endpoint>/metrics</endpoint>
        <port>8001</port>
        <metrics>true</metrics>
        <events>true</events>
        <asynchronous_metrics>true</asynchronous_metrics>
        <errors>true</errors>
    </prometheus>

query_log

Настройка логирования запросов, принятых с настройкой log_queries=1.

Запросы логируются не в отдельный файл, а в системную таблицу system.query_log. Вы можете изменить название этой таблицы в параметре table (см. ниже).

При настройке логирования используются следующие параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.

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

Пример

<query_log>
    <database>system</database>
    <table>query_log</table>
    <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 30 day</engine>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
</query_log>

query_thread_log

Настройка логирования потоков выполнения запросов, принятых с настройкой log_query_threads=1.

Запросы логируются не в отдельный файл, а в системную таблицу system.query_thread_log. Вы можете изменить название этой таблицы в параметре table (см. ниже).

При настройке логирования используются следующие параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.

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

Пример

<query_thread_log>
    <database>system</database>
    <table>query_thread_log</table>
    <partition_by>toMonday(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
</query_thread_log>

query_views_log

Настройки логирования информации о зависимых представлениях (materialized, live и т.п.) в запросах принятых с настройкой log_query_views=1.

Запросы логируются в таблице system.query_views_log. Вы можете изменить название этой таблицы в параметре table (см. ниже).

При настройке логирования используются следующие параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.

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

Пример

<query_views_log>
    <database>system</database>
    <table>query_views_log</table>
    <partition_by>toYYYYMM(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
</query_views_log>

text_log

Настройка логирования текстовых сообщений в системную таблицу text_log.

Параметры:

  • level — Максимальный уровень сообщения (по умолчанию Trace) которое будет сохранено в таблице.
  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.

Пример

<clickhouse>
    <text_log>
        <level>notice</level>
        <database>system</database>
        <table>text_log</table>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
        <max_size_rows>1048576</max_size_rows>
        <reserved_size_rows>8192</reserved_size_rows>
        <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
        <flush_on_crash>false</flush_on_crash>
        <!-- <partition_by>event_date</partition_by> -->
        <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 30 day</engine>
    </text_log>
</clickhouse>

trace_log

Настройки для trace_log system table operation.

Параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.

По умолчанию файл настроек сервера config.xml содержит следующие настройки:

<trace_log>
    <database>system</database>
    <table>trace_log</table>
    <partition_by>toYYYYMM(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
</trace_log>

asynchronous_insert_log

Настройки для asynchronous_insert_log Система для логирования ассинхронных вставок.

Параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1048576.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 8192.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.

Пример

<clickhouse>
    <asynchronous_insert_log>
        <database>system</database>
        <table>asynchronous_insert_log</table>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
        <partition_by>toYYYYMM(event_date)</partition_by>
        <max_size_rows>1048576</max_size_rows>
        <reserved_size_rows>8192</reserved_size_rows>
        <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
        <!-- <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 30 day</engine> -->
    </asynchronous_insert_log>
</clickhouse>

crash_log

Настройки для таблицы crash_log.

Параметры:

  • database — имя базы данных;
  • table — имя таблицы;
  • partition_by — устанавливает произвольный ключ партиционирования. Нельзя использовать если используется engine
  • engine - устанавливает настройки MergeTree Engine для системной таблицы. Нельзя использовать если используется partition_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1024.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 1024.
  • buffer_size_bytes_flush_threshold количество линий в логе при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: true.

Пример

<crash_log>
    <database>system</database>
    <table>crash_log</table>
    <partition_by>toYYYYMM(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1024</max_size_rows>
    <reserved_size_rows>1024</reserved_size_rows>
    <buffer_size_rows_flush_threshold>512</buffer_size_rows_flush_threshold>
    <flush_on_crash>true</flush_on_crash>
</crash_log>

backup_log

Настройки для системной таблицы backup_log, предназначенной для логирования операций BACKUP и RESTORE.

Параметры:

  • database — имя базы данных.
  • table — имя таблицы.
  • partition_byпроизвольный ключ партиционирования. Нельзя использовать одновременно с engine.
  • order_by - произвольный ключ сортировки. Нельзя использовать одновременно с engine.
  • engine - настройки MergeTree Engine. Нельзя использовать с partition_by или order_by.
  • flush_interval_milliseconds — период сброса данных из буфера в памяти в таблицу.
  • max_size_rows максимальный размер в строках для буфера с логами. Когда буфер будет заполнен полностью, сбрасывает логи на диск. Значение по умолчанию: 1024.
  • reserved_size_rows преаллоцированный размер в строках для буфера с логами. Значение по умолчанию: 1024.
  • buffer_size_rows_flush_threshold количество строк в логе, при достижении которого логи начнут скидываться на диск в неблокирующем режиме. Значение по умолчанию: max_size_rows / 2.
  • flush_on_crash - должны ли логи быть сброшены на диск в случае неожиданной остановки программы. Значение по умолчанию: false.
  • storage_policy название политики хранения (необязательный параметр).
  • settings - дополнительные настройки MergeTree Engine (необязательный параметр).

Пример

<clickhouse>
    <backup_log>
        <database>system</database>
        <table>backup_log</table>
        <flush_interval_milliseconds>1000</flush_interval_milliseconds>
        <partition_by>toYYYYMM(event_date)</partition_by>
        <max_size_rows>1048576</max_size_rows>
        <reserved_size_rows>8192</reserved_size_rows>
        <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
        <flush_on_crash>false</flush_on_crash>
        <!-- <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 30 day</engine> -->
    </backup_log>
</clickhouse>

query_masking_rules

Правила, основанные на регулярных выражениях, которые будут применены для всех запросов, а также для всех сообщений перед сохранением их в лог на сервере, system.query_log, system.text_log, system.processes таблицы, а также в логах, отсылаемых клиенту. Это позволяет предотвратить утечку конфиденциальных данных из SQL запросов (такие как имена, электронные письма, личные идентификаторы или номера кредитных карт) в логи.

Пример

<query_masking_rules>
    <rule>
        <name>hide SSN</name>
        <regexp>(^|\D)\d{3}-\d{2}-\d{4}($|\D)</regexp>
        <replace>000-00-0000</replace>
    </rule>
</query_masking_rules>

Параметры конфигурации:

  • name - имя правила (необязательно)
  • regexp - совместимое с RE2 регулярное выражение (обязательное)
  • replace - строка замены для конфиденциальных данных (опционально, по умолчанию - шесть звездочек)

Правила маскировки применяются ко всему запросу (для предотвращения утечки конфиденциальных данных из неправильно оформленных / не интерпретируемых запросов).

system.events таблица содержит счетчик QueryMaskingRulesMatch который считает общее кол-во совпадений правил маскировки.

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

remote_servers

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

Пример

<remote_servers incl="clickhouse_remote_servers" />

Значение атрибута incl смотрите в разделе «Конфигурационные файлы».

Смотрите также

timezone

Временная зона сервера.

Указывается идентификатором IANA в виде часового пояса UTC или географического положения (например, Africa/Abidjan).

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

Пример

<timezone>Europe/Moscow</timezone>

См. также

tcp_port

Порт для взаимодействия с клиентами по протоколу TCP.

Пример

<tcp_port>9000</tcp_port>

tcp_port_secure

TCP порт для защищённого обмена данными с клиентами. Используйте с настройкой OpenSSL.

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

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

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

<tcp_port_secure>9440</tcp_port_secure>

mysql_port

Порт для взаимодействия с клиентами по протоколу MySQL.

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

Положительное целое.

Пример

<mysql_port>9004</mysql_port>

tmp_path

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

:::danger Обратите внимание Завершающий слеш обязателен. :::

Пример

<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>

tmp_policy

Политика из storage_configuration для хранения временных файлов.

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

:::note Примечание

  • move_factor игнорируется.
  • keep_free_space_bytes игнорируется.
  • max_data_part_size_bytes игнорируется.
  • В данной политике должен быть ровно один том, содержащий только локальный диски. :::

uncompressed_cache_size

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

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

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

Пример

<uncompressed_cache_size>8589934592</uncompressed_cache_size>

user_files_path

Каталог с пользовательскими файлами. Используется в табличных функциях file() и fileCluster().

Пример

<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>

user_scripts_path

Каталог с файлами пользовательских скриптов. Используется для исполняемых пользовательских функций Executable User Defined Functions.

Пример

<user_scripts_path>/var/lib/clickhouse/user_scripts/</user_scripts_path>

user_defined_path

Каталог с определенными пользователем файлами. Используется для пользовательских SQL функций SQL User Defined Functions.

Example

<user_defined_path>/var/lib/clickhouse/user_defined/</user_defined_path>

users_config

Путь к файлу, который содержит:

  • Конфигурации пользователей.
  • Права доступа.
  • Профили настроек.
  • Настройки квот.

Пример

<users_config>users.xml</users_config>

wait_dictionaries_load_at_startup

Эта настройка позволяет указать поведение если dictionaries_lazy_load установлено в false. (Если dictionaries_lazy_load установлено в true, то эта настройка ни на что не влияет.)

Если wait_dictionaries_load_at_startup установлено в false, то сервер начнет загрузку всех словарей на старте и будет обрабатывать соединения, не дожидаясь окончания загрузки словарей. Когда словарь первый раз используется в запросе, запрос будет ждать окончания загрузки этого словаря, если он еще не загрузился. Установка wait_dictionaries_load_at_startup в false может помочь ClickHouse стартовать быстрее, однако некоторые запросы могут выполняться медленее (потому что они будут ждать окончания загрузки используемых в них словарей).

Если wait_dictionaries_load_at_startup установлено в true, то сервер будет ждать окончания загрузки всех словарей на старте до начала обработки соединений.

По умолчанию - true.

Пример

<wait_dictionaries_load_at_startup>true</wait_dictionaries_load_at_startup>

zookeeper

Содержит параметры, позволяющие ClickHouse взаимодействовать с кластером ZooKeeper.

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

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

  • node — адрес ноды (сервера) ZooKeeper. Можно сконфигурировать несколько нод.

    Например:

    <node index="1">
        <host>example_host</host>
        <port>2181</port>
    </node>
  Атрибут `index` задает порядок опроса нод при попытках подключиться к кластеру ZooKeeper.
  • session_timeout_ms — максимальный таймаут клиентской сессии в миллисекундах.
  • operation_timeout_ms — максимальный таймаут для одной операции в миллисекундах.
  • rootznode, который используется как корневой для всех znode, которые использует сервер ClickHouse. Необязательный.
  • identity — пользователь и пароль, которые может потребовать ZooKeeper для доступа к запрошенным znode. Необязательный.

Пример конфигурации

<zookeeper>
    <node>
        <host>example1</host>
        <port>2181</port>
    </node>
    <node>
        <host>example2</host>
        <port>2181</port>
    </node>
    <session_timeout_ms>30000</session_timeout_ms>
    <operation_timeout_ms>10000</operation_timeout_ms>
    <!-- Optional. Chroot suffix. Should exist. -->
    <root>/path/to/zookeeper/node</root>
    <!-- Optional. Zookeeper digest ACL string. -->
    <identity>user:password</identity>
</zookeeper>

Смотрите также

use_minimalistic_part_header_in_zookeeper

Способ хранения заголовков кусков данных в ZooKeeper.

Параметр применяется только к семейству таблиц MergeTree. Его можно установить:

  • Глобально в разделе merge_tree файла config.xml.

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

  • Для каждой отдельной таблицы.

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

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

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

Если use_minimalistic_part_header_in_zookeeper = 1, то реплицированные таблицы хранят заголовки кусков данных в компактном виде, используя только одну znode. Если таблица содержит много столбцов, этот метод хранения значительно уменьшает объём данных, хранящихся в Zookeeper.

:::note Внимание После того как вы установили use_minimalistic_part_header_in_zookeeper = 1, невозможно откатить ClickHouse до версии, которая не поддерживает этот параметр. Будьте осторожны при обновлении ClickHouse на серверах в кластере. Не обновляйте все серверы сразу. Безопаснее проверять новые версии ClickHouse в тестовой среде или только на некоторых серверах кластера.

Заголовки частей данных, ранее сохранённые с этим параметром, не могут быть восстановлены в их предыдущем (некомпактном) представлении. ::: Значение по умолчанию: 0.

disable_internal_dns_cache

Отключает внутренний кеш DNS записей. Используется при эксплуатации ClickHouse в системах с часто меняющейся инфраструктурой, таких как Kubernetes.

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

dns_cache_update_period

Период обновления IP адресов у записей во внутреннем DNS кеше ClickHouse (в секундах). Обновление выполняется асинхронно, отдельным системным потоком.

Значение по умолчанию: 15.

Смотрите также

distributed_ddl

Управление запуском распределенных ddl запросов (CREATE, DROP, ALTER, RENAME) в кластере. Работает только если разрешена работа с ZooKeeper.

Пример

<distributed_ddl>
    <!-- Путь в ZooKeeper для очереди содержащей DDL запросы -->
    <path>/clickhouse/task_queue/ddl</path>

    <!-- Настройки из этого профиля будут использованы для запуска DDL запросов -->
    <profile>default</profile>

    <!-- Контроль того как много ON CLUSTER запросов могут исполняться одновременно. -->
    <pool_size>1</pool_size>

    <!--
         Настройки очистки (активные задачи в очереди не будут удаляться)
    -->

    <!-- Время TTL для задач в секундах (по умолчанию 1 week) -->
    <task_max_lifetime>604800</task_max_lifetime>

    <!-- Как часто будет запускаться очистка данных  (в секундах) -->
    <cleanup_delay_period>60</cleanup_delay_period>

    <!-- Как много задач может быть в очереди -->
    <max_tasks_in_queue>1000</max_tasks_in_queue>
</distributed_ddl>

access_control_path

Путь к каталогу, где сервер ClickHouse хранит конфигурации пользователей и ролей, созданные командами SQL.

Значение по умолчанию: /var/lib/clickhouse/access/.

Смотрите также

user_directories

Секция конфигурационного файла,которая содержит настройки:

  • Путь к конфигурационному файлу с предустановленными пользователями.
  • Путь к файлу, в котором содержатся пользователи, созданные при помощи SQL команд.
  • Путь к узлу ZooKeeper, где хранятся и реплицируются пользователи, созданные с помощью команд SQL (экспериментальная функциональность).

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

Секция user_directories может содержать любое количество элементов, порядок расположения элементов обозначает их приоритет (чем выше элемент, тем выше приоритет).

Примеры

<user_directories>
    <users_xml>
        <path>/etc/clickhouse-server/users.xml</path>
    </users_xml>
    <local_directory>
        <path>/var/lib/clickhouse/access/</path>
    </local_directory>
</user_directories>

Пользователи, роли, политики доступа к строкам, квоты и профили могут храниться в ZooKeeper:

<user_directories>
    <users_xml>
        <path>/etc/clickhouse-server/users.xml</path>
    </users_xml>
    <replicated>
        <zookeeper_path>/clickhouse/access/</zookeeper_path>
    </replicated>
</user_directories>

Также вы можете добавить секции memory — означает хранение информации только в памяти, без записи на диск, и ldap — означает хранения информации на LDAP-сервере.

Чтобы добавить LDAP-сервер в качестве удаленного каталога пользователей, которые не определены локально, определите один раздел ldap со следующими параметрами:

  • server — имя одного из LDAP-серверов, определенных в секции ldap_servers конфигурационного файла. Этот параметр является необязательным и может быть пустым.
  • roles — раздел со списком локально определенных ролей, которые будут назначены каждому пользователю, полученному с LDAP-сервера. Если роли не заданы, пользователь не сможет выполнять никаких действий после аутентификации. Если какая-либо из перечисленных ролей не определена локально во время проверки подлинности, попытка проверки подлинности завершится неудачей, как если бы предоставленный пароль был неверным.

Пример

<ldap>
    <server>my_ldap_server</server>
        <roles>
            <my_local_role1 />
            <my_local_role2 />
        </roles>
</ldap>

total_memory_profiler_step

Задает размер памяти (в байтах) для трассировки стека на каждом шаге выделения максимума памяти. Данные хранятся в системной таблице system.trace_log с query_id, равным пустой строке.

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

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

Значение по умолчанию: 4194304.

total_memory_tracker_sample_probability

Позволяет собирать случайные выделения и освобождения памяти и записывать их в системную таблицу system.trace_log с trace_type, равным MemorySample, с указанной вероятностью. Вероятность касается каждого выделения или освобождения памяти, независимо от размера выделения. Обратите внимание, что выборка происходит только тогда, когда объем неотслеживаемой памяти превышает лимит неотслеживаемой памяти (значение по умолчанию: 4 MiB). Значение настройки может быть уменьшено, если значение настройки total_memory_profiler_step уменьшено. Вы можете установить значение настройки total_memory_profiler_step, равным 1, для особой детализованной выборки.

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

  • Положительное целое число.
  • 0 — запись случайных выделений и освобождений памяти в системную таблицу system.trace_log отключена.

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

mmap_cache_size

Задает размер кеша (в байтах) для сопоставленных файлов. Эта настройка позволяет избежать частых открытых/mmap/munmap/закрытых вызовов (очень дорогостоящие из-за последующих ошибок страниц) и повторного использования сопоставления из нескольких потоков и запросов. Значение настройки — это количество сопоставленных областей (обычно равно количеству сопоставленных файлов). Объем данных в сопоставленных файлах можно отслеживать в системных таблицах system.metrics, system.metric_log по метрикам MMappedFiles и MMappedFileBytes, в таблицах system.asynchronous_metrics, system.asynchronous_metrics_log по метрике MMapCacheCells, а также в system.events, system.processes, system.query_log, system.query_thread_log, system.query_views_log по событиям CreatedReadBufferMMap, CreatedReadBufferMMapFailed, MMappedFileCacheHits, MMappedFileCacheMisses. Обратите внимание, что объем данных в сопоставленных файлах не потребляет память напрямую и не учитывается в запросе или использовании памяти сервера, поскольку эта память может быть удалена аналогично кешу страниц ОС. Кеш удаляется (т.е. файлы закрываются) автоматически при удалении старых кусков в таблицах семейства MergeTree, также его можно удалить вручную с помощью запроса SYSTEM DROP MMAP CACHE.

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

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

Значение по умолчанию: 1000.

compiled_expression_cache_size

Задает размер кеша (в байтах) для скомпилированных выражений.

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

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

Значение по умолчанию: 134217728.

compiled_expression_cache_elements_size

Задает размер кеша (в элементах) для скомпилированных выражений.

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

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

Значение по умолчанию: 10000.

validate_tcp_client_information

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

Если true, то на неверные данные от клиента будет выброшено исключение.

Если false, то данные не будут валидироваться. Сервер будет работать с клиентами всех версий.

Значение по умолчанию: false.

Пример

<validate_tcp_client_information>true</validate_tcp_client_information>