Перейти к содержимому

Управление профилем настроек

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

Получить список профилей настроек в кластере

Заголовок раздела «Получить список профилей настроек в кластере»

Запросите список профилей из системной таблицы system.settings_profiles, которая содержит метаданные обо всех профилях настроек. Для этого используйте оператор SELECT и виртуальный движок clusterAllReplicas, который выполняет запрос к указанной таблице на всех узлах всех шардов заданного кластера.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Выполните запрос:

    sql
    SELECT name
    FROM system.settings_profiles
    ORDER BY name;

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

Заголовок раздела «Получить информацию о конкретном профиле настроек»

Запросите данные о профиле из системных таблиц system.settings_profiles и system.settings_profile_elements по его имени. Таблица system.settings_profiles содержит метаданные профиля настроек, а таблица system.settings_profile_elements — конкретные настройки профиля. Для просмотра используйте оператор SELECT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя профиля:

    sql
    SELECT name
    FROM system.settings_profiles
    ORDER BY name;
  3. Для просмотра метаданных выполните запрос:

    sql
    SELECT *
    FROM system.settings_profiles
    WHERE name = '<имя профиля>'
    LIMIT 1;

    Здесь условие LIMIT со значением 1 возвращает первую найденную запись из таблицы system.settings_profiles.

  4. Для просмотра настроек профиля выполните запрос:

    sql
    SELECT
    setting_name,
    value,
    min_value,
    max_value,
    readonly
    FROM system.settings_profile_elements
    WHERE profile_name = '<имя профиля>'
    ORDER BY index;

    Здесь:

    • profile_name — имя профиля настроек;
    • setting_name — название настройки;
    • value — значение настройки;
    • min_value и max_value — допустимые границы значений (если заданы);
    • readonly — флаг, указывающий, можно ли изменять настройку (1 — нельзя, 0 — можно);
    • условие ORDER BY сортирует результаты по порядковому номеру настройки в профиле index.

Получить назначение профиля настроек пользователям и ролям

Заголовок раздела «Получить назначение профиля настроек пользователям и ролям»

Запросите настройки профиля из таблицы system.settings_profile_elements по его имени. Для просмотра используйте оператор SELECT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя профиля:

    sql
    SELECT name
    FROM system.settings_profiles
    ORDER BY name;
  3. Выполните запрос:

    sql
    SELECT DISTINCT
    user_name,
    role_name,
    profile_name
    FROM system.settings_profile_elements
    WHERE profile_name = '<имя профиля>'
    AND (user_name IS NOT NULL OR role_name IS NOT NULL)
    ORDER BY user_name, role_name;

    Здесь:

    • Оператор DISTINCT устраняет дубликаты строк, если у пользователя или роли на разных узлах кластера одинаковый профиль.
    • Условие AND (user_name IS NOT NULL OR role_name IS NOT NULL) оставляет только те строки, где профиль назначен пользователю или роли.
    • Условие ORDER BY упорядочивает результаты по именам пользователя и роли.

Для создания профиля настроек используйте оператор CREATE.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Узнайте имя роли:

    sql
    SELECT name
    FROM system.roles
    ORDER BY name;
  4. Выполните запрос:

    sql
    CREATE SETTINGS PROFILE [IF NOT EXISTS] <имя профиля>
    SETTINGS
    <настройка 1> = <значение 1>,
    <настройка 2> = <значение 2>,
    ...
    TO <имя пользователя>, <имя роли>;

    Условия в запросе:

    • IF NOT EXISTS — предотвращает ошибку, если профиль с таким именем уже существует.
    • SETTINGS — секция, в которой задаются нужные параметры и значения.
    sql
    CREATE SETTINGS PROFILE [IF NOT EXISTS] <имя профиля>
    SETTINGS
    max_memory_usage = 5000000000, # Максимальный объем оперативной памяти = 5000000000 Б (5 ГБ)
    max_execution_time = 300, # Максимальное время выполнения запроса = 300 с
    readonly = 1, # Разрешено только чтение данных
    log_queries = 1; # Включено логирование всех запросов
    sql
    CREATE SETTINGS PROFILE secure_analyst_profile
    SETTINGS
    max_memory_usage = 5000000000, # Максимальный объем оперативной памяти = 5000000000 Б (5 ГБ)
    readonly = 1, # Разрешено только чтение данных
    TO user_1, role_3;

Также вы можете назначить профиль настроек пользователю или роли после создания.

Важно

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

Для удаления профиля используйте оператор DROP.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя профиля:

    sql
    SELECT name
    FROM system.settings_profiles
    ORDER BY name;
  3. Выполните запрос:

    sql
    DROP SETTINGS PROFILE [IF EXISTS] <имя профиля>;

    В запросе условие IF EXISTS предотвращает ошибку, если профиля с таким именем не существует.