> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Tabela de sistema que contém informações sobre políticas e volumes de armazenamento definidos na configuração do servidor.

# system.storage_policies

<div id="description">
  ## Descrição
</div>

Contém informações sobre políticas de armazenamento e volumes definidos na [configuração do servidor](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).

<div id="columns">
  ## Colunas
</div>

* `policy_name` ([String](/pt-BR/reference/data-types/index)) — O nome da política de armazenamento.
* `volume_name` ([String](/pt-BR/reference/data-types/index)) — O nome do volume.
* `volume_priority` ([UInt64](/pt-BR/reference/data-types/index)) — A prioridade do volume.
* `disks` ([Array(String)](/pt-BR/reference/data-types/index)) — 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)](/pt-BR/reference/data-types/index)) — O tipo do volume: JBOD ou um único disco.
* `max_data_part_size` ([UInt64](/pt-BR/reference/data-types/index)) — O tamanho máximo de uma parte que pode ser armazenada em qualquer um dos discos do volume.
* `move_factor` ([Float32](/pt-BR/reference/data-types/index)) — Quando a quantidade de espaço disponível fica abaixo desse fator, os dados começam automaticamente a ser movidos para o próximo volume, se houver (por padrão, 0.1).
* `prefer_not_to_merge` ([UInt8](/pt-BR/reference/data-types/index)) — 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](/pt-BR/reference/data-types/index)) — Desabilita o TTL move no INSERT de uma parte de dados. Por padrão (se estiver habilitado), se uma parte de dados já expirada pela regra de TTL move for inserida, ela vai imediatamente para o volume/disco definido na regra de movimentação.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/pt-BR/reference/data-types/index)) — Política de balanceamento de disco: `round_robin` ou `least_used`.

<div id="volume-selection-on-insert">
  ## Seleção de volume no `INSERT`
</div>

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`).

<Info>
  **Substituição**

  Se `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.
</Info>

<Note>
  `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.
</Note>

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](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).
