Description
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_robinouleast_used.
Sélection du volume lors d’un INSERT
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.
- Règle de déplacement TTL — si une clause
TTL <expr> TO VOLUME 'X'(ouTO DISK 'X') est déjà expirée pour les lignes en cours d’insertion, et queperform_ttl_move_on_insert = 1(par défaut) sur le volume de destination TTL (pourTO DISK 'X', le volume contenant le disqueX), la partie est écrite directement sur cette destination. Si la réservation échoue, l’insertion reprend aux étapes 2 à 4 ; un avertissement est consigné, maisINSERTn’échoue pas pour cette seule raison. max_data_part_size— un volume rejette les parties plus grandes que sonmax_data_part_size. Cette vérification est effectuée volume par volume ; elle ne bloque pas une réservation à l’étape 1 pourTTL ... TO DISK 'X', qui cible le disque directement.volume_priority— parmi les volumes restants, celui dont la valeurvolume_priorityest la plus faible est choisi. Les volumes sans<volume_priority>explicite sont ordonnés selon leur position dans la configuration.load_balancing— une fois le volume choisi, le disque qu’il contient est sélectionné selon sa politiqueload_balancing(round_robinouleast_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.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.