Descrição
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 dos nomes de todos os disks que fazem parte desta política de armazenamento.volume_type(Enum8(‘JBOD’ = 0, ‘SINGLE_DISK’ = 1, ‘UNKNOWN’ = 2)) — O tipo do volume: JBOD ou um único disk.max_data_part_size(UInt64) — O tamanho máximo de uma parte que pode ser armazenada em qualquer um dos disks 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) — Não use esta configuração. Ela desativa a mesclagem de partes de dados neste volume, o que é prejudicial e degrada o desempenho.perform_ttl_move_on_insert(UInt8) — Desativa a movimentação por TTL ao inserir uma parte de dados. Por padrão, se estiver ativada, uma parte de dados inserida que já tenha expirado conforme a regra de movimentação por TTL será imediatamente movida para o volume/disk declarado nessa regra.load_balancing(Enum8(‘ROUND_ROBIN’ = 0, ‘LEAST_USED’ = 1)) — Política de balanceamento de disks:round_robinouleast_used.
Seleção de volume no INSERT
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.
- Regra de TTL move — se uma cláusula
TTL <expr> TO VOLUME 'X'(ouTO DISK 'X') já estiver no passado para as linhas que estão sendo inseridas, eperform_ttl_move_on_insert = 1(padrão) no volume de destino do TTL (paraTO DISK 'X', o volume que contém o discoX), a parte é gravada diretamente nesse destino. Se a reserva ali falhar, o insert recorre às etapas 2–4; um aviso é registrado, mas oINSERTnão falha apenas por esse motivo. max_data_part_size— um volume rejeita partes maiores que seumax_data_part_size. Isso é verificado por volume; não impede uma reserva da etapa 1TTL ... TO DISK 'X', que tem o disco como destino direto.volume_priority— entre os volumes restantes, é escolhido aquele com o menor valor devolume_priority. Volumes sem um<volume_priority>explícito são ordenados pela sua posição na configuração.load_balancing— depois que um volume é escolhido, o disco dentro desse volume é selecionado de acordo com sua política deload_balancing(round_robinouleast_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.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.