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

Ограничения на Настройки

Обзор

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

Определение ограничений

Ограничения на настройки могут быть определены в секции profiles файла конфигурации user.xml. Они запрещают пользователям изменять некоторые настройки с помощью оператора SET.

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

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

Типы ограничений

В ClickHouse поддерживаются несколько типов ограничений:

  • min
  • max
  • readonly (с псевдонимом const)
  • changeable_in_readonly

Ограничения min и max задают верхние и нижние границы для числовой настройки и могут использоваться в комбинации друг с другом.

Ограничение readonly или const указывает, что пользователь не может изменить соответствующую настройку вообще.

Тип ограничения changeable_in_readonly позволяет пользователям изменять настройку в пределах диапазона min/max, даже если настройка readonly установлена на 1, в противном случае изменения настроек не допускаются в режиме readonly=1.

примечание

changeable_in_readonly поддерживается только если включен settings_constraints_replace_previous:

Несколько профилей ограничений

Если для пользователя активно несколько профилей, то ограничения объединяются. Процесс слияния зависит от settings_constraints_replace_previous:

  • true (рекомендуется): ограничения для одной и той же настройки заменяются во время слияния, так что используется последнее ограничение, а все предыдущие игнорируются. Это включает поля, которые не заданы в новом ограничении.
  • false (по умолчанию): ограничения для одной и той же настройки объединяются таким образом, что каждый не установленный тип ограничения берется из предыдущего профиля, а каждое установленное ограничение заменяется значением из нового профиля.

Режим только для чтения

Режим только для чтения включается с помощью настройки readonly, которая не должна путаться с типом ограничения readonly:

  • readonly=0: Нет ограничений только для чтения.
  • readonly=1: Разрешены только запросы на чтение, и настройки не могут быть изменены, если не установлено changeable_in_readonly.
  • readonly=2: Разрешены только запросы на чтение, но настройки могут быть изменены, кроме самой настройки readonly.

Пример

Предположим, users.xml включает следующие строки:

Следующие запросы все вызовут исключения:

примечание

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

Ограничения на настройки MergeTree

Можно задать ограничения для настроек merge tree. Эти ограничения применяются, когда создается таблица с движком MergeTree или изменяются ее настройки хранилища.

Имя настройки merge tree должно предваряться префиксом merge_tree_ при ссылке в секции <constraints>.

Пример

Вы можете запретить создание новых таблиц с явно заданной storage_policy