ON CLUSTER позволяет изменять профили настроек в кластере, см. Distributed DDL.
Замена и изменение настроек
ALTER SETTINGS PROFILE поддерживает два разных способа изменения настроек и родительских (наследуемых) профилей. Они работают совершенно по-разному, поэтому важно выбрать подходящий вариант.
Форма замены: просто SETTINGS / INHERIT
SETTINGS без дополнительных ключевых слов (то есть без ADD, MODIFY или DROP) полностью заменяет список настроек и все родительские профили профиля на ровно то, что вы перечислите. Всё, что было задано ранее, но не указано в списке, будет молча удалено — без каких-либо предупреждений.
SETTINGS в CREATE SETTINGS PROFILE: это предложение SETTINGS задаёт полный список параметров.
Инкрементальная форма: ADD / MODIFY / DROP
ADD, MODIFY и DROP изменяют отдельные записи, не затрагивая всё остальное в профиле:
ADD SETTINGS variable = value [constraints]— добавляет настройку, которой ещё нет.MODIFY SETTINGS variable = value [constraints]— заменяет запись одной настройки. Перезаписывается вся запись целиком (значение и ограничения), поэтому, если вы хотите их сохранить, заново укажитеMIN/MAX/READONLY/и т. д.DROP SETTINGS variable [,...]— удаляет перечисленные настройки.ADD PROFILES 'profile_name' [,...]/DROP PROFILES 'profile_name' [,...]— добавляет или удаляет родительские (наследуемые) профили.DROP ALL SETTINGS/DROP ALL PROFILES— удаляет все настройки или все родительские профили.
DROP SETTINGS a ADD SETTINGS b = 1.
SET variable = value — это псевдоним для MODIFY SETTINGS variable = value. Он предусмотрен, потому что SET звучит естественно, а ввод заменяющего предложения SETTINGS, когда предполагалось инкрементальное изменение, — распространённая ошибка.
Примеры
SHOW CREATE SETTINGS PROFILE:
Инкрементальные изменения vs полная замена
ADD SETTINGS или MODIFY SETTINGS (см. примеры ниже).
ADD и MODIFY
ADD SETTINGS, и MODIFY SETTINGS сохраняют остальные настройки в профиле, но по-разному обрабатывают существующую запись для той же настройки:
ADD SETTINGS variable = value ...сначала удаляет любую существующую запись дляvariable, а затем добавляет новую. Поэтому эта команда заменяет значение вместе со всеми ограничениями этой настройки. Любые ранее заданныеMIN,MAXили режим записи (READONLY/WRITABLE/CONST/CHANGEABLE_IN_READONLY) дляvariable, которые вы не повторите, будут отброшены.MODIFY SETTINGS variable = value ...объединяет изменения по полям: команда переопределяет только те поля, которые вы действительно укажете (значение,MIN,MAXили режим записи), а остальные поля этой настройки оставляет без изменений.
Примеры
ИЗМЕНИТЬ НАСТРОЙКИ
MODIFY выполняет слияние по полям, изменение только значения настройки сохраняет её существующие ограничения:
ADD SETTINGS
MODIFY, при повторном выполнении ADD только со значением ранее заданные ограничения для этого параметра удаляются: