Управление настройками пользователя
В ADQM/ClickHouse есть две основные группы настроек:
-
Настройки на уровне сервера — параметры, которые указываются в конфигурационном файле config.xml и применяются глобально для сервера ClickHouse. Эти настройки нельзя изменить на уровне пользователя, сессии или отдельных запросов. Список параметров и их значения можно посмотреть в системной таблице
system.server_settings. -
Настройки на уровне пользователя — параметры, которые можно сконфигурировать для отдельного пользователя, сессии или конкретного запроса в зависимости от сценария использования и времени, в течение которого необходимо сохранять установленные значения актуальными. Полный список доступных параметров и их значения можно посмотреть в системной таблице
system.settings. Способы настройки этих параметров описаны ниже.
Настройка параметров на уровне аккаунта пользователя
Чтобы указать значения параметров, которые будут применяться при входе пользователя в систему, используйте выражение SETTINGS в запросе CREATE USER при создании пользователя или ALTER USER при изменении существующего пользователя:
CREATE USER <user_name> ... SETTINGS <parameter_name> = <value>, ...;
Значения параметров можно также указать в профиле настроек, который затем назначить пользователю в запросе CREATE USER или ALTER USER:
CREATE SETTINGS PROFILE <profile_name> SETTINGS <parameter_name> = <value>, ...;
CREATE USER <user_name> SETTINGS PROFILE <profile_name>;
Управлять настройками профиля пользователя ADQM по умолчанию можно через интерфейс ADCM — используйте параметр default_profile_settings в секции Default user and policy settings на странице конфигурации сервиса ADQMDB, чтобы сконфигурировать список параметров для пользователя default.
После того, как необходимые параметры установлены, не забудьте нажать Save и выполнить действие Reconfig and restart для сервиса ADQMDB, чтобы сохранить информацию об изменениях конфигурации и перезапустить сервис.
Настройка параметров на уровне сессии
С помощью оператора SET можно указать значение параметра на время текущей сессии (это значение временно заменит значение, установленное на уровне аккаунта пользователя):
SET <parameter_name> = <value>;
Запрос SET также позволяет установить все значения из указанного профиля настроек:
SET profile = '<profile_name>';
Применение настроек на уровне сессии может быть удобно для специального тестирования или когда нужно, чтобы определенные значения параметров действовали при выполнении запросов в рамках одной сессии, но не дольше.
Настройка параметров для отдельного запроса
Настройки также можно конфигурировать для каждого отдельного запроса. Для этого в тексте запроса после выражения SETTINGS перечислите параметры со значениями:
SELECT <column_list> FROM <table_name> SETTINGS <parameter_name> = <value>, ...;
Указанные настройки будут применяться только в рамках выполнения данного запроса — после его завершения для параметров будут действовать значения, указанные на уровне пользователя/сессии, или значения по умолчанию.
Значения параметров по умолчанию
Чтобы узнать, значения каких параметров были изменены для пользователя/сессии и отличаются от значений по умолчанию, выполните запрос:
SELECT name, value FROM system.settings WHERE changed;
Вернуть параметр к его значению по умолчанию можно следующей командой:
SET <parameter_name> = DEFAULT;
Примеры
Зайдите в консольный клиент clickhouse-client как пользователь default. Посмотрите значение параметра max_columns_to_read:
SELECT name, value FROM system.settings WHERE name = 'max_columns_to_read';
┌─name────────────────┬─value─┐ 1. │ max_columns_to_read │ 0 │ └─────────────────────┴───────┘
Создайте нового пользователя, указав через выражение SETTINGS для параметра max_columns_to_read значение, отличное от значения по умолчанию, например:
CREATE USER test_user IDENTIFIED WITH sha256_password BY 'qwerty123' SETTINGS max_columns_to_read = 20;
Зайдите в clickhouse-client как пользователь test_user и выполните команду:
SELECT name, value FROM system.settings WHERE changed;
Параметр max_columns_to_read появится в списке измененных настроек со значением, которое было установлено для текущего пользователя:
┌─name───────────────────────────────┬─value───────┐
1. │ max_columns_to_read │ 20 │
...
└────────────────────────────────────┴─────────────┘
Измените значение параметра на уровне сессии:
SET max_columns_to_read = 25;
Снова проверьте значение параметра:
SELECT name, value FROM system.settings WHERE changed;
┌─name───────────────────────────────┬─value───────┐
1. │ max_columns_to_read │ 25 │
...
└────────────────────────────────────┴─────────────┘
Если выйти из консольного клиента (завершить сессию) и снова зайти как пользователь test_user, можно убедиться, что параметр max_columns_to_read снова имеет значение 20, присвоенное на уровне аккаунта пользователя.