Pular para o conteúdo principal

Descrição

Contém informações sobre políticas de armazenamento e volumes definidos na configuração do servidor.

Colunas

  • policy_name (String) — O nome da política de armazenamento.
  • volume_name (String) — O nome do volume.
  • volume_priority (UInt64) — A prioridade do volume.
  • disks (Array(String)) — A lista com os nomes de todos os discos que fazem parte desta política de armazenamento.
  • volume_type (Enum8(‘JBOD’ = 0, ‘SINGLE_DISK’ = 1, ‘UNKNOWN’ = 2)) — O tipo do volume — JBOD ou disco único.
  • max_data_part_size (UInt64) — o tamanho máximo de uma parte de dados que pode ser armazenada em qualquer um dos discos do volume.
  • move_factor (Float32) — Quando a quantidade de espaço disponível fica abaixo desse fator, os dados começam a ser movidos automaticamente para o próximo volume, se houver (por padrão, 0.1).
  • prefer_not_to_merge (UInt8) — Você não deve usar essa configuração. Desabilita a mesclagem de partes de dados neste volume (isso é prejudicial e leva à degradação do desempenho).
  • perform_ttl_move_on_insert (UInt8) — Desabilita TTL move no INSERT de parte de dados. Por padrão (se habilitado), se uma parte de dados já inserida tiver expirado pela regra de TTL move, ela vai imediatamente para um volume/disco definido na regra de movimentação.
  • load_balancing (Enum8(‘ROUND_ROBIN’ = 0, ‘LEAST_USED’ = 1)) — Política de balanceamento de discos: round_robin ou least_used.

Seleção de volume no INSERT

Quando o INSERT cria uma nova parte de dados, o ClickHouse escolhe um disco de destino tentando as regras abaixo na ordem indicada. A primeira regra que corresponder e conseguir reservar espaço para a parte prevalece; caso contrário (a regra não se aplica, não há espaço livre ou max_data_part_size foi excedido), a avaliação continua com a próxima regra.
  1. Regra de TTL move — se uma cláusula TTL <expr> TO VOLUME 'X' (ou TO DISK 'X') já estiver no passado para as linhas que estão sendo inseridas, e perform_ttl_move_on_insert = 1 (padrão) no volume de destino do TTL (para TO DISK 'X', o volume que contém o disco X), a parte é gravada diretamente nesse destino. Se a reserva ali falhar, o insert recorre às etapas 2–4; um aviso é registrado, mas o INSERT não falha apenas por esse motivo.
  2. max_data_part_size — um volume rejeita partes maiores que seu max_data_part_size. Isso é verificado por volume; não impede uma reserva da etapa 1 TTL ... TO DISK 'X', que tem o disco como destino direto.
  3. volume_priority — entre os volumes restantes, é escolhido aquele com o menor valor de volume_priority. Volumes sem um <volume_priority> explícito são ordenados pela sua posição na configuração.
  4. load_balancing — depois que um volume é escolhido, o disco dentro desse volume é selecionado de acordo com sua política de load_balancing (round_robin ou least_used).
SubstituiçãoSe min_free_disk_bytes_to_perform_insert ou min_free_disk_ratio_to_perform_insert for diferente de zero, a precedência acima é ignorada. O INSERT tenta apenas o volume com o menor volume_priority e lança NOT_ENOUGH_SPACE se nenhum disco nesse volume atender ao limite. Inserts no banco de dados system estão isentos.
perform_ttl_move_on_insert é lido no volume de destino do TTL, não no volume de origem. Para uma regra TO DISK 'X', a flag é lida do volume que contém o disco X. Defini-la em qualquer outro volume da política não tem efeito no caminho do insert.
Para forçar inserts a respeitar volume_priority mesmo quando se aplica uma regra de TTL move “já expirada”, defina perform_ttl_move_on_insert = 0 no volume de destino do TTL (para TO DISK 'X', no volume que contém o disco X). A parte é então gravada primeiro no volume de prioridade N e movida para o destino TTL por uma tarefa de movimentação em segundo plano (observável via system.moves). Veja a configuração perform_ttl_move_on_insert no motor MergeTree.
Última modificação em 10 de junho de 2026