Управление настройками пользователя

В 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.

Управление настройками для пользователя ADQM по умолчанию через ADCM
Управление настройками для пользователя ADQM по умолчанию через ADCM

После того, как необходимые параметры установлены, не забудьте нажать 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, присвоенное на уровне аккаунта пользователя.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней