Существует несколько способов выполнять команды с определёнными настройками.
Настройки задаются на нескольких уровнях, и каждый следующий уровень переопределяет предыдущие значения настройки.
Порядок приоритета при определении настройки следующий:
-
Применение настройки непосредственно к пользователю или в профиле настроек
- SQL (рекомендуется)
- добавление одного или нескольких XML- или YAML-файлов в
/etc/clickhouse-server/users.d
-
Настройки сеанса
- Отправьте
SET setting=value из SQL-консоли ClickHouse Cloud или через
clickhouse client в интерактивном режиме. Аналогичным образом можно использовать сеансы ClickHouse
в HTTP-протоколе. Для этого необходимо указать
HTTP-параметр session_id.
-
Настройки запроса
- При запуске
clickhouse client в неинтерактивном режиме задайте параметр
запуска --setting=value.
- При использовании HTTP API передавайте CGI-параметры (
URL?setting_1=value&setting_2=value...).
- Задайте настройки в
секции SETTINGS
запроса SELECT. Значение настройки применяется только к этому запросу
и после его выполнения сбрасывается до значения по умолчанию или предыдущего значения.
Возврат настройки к значению по умолчанию
Если вы изменили настройку и хотите вернуть ей значение по умолчанию, установите DEFAULT. Синтаксис выглядит так:
SET setting_name = DEFAULT
Например, значение async_insert по умолчанию — 0. Предположим, вы изменили его на 1:
SET async_insert = 1;
SELECT value FROM system.settings where name='async_insert';
Ответ:
┌─value──┐
│ 1 │
└────────┘
Следующая команда возвращает его значение к 0:
SET async_insert = DEFAULT;
SELECT value FROM system.settings where name='async_insert';
Теперь параметр снова имеет значение по умолчанию:
┌─value───┐
│ 0 │
└─────────┘
Пользовательские настройки
Помимо общих настроек, пользователи могут определять пользовательские настройки.
Пользовательские настройки позволяют передавать параметры, специфичные для сеанса, на которые можно ссылаться в запросах, политиках или функциях. Это полезно, когда вам нужно:
- Фильтровать данные по идентификатору пользователя или организации
- Применять различную бизнес-логику в зависимости от контекста
- Сохранять информацию о состоянии между запросами в рамках сеанса
Имя пользовательской настройки должно начинаться с одного из нескольких предопределённых префиксов из заданного вами списка.
Список префиксов можно указать с помощью настройки сервера custom_settings_prefixes, заданной в файле конфигурации сервера.
В примере ниже в качестве пользовательского префикса выбран SQL_:
<custom_settings_prefixes>SQL_</custom_settings_prefixes>
В ClickHouse Cloud невозможно указать собственный префикс.
Все пользовательские настройки начинаются с префикса SQL_.
Чтобы задать пользовательскую настройку, используйте команду SET:
Чтобы получить текущее значение пользовательской настройки, используйте функцию getSetting():
SELECT getSetting('SQL_a');
Во всех этих примерах значение настройки async_insert установлено в 1, а
также показано, как просматривать настройки в работающей системе.
Применение настройки к пользователю напрямую с помощью SQL
Это создаст пользователя ingester с настройкой async_inset = 1:
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS async_insert = 1
Изучите профиль настроек и его назначение пользователю
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ ... │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS async_insert = true │
│ ... │
└────────────────────────────────────────────────────────────────────────────────────┘
Использование SQL для создания профиля настроек и назначения его пользователю
Ниже создаётся профиль log_ingest с настройкой async_inset = 1:
CREATE
SETTINGS PROFILE log_ingest SETTINGS async_insert = 1
Эта команда создаёт пользователя ingester и назначает ему профиль настроек log_ingest:
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS PROFILE log_ingest
Создание профиля настроек и пользователя с помощью XML
/etc/clickhouse-server/users.d/users.xml
<clickhouse>
<profiles>
<log_ingest>
<async_insert>1</async_insert>
</log_ingest>
</profiles>
<users>
<ingester>
<password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
<profile>log_ingest</profile>
</ingester>
<default replace="true">
<password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
</default>
</users>
</clickhouse>
Изучите профиль настроек и его назначение
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ CREATE USER default IDENTIFIED WITH sha256_password │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS PROFILE log_ingest │
│ CREATE SETTINGS PROFILE default │
│ CREATE SETTINGS PROFILE log_ingest SETTINGS async_insert = true │
│ CREATE SETTINGS PROFILE readonly SETTINGS readonly = 1 │
│ ... │
└────────────────────────────────────────────────────────────────────────────────────┘
Назначить настройку для сеанса
SET async_insert =1;
SELECT value FROM system.settings where name='async_insert';
┌─value──┐
│ 1 │
└────────┘
Задать настройку при выполнении запроса
INSERT INTO YourTable
SETTINGS async_insert=1
VALUES (...)
Последнее изменение 10 июня 2026 г.