Passer au contenu principal

Description

Contient des informations sur les politiques de stockage et les volumes définis dans la configuration du serveur.

Colonnes

  • policy_name (String) — Le nom de la politique de stockage.
  • volume_name (String) — Le nom du volume.
  • volume_priority (UInt64) — La priorité du volume.
  • disks (Array(String)) — 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)) — Le type du volume : JBOD ou disque unique.
  • max_data_part_size (UInt64) — La taille maximale d’une partie de données pouvant être stockée sur l’un des disques du volume.
  • move_factor (Float32) — 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) — 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) — 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)) — Politique d’équilibrage entre disques : round_robin ou least_used.

Sélection du volume lors d’un INSERT

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).
OverrideSi 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.
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.
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.
Dernière modification le 29 juin 2026