Descripción
Columnas
policy_name(String) — El nombre de la política de almacenamiento.volume_name(String) — El nombre del volumen.volume_priority(UInt64) — La prioridad del volumen.disks(Array(String)) — La lista de todos los nombres de discos que forman parte de esta política de almacenamiento.volume_type(Enum8(‘JBOD’ = 0, ‘SINGLE_DISK’ = 1, ‘UNKNOWN’ = 2)) — El tipo de volumen: JBOD o un único disco.max_data_part_size(UInt64) — El tamaño máximo de una parte que puede almacenarse en cualquiera de los discos del volumen.move_factor(Float32) — Cuando la cantidad de espacio disponible cae por debajo de este factor, los datos empiezan a moverse automáticamente al siguiente volumen, si lo hay (de forma predeterminada, 0.1).prefer_not_to_merge(UInt8) — No debe usar esta configuración. Deshabilita la fusión de partes en este volumen (esto es perjudicial y provoca una degradación del rendimiento).perform_ttl_move_on_insert(UInt8) — Deshabilita el TTL move al hacer INSERT de partes. De forma predeterminada (si está habilitado), si se inserta una parte que ya ha expirado según la regla de TTL move, se mueve inmediatamente al volumen o disco declarado en la regla de movimiento.load_balancing(Enum8(‘ROUND_ROBIN’ = 0, ‘LEAST_USED’ = 1)) — Política de balanceo entre discos:round_robinoleast_used.
Selección de volumen en INSERT
INSERT crea una nueva parte, ClickHouse elige un disco de destino
siguiendo las reglas que se indican a continuación, en este orden. Se aplica la primera regla que coincida y pueda
reservar espacio para la parte; de lo contrario (si la regla no se aplica, no hay espacio
libre o se supera max_data_part_size), la evaluación continúa con la siguiente
regla.
- Regla de movimiento TTL — si una cláusula
TTL <expr> TO VOLUME 'X'(oTO DISK 'X') ya ha vencido para las filas que se están insertando, yperform_ttl_move_on_insert = 1(valor predeterminado) en el volumen de destino TTL (paraTO DISK 'X', el volumen que contiene el discoX), la parte se escribe directamente en ese destino. Si la reserva allí falla, el insert pasa a los pasos 2–4; se registra una advertencia, peroINSERTno falla solo por este motivo. max_data_part_size— un volumen rechaza partes mayores que sumax_data_part_size. Esto se comprueba por volumen; no bloquea una reserva del paso 1TTL ... TO DISK 'X', que apunta directamente al disco.volume_priority— entre los volúmenes restantes, se elige el que tenga el valorvolume_prioritymás bajo. Los volúmenes sin un<volume_priority>explícito se ordenan según su posición en la configuración.load_balancing— una vez elegido un volumen, el disco dentro de ese volumen se selecciona según su política deload_balancing(round_robinoleast_used).
AnulaciónSi
min_free_disk_bytes_to_perform_insert o
min_free_disk_ratio_to_perform_insert es distinto de cero, se omite la precedencia anterior.
INSERT solo intenta usar el volumen con el valor volume_priority más bajo y lanza
NOT_ENOUGH_SPACE si ningún disco de ese volumen cumple el umbral. Los inserts en la base de datos system están exentos.perform_ttl_move_on_insert se lee del volumen de destino TTL,
no del volumen de origen. Para una regla TO DISK 'X', la opción se lee
del volumen que contiene el disco X. Configurarla en cualquier otro volumen de
la política no tiene ningún efecto en la ruta de inserción.volume_priority incluso cuando se aplique una regla de movimiento TTL
«ya vencida», establezca perform_ttl_move_on_insert = 0 en
el volumen de destino TTL (para TO DISK 'X', en el volumen que contiene
el disco X). La parte se escribe primero en el volumen de prioridad N y
después se mueve al destino TTL mediante una tarea de movimiento en segundo plano (observable a través de
system.moves). Consulte la
configuración perform_ttl_move_on_insert del motor MergeTree.