> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.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

## Descrição

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

## 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çã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.

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

## Colunas

* `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 discos 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 disco.
* `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 discos 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 o TTL move 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 TTL move será imediatamente movida para o volume/disco declarado nessa regra.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/pt-BR/reference/data-types/enum)) — Política de balanceamento de discos: `round_robin` ou `least_used`.
