> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.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/string)) — O nome da política de armazenamento.
* `volume_name` ([String](/pt-BR/reference/data-types/string)) — O nome do volume.
* `volume_priority` ([UInt64](/pt-BR/reference/data-types/int-uint)) — A prioridade do volume.
* `disks` ([Array(String)](/pt-BR/reference/data-types/array)) — 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)](/pt-BR/reference/data-types/enum)) — O tipo do volume: JBOD ou um único disk.
* `max_data_part_size` ([UInt64](/pt-BR/reference/data-types/int-uint)) — O tamanho máximo de uma parte que pode ser armazenada em qualquer um dos disks do volume.
* `move_factor` ([Float32](/pt-BR/reference/data-types/float)) — 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](/pt-BR/reference/data-types/int-uint)) — 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](/pt-BR/reference/data-types/int-uint)) — 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)](/pt-BR/reference/data-types/enum)) — Política de balanceamento de disks: `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).
