Ограничения на настройки
Обзор
В ClickHouse "ограничения" на настройки относятся к ограничениям и правилам, которые вы можете установить для настроек. Эти ограничения могут быть применены для поддержания стабильности, безопасности и предсказуемого поведения вашей базы данных.
Определение ограничений
Ограничения на настройки могут быть определены в разделе profiles
файла конфигурации user.xml
. Они запрещают пользователям изменять некоторые настройки с помощью инструкции SET
.
Ограничения определяются следующим образом:
Если пользователь попытается нарушить ограничения, будет выброшено исключение, и настройка останется неизменной.
Типы ограничений
В ClickHouse поддерживается несколько типов ограничений:
min
max
disallowed
readonly
(с псевдонимомconst
)changeable_in_readonly
Ограничения min
и max
указывают верхние и нижние границы для числовой настройки и могут использоваться в комбинации друг с другом.
Ограничение disallowed
может использоваться для указания конкретных значений, которые не должны допускаться для конкретной настройки.
Ограничение 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