Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

system.storage_policies

Descripción

Contiene información sobre las políticas de almacenamiento y los volúmenes definidos en la configuración del servidor.

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 nombres de todos los 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 se puede almacenar en cualquiera de los discos del volumen.
  • move_factor (Float32) — Cuando el espacio disponible es inferior a este factor, los datos comienzan a moverse automáticamente al siguiente volumen, si existe (de forma predeterminada, 0.1).
  • prefer_not_to_merge (UInt8) — No debe usar esta configuración. Deshabilita la combinación de partes en este volumen (es perjudicial y degrada el rendimiento).
  • perform_ttl_move_on_insert (UInt8) — Deshabilita el movimiento TTL al insertar una parte. De forma predeterminada (si está habilitado), si se inserta una parte que ya ha expirado según la regla de movimiento TTL, se mueve inmediatamente al volumen/disco definido en dicha regla.
  • load_balancing (Enum8('ROUND_ROBIN' = 0, 'LEAST_USED' = 1)) — Política de equilibrado de discos: round_robin o least_used.

Selección de volumen en INSERT

Cuando 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.

  1. Regla de movimiento TTL — si una cláusula TTL <expr> TO VOLUME 'X' (o TO DISK 'X') ya ha vencido para las filas que se están insertando, y perform_ttl_move_on_insert = 1 (valor predeterminado) en el volumen de destino TTL (para TO DISK 'X', el volumen que contiene el disco X), 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, pero INSERT no falla solo por este motivo.
  2. max_data_part_size — un volumen rechaza partes mayores que su max_data_part_size. Esto se comprueba por volumen; no bloquea una reserva del paso 1 TTL ... TO DISK 'X', que apunta directamente al disco.
  3. volume_priority — entre los volúmenes restantes, se elige el que tenga el valor volume_priority más bajo. Los volúmenes sin un <volume_priority> explícito se ordenan según su posición en la configuración.
  4. load_balancing — una vez elegido un volumen, el disco dentro de ese volumen se selecciona según su política de load_balancing (round_robin o least_used).

Para forzar que los inserts respeten 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.

Navigation