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

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

Обзор

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