Pular para o conteúdo principal

Visão geral

No ClickHouse, “restrições” em configurações se referem a limitações e regras que podem ser atribuídas às configurações. Essas restrições podem ser aplicadas para manter a estabilidade, a segurança e a previsibilidade do comportamento do seu banco de dados.

Definindo restrições

Restrições nas configurações podem ser definidas na seção profiles do arquivo de configuração user.xml. Elas impedem que os usuários alterem algumas configurações usando a instrução SET. As restrições são definidas da seguinte forma:
Se o usuário tentar violar as restrições, uma exceção será lançada e a configuração permanecerá inalterada.

Tipos de restrições

Há alguns tipos de restrições compatíveis com o ClickHouse:
  • min
  • max
  • disallowed
  • readonly (com alias const)
  • changeable_in_readonly
As restrições min e max especificam os limites superior e inferior de uma configuração numérica e podem ser usadas em conjunto. A restrição disallowed pode ser usada para especificar valores que não devem ser permitidos para uma determinada configuração. A restrição readonly ou const especifica que o usuário não pode alterar a configuração correspondente de forma alguma. O tipo de restrição changeable_in_readonly permite que os usuários alterem a configuração dentro do intervalo min/max mesmo se a configuração readonly estiver definida como 1; caso contrário, não é permitido alterar configurações no modo readonly=1.
changeable_in_readonly é compatível apenas quando settings_constraints_replace_previous está habilitado:

Vários perfis de restrição

Se houver vários perfis ativos para um usuário, as restrições serão mescladas. O processo de merge depende de settings_constraints_replace_previous:
  • true (recomendado): as restrições para a mesma configuração são substituídas durante a mesclagem, de modo que a última restrição seja usada e todas as anteriores sejam ignoradas. Isso inclui campos que não estão definidos na nova restrição.
  • false (padrão): as restrições para a mesma configuração são mescladas de modo que cada tipo de restrição não definido seja herdado do perfil anterior, e cada tipo de restrição definido seja substituído pelo valor do novo perfil.

Modo somente leitura

O modo somente leitura é habilitado pela configuração readonly, que não deve ser confundida com o tipo de restrição readonly:
  • readonly=0: Sem restrições de somente leitura.
  • readonly=1: Apenas consultas de leitura são permitidas, e as configurações não podem ser alteradas a menos que changeable_in_readonly esteja definido.
  • readonly=2: Apenas consultas de leitura são permitidas, mas as configurações podem ser alteradas, exceto a própria configuração readonly.

Exemplo

Faça com que users.xml inclua as seguintes linhas:
As consultas a seguir gerarão exceções:
O perfil default é tratado de forma especial: todas as restrições definidas para o perfil default se tornam as restrições padrão e, assim, passam a restringir todos os usuários até que sejam explicitamente substituídas para esses usuários.

Restrições para configurações do MergeTree

É possível definir restrições para configurações do MergeTree. Essas restrições são aplicadas quando uma tabela com a engine MergeTree é criada ou quando suas configurações de armazenamento são alteradas. O nome da configuração do MergeTree deve ser precedido pelo prefixo merge_tree_ quando for referenciado na seção <constraints>.

Exemplo

Você pode proibir a criação de novas tabelas com storage_policy especificada explicitamente
Última modificação em 29 de junho de 2026