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

> Table système contenant des informations sur les politiques de stockage et les volumes définis dans la configuration du serveur.

# system.storage_policies

<div id="description">
  ## Description
</div>

Contient des informations sur les politiques de stockage et les volumes définis dans la [configuration du serveur](/fr/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).

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

* `policy_name` ([String](/fr/reference/data-types/string)) — Le nom de la politique de stockage.
* `volume_name` ([String](/fr/reference/data-types/string)) — Le nom du volume.
* `volume_priority` ([UInt64](/fr/reference/data-types/int-uint)) — La priorité du volume.
* `disks` ([Array(String)](/fr/reference/data-types/array)) — La liste des noms de tous les disques faisant partie de cette politique de stockage.
* `volume_type` ([Enum8('JBOD' = 0, 'SINGLE\_DISK' = 1, 'UNKNOWN' = 2)](/fr/reference/data-types/enum)) — Le type de volume : JBOD ou disque unique.
* `max_data_part_size` ([UInt64](/fr/reference/data-types/int-uint)) — La taille maximale d'une partie de données pouvant être stockée sur l'un des disques du volume.
* `move_factor` ([Float32](/fr/reference/data-types/float)) — Lorsque l'espace disponible devient inférieur à ce facteur, les données commencent automatiquement à être déplacées vers le volume suivant, le cas échéant (0.1 par défaut).
* `prefer_not_to_merge` ([UInt8](/fr/reference/data-types/int-uint)) — Vous ne devez pas utiliser ce paramètre. Désactive la fusion des parties de données sur ce volume (cela nuit aux performances).
* `perform_ttl_move_on_insert` ([UInt8](/fr/reference/data-types/int-uint)) — Désactive le déplacement TTL lors de l'INSERT d'une partie de données. Par défaut, si ce paramètre est activé et qu'une partie de données déjà expirée selon la règle de déplacement TTL est insérée, elle est immédiatement placée sur le volume/disque déclaré dans cette règle.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/fr/reference/data-types/enum)) — Politique d'équilibrage des disques : `round_robin` ou `least_used`.

<div id="volume-selection-on-insert">
  ## Sélection du volume lors d’un `INSERT`
</div>

Lorsque `INSERT` crée une nouvelle partie de données, ClickHouse choisit un disque de destination
en appliquant les règles ci-dessous dans l’ordre. La première règle qui s’applique **et peut
réserver de l’espace pour la partie** l’emporte ; sinon (si la règle ne s’applique pas, s’il n’y a pas d’espace
libre ou si `max_data_part_size` est dépassé), l’évaluation se poursuit avec la règle
suivante.

1. **Règle de déplacement TTL** — si une clause `TTL <expr> TO VOLUME 'X'` (ou `TO DISK 'X'`)
   est déjà expirée pour les lignes en cours d’insertion, **et que**
   `perform_ttl_move_on_insert = 1` (par défaut) sur le **volume de destination
   TTL** (pour `TO DISK 'X'`, le volume contenant le disque `X`), la partie
   est écrite directement sur cette destination. Si la réservation échoue, l’insertion
   reprend aux étapes 2 à 4 ; un avertissement est consigné, mais `INSERT`
   n’échoue pas pour cette seule raison.
2. **`max_data_part_size`** — un volume rejette les parties plus grandes que son
   `max_data_part_size`. Cette vérification est effectuée volume par volume ; elle ne bloque pas une
   réservation à l’étape 1 pour `TTL ... TO DISK 'X'`, qui cible le disque
   directement.
3. **`volume_priority`** — parmi les volumes restants, celui dont la valeur
   `volume_priority` est la plus faible est choisi. Les volumes sans
   `<volume_priority>` explicite sont ordonnés selon leur position dans la configuration.
4. **`load_balancing`** — une fois le volume choisi, le disque qu’il contient
   est sélectionné selon sa politique `load_balancing`
   (`round_robin` ou `least_used`).

<Info>
  **Override**

  Si `min_free_disk_bytes_to_perform_insert` ou
  `min_free_disk_ratio_to_perform_insert` est non nul, l’ordre de priorité ci-dessus
  est contourné. `INSERT` essaie uniquement le volume ayant la plus faible
  `volume_priority` et renvoie `NOT_ENOUGH_SPACE` si aucun disque de ce volume
  n’atteint le seuil requis. Les insertions dans la base de données `system` sont exemptées.
</Info>

<Note>
  `perform_ttl_move_on_insert` est lu sur le volume de **destination TTL**,
  et non sur le volume source. Pour une règle `TO DISK 'X'`, l’indicateur est lu
  sur le volume qui contient le disque `X`. Le définir sur n’importe quel autre volume de
  la politique n’a aucun effet sur le chemin d’insertion.
</Note>

Pour forcer les insertions à respecter `volume_priority` même lorsqu’une règle de déplacement TTL
« déjà expirée » s’applique, définissez `perform_ttl_move_on_insert = 0` sur
le volume de destination TTL (pour `TO DISK 'X'`, sur le volume qui contient
le disque `X`). La partie est alors d’abord écrite sur le volume de priorité N, puis
déplacée vers la destination TTL par une tâche de déplacement en arrière-plan (observable via
`system.moves`). Voir le
[paramètre `perform_ttl_move_on_insert` du moteur MergeTree](/fr/reference/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure).
