> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.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/index)) — Le nom de la politique de stockage.
* `volume_name` ([String](/fr/reference/data-types/index)) — Le nom du volume.
* `volume_priority` ([UInt64](/fr/reference/data-types/index)) — La priorité du volume.
* `disks` ([Array(String)](/fr/reference/data-types/index)) — La liste de tous les noms de disques qui font partie de cette politique de stockage.
* `volume_type` ([Enum8('JBOD' = 0, 'SINGLE\_DISK' = 1, 'UNKNOWN' = 2)](/fr/reference/data-types/index)) — Le type du volume : JBOD ou disque unique.
* `max_data_part_size` ([UInt64](/fr/reference/data-types/index)) — 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/index)) — Lorsque l’espace disponible descend en dessous de ce facteur, les données commencent automatiquement à être déplacées vers le volume suivant, s’il existe (par défaut, 0.1).
* `prefer_not_to_merge` ([UInt8](/fr/reference/data-types/index)) — Vous ne devez pas utiliser ce paramètre. Désactive la fusion des parties de données sur ce volume (ce réglage est nuisible et entraîne une dégradation des performances).
* `perform_ttl_move_on_insert` ([UInt8](/fr/reference/data-types/index)) — Désactive le déplacement TTL lors de l’INSERT d’une partie de données. Par défaut (si activé), si une partie de données insérée a déjà expiré selon la règle de déplacement TTL, elle est immédiatement placée sur le volume/disque déclaré dans la règle de déplacement.
* `load_balancing` ([Enum8('ROUND\_ROBIN' = 0, 'LEAST\_USED' = 1)](/fr/reference/data-types/index)) — Politique d’équilibrage entre 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).
