Saltar al contenido principal

Descripción general

En ClickHouse, las “restricciones” de los ajustes se refieren a limitaciones y reglas que se pueden asignar a los ajustes. Estas restricciones pueden aplicarse para mantener la estabilidad, la seguridad y un comportamiento predecible de la base de datos.

Definición de restricciones

Las restricciones de configuración pueden definirse en la sección profiles del archivo de configuración user.xml. Impiden que los usuarios cambien algunos ajustes mediante la sentencia SET. Las restricciones se definen de la siguiente manera:
Si el usuario intenta incumplir las restricciones, se lanza una excepción y la configuración permanece sin cambios.

Tipos de restricciones

ClickHouse admite varios tipos de restricciones:
  • min
  • max
  • disallowed
  • readonly (con el alias const)
  • changeable_in_readonly
Las restricciones min y max especifican los límites inferior y superior de una configuración numérica, y pueden usarse en combinación. La restricción disallowed puede usarse para especificar valores concretos que no deben permitirse para una configuración determinada. La restricción readonly o const especifica que el usuario no puede cambiar en absoluto la configuración correspondiente. El tipo de restricción changeable_in_readonly permite a los usuarios cambiar la configuración dentro del rango min/max incluso si la configuración readonly está establecida en 1; de lo contrario, no se permite cambiar configuraciones en el modo readonly=1.
changeable_in_readonly solo es compatible si settings_constraints_replace_previous está habilitado:

Varios perfiles de restricciones

Si hay varios perfiles activos para un usuario, las restricciones se fusionan. El proceso de fusión depende de settings_constraints_replace_previous:
  • true (recomendado): las restricciones para el mismo ajuste se sustituyen durante la fusión, de modo que se usa la última restricción y se ignoran todas las anteriores. Esto incluye los campos que no están definidos en la nueva restricción.
  • false (predeterminado): las restricciones para el mismo ajuste se fusionan de forma que cada tipo de restricción no definido se toma del perfil anterior y cada tipo de restricción definido se sustituye por el valor del nuevo perfil.

Modo de solo lectura

El modo de solo lectura se habilita mediante la configuración readonly, que no debe confundirse con el tipo de restricción readonly:
  • readonly=0: Sin restricciones de solo lectura.
  • readonly=1: Solo se permiten consultas de lectura y no se puede cambiar la configuración, salvo que se haya establecido changeable_in_readonly.
  • readonly=2: Solo se permiten consultas de lectura, pero sí se puede cambiar la configuración, excepto la propia configuración readonly.

Ejemplo

Incluya las siguientes líneas en users.xml:
Las siguientes consultas producirán excepciones:
El perfil default recibe un tratamiento especial: todas las restricciones definidas para el perfil default pasan a ser las restricciones predeterminadas, por lo que se aplican a todos los usuarios hasta que se sobrescriban explícitamente para esos usuarios.

Restricciones en la configuración de MergeTree

Es posible establecer restricciones para la configuración de MergeTree. Estas restricciones se aplican al crear una tabla con el motor MergeTree o al modificar su configuración de almacenamiento. El nombre de la configuración de MergeTree debe llevar el prefijo merge_tree_ cuando se haga referencia a ella en la sección <constraints>.

Ejemplo

Puede prohibir la creación de tablas nuevas con storage_policy especificada explícitamente
Última modificación el 2 de julio de 2026