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

Обзор

В 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

Для настроек MergeTree можно задавать ограничения. Эти ограничения применяются при создании таблицы с движком MergeTree или при изменении её настроек хранения. При указании имени настройки MergeTree в разделе <constraints> к нему необходимо добавлять префикс merge_tree_.

Пример

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