Modifica los perfiles de ajuste.
Sintaxis:
ALTER SETTINGS PROFILE [IF EXISTS] name1 [RENAME TO new_name |, name2 [,...]]
[ON CLUSTER cluster_name]
[SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | INHERIT 'profile_name'] [,...]
[ADD|MODIFY SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] [,...]
[SET variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] [,...] ]
[DROP SETTINGS variable [,...] ]
[ADD PROFILES 'profile_name' [,...] ]
[DROP PROFILES 'profile_name' [,...] ]
[DROP ALL SETTINGS]
[DROP ALL PROFILES]
[TO {{role1 | user1 [, role2 | user2 ...]} | NONE | ALL | ALL EXCEPT {role1 | user1 [, role2 | user2 ...]}}]La cláusula ON CLUSTER permite modificar perfiles de ajuste en un clúster; véase DDL distribuido.
Reemplazar o modificar ajustes
ALTER SETTINGS PROFILE admite dos formas distintas de cambiar los ajustes y los perfiles padre (heredados) de un perfil. Su comportamiento es muy diferente, por lo que es importante elegir la correcta.
Forma de reemplazo: SETTINGS / INHERIT sin modificadores
Una cláusula SETTINGS sin modificadores (sin ADD, MODIFY ni DROP) reemplaza por completo la lista de ajustes y todos los perfiles padre del perfil por exactamente lo que enumeres. Todo lo que estuviera presente antes pero no figure en la lista se elimina silenciosamente; no hay ninguna advertencia.
CREATE SETTINGS PROFILE OR REPLACE p
SETTINGS max_execution_time = 10, enable_lazy_columns_replication = 1;
ALTER SETTINGS PROFILE p SETTINGS max_memory_usage = 16106127360;
SHOW CREATE SETTINGS PROFILE p;
-- → CREATE SETTINGS PROFILE p SETTINGS max_memory_usage = 16106127360
-- max_execution_time and enable_lazy_columns_replication are gone.Este es el mismo comportamiento que SETTINGS en CREATE SETTINGS PROFILE: la cláusula define la lista completa de configuraciones.
Forma incremental: ADD / MODIFY / DROP
Las palabras clave ADD, MODIFY y DROP cambian entradas individuales y dejan intacto todo lo demás del perfil:
ADD SETTINGS variable = value [constraints]— añade un ajuste que todavía no está presente.MODIFY SETTINGS variable = value [constraints]— reemplaza la entrada de un solo ajuste. Se sobrescribe la entrada completa (valor y restricciones), así que vuelve a especificarMIN/MAX/READONLY/etc. si quieres conservarlos.DROP SETTINGS variable [,...]— elimina los ajustes indicados.ADD PROFILES 'profile_name' [,...]/DROP PROFILES 'profile_name' [,...]— añade o elimina perfiles padre (heredados).DROP ALL SETTINGS/DROP ALL PROFILES— elimina todos los ajustes o todos los perfiles padre.
Varias de estas cláusulas pueden combinarse en una sola sentencia; por ejemplo, DROP SETTINGS a ADD SETTINGS b = 1.
SET variable = value es un alias de MODIFY SETTINGS variable = value. Se ofrece porque SET resulta natural y porque escribir la cláusula SETTINGS de reemplazo cuando se pretendía hacer un cambio incremental es un error común.
Ejemplos
Sobrescribe una sola configuración mientras conservas el resto de un perfil poblado:
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 16106127360;Añada un nuevo ajuste restringido y elimine otro:
ALTER SETTINGS PROFILE my_profile
DROP SETTINGS readonly
ADD SETTINGS max_threads = 8 MIN 4 MAX 16 WRITABLE;Gestione los perfiles principales de forma incremental:
ALTER SETTINGS PROFILE my_profile ADD PROFILES p1;
ALTER SETTINGS PROFILE my_profile DROP PROFILES p1;Compruebe siempre el resultado con SHOW CREATE SETTINGS PROFILE:
SHOW CREATE SETTINGS PROFILE my_profile;Incremental vs reemplazo completo
Para cambiar una sola configuración y mantener el resto, usa ADD SETTINGS o MODIFY SETTINGS (consulta los ejemplos a continuación).
ADD vs MODIFY
Tanto ADD SETTINGS como MODIFY SETTINGS conservan los demás ajustes del perfil, pero tratan de forma distinta una entrada existente para el mismo ajuste:
ADD SETTINGS variable = value ...primero elimina cualquier entrada existente paravariabley luego inserta la nueva. Por lo tanto, reemplaza el valor junto con todas las restricciones de ese ajuste. CualquierMIN,MAXo permiso de escritura (READONLY/WRITABLE/CONST/CHANGEABLE_IN_READONLY) definido previamente paravariableque no se repita se descarta.MODIFY SETTINGS variable = value ...fusiona campo por campo: sobrescribe solo los campos que realmente se especifican (el valor,MIN,MAXo el permiso de escritura) y mantiene los demás campos de ese ajuste tal como estaban.
Ejemplos
Cree un perfil para usarlo en los ejemplos siguientes:
CREATE SETTINGS PROFILE OR REPLACE p SETTINGS max_execution_time = 60;MODIFY SETTINGS
Agregue o cambie un solo ajuste sin modificar los demás:
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 20000000000;
SHOW CREATE SETTINGS PROFILE p;
-- CREATE SETTINGS PROFILE p SETTINGS
-- max_execution_time = 60,
-- max_memory_usage = 20000000000Como MODIFY combina los campos uno por uno, cambiar solo el valor de una configuración conserva sus restricciones existentes:
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 20000000000 MAX 30000000000;
ALTER SETTINGS PROFILE p MODIFY SETTINGS max_memory_usage = 25000000000;
SHOW CREATE SETTINGS PROFILE p;
-- ... max_memory_usage = 25000000000 MAX 30000000000 -- the MAX constraint is preservedADD SETTINGS
Añade una configuración (manteniendo las demás) y vuelve a definirla por completo si ya existe:
ALTER SETTINGS PROFILE p ADD SETTINGS max_threads = 8 MAX 16 READONLY;A diferencia de MODIFY, si se vuelve a ejecutar ADD solo con un valor, se eliminan las restricciones definidas previamente para ese parámetro:
ALTER SETTINGS PROFILE p ADD SETTINGS max_threads = 4;
SHOW CREATE SETTINGS PROFILE p;
-- ... max_threads = 4 -- the MAX and READONLY constraints are goneDROP SETTINGS
Elimina una o varias configuraciones con nombre:
ALTER SETTINGS PROFILE p DROP SETTINGS max_threads;Elimine todos los parámetros de configuración de una vez:
ALTER SETTINGS PROFILE p DROP ALL SETTINGS;Trabajar con perfiles heredados
Agregue o elimine perfiles padre (heredados) sin afectar la configuración del propio perfil:
ALTER SETTINGS PROFILE p ADD PROFILES base_profile;
ALTER SETTINGS PROFILE p DROP PROFILES base_profile;
ALTER SETTINGS PROFILE p DROP ALL PROFILES;