Ограничения на Настройки
Обзор
В 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