Todos los productos
Search
Centro de documentos

Hologres:Tiered storage

Última actualización: Sep 18, 2026

A partir de la versión V1.3.37, Hologres es compatible con el almacenamiento por niveles de datos calientes y fríos para ayudarle a gestionar los niveles de datos de forma eficaz. Este tema describe cómo usar el almacenamiento por niveles.

Introducción a la función

Hologres ofrece dos tipos de almacenamiento de datos: Standard e Infrequent Access.

  • El almacenamiento Standard utiliza almacenamiento caliente basado exclusivamente en SSD. Es el tipo de almacenamiento predeterminado en Hologres y cumple con los requisitos de acceso a datos de baja latencia y alto rendimiento. Para la mayoría de los escenarios, el almacenamiento Standard es la opción más eficaz y rentable. En este documento se le denomina almacenamiento caliente.

  • El almacenamiento Infrequent Access utiliza almacenamiento frío basado exclusivamente en HDD. Proporciona un almacenamiento de bajo costo para datos a los que se accede con poca frecuencia. Es adecuado para conjuntos de datos muy grandes donde la sensibilidad a la latencia es baja o el acceso es poco frecuente. En este documento se le denomina almacenamiento frío.

  • Para las instancias primarias-secundarias, se recomienda actualizar a la versión V1.3.55 o posterior para habilitar el almacenamiento frío.

Hologres también admite el almacenamiento por niveles a nivel de tabla. Puede establecer dinámicamente el medio de almacenamiento para las tablas secundarias de partición mediante la función CREATE PARTITION TABLE.

A partir de la versión V2.1, Hologres admite la aceleración de caché basada en SSD para mejorar la velocidad de acceso al almacenamiento frío. El espacio de caché se asigna de forma predeterminada y la aceleración de caché se habilita automáticamente. Se espera que el rendimiento de acceso mejere más del doble.

Requisitos previos

  • El almacenamiento por niveles de datos calientes y fríos solo es compatible con Hologres V1.3.37 y versiones posteriores. Si su instancia ejecuta una versión anterior, consulte Common upgrade preparation errors o únase al grupo de DingTalk de Hologres para obtener asistencia. Para obtener más información, consulte How do I get more online support?.

  • En las instancias de suscripción que ejecutan versiones anteriores, la cuota de almacenamiento Infrequent Access se establece en 0 GB de forma predeterminada después de actualizar a V1.3.37.

Notas

  • El almacenamiento de las tablas de Hologres se compone de Data y Meta. Data almacena los datos del usuario, mientras que Meta guarda los metadatos de la tabla. En el almacenamiento por niveles, solo puede configurar el medio de almacenamiento para la parte de Data. Por motivos de rendimiento, Meta siempre se almacena en el almacenamiento caliente. Por lo tanto, aunque configure la directiva de almacenamiento de una tabla como almacenamiento frío, esta seguirá consumiendo una pequeña cantidad de almacenamiento caliente y generará cargos menores por dicho concepto.

  • Para evitar afectar sus servicios, las tareas de migración de datos de almacenamiento caliente a frío se ejecutan con prioridad baja. Después de cambiar la directiva de almacenamiento de los datos (Data) de una tabla, el cambio no surte efecto de inmediato. Hologres realiza la migración de datos de forma asíncrona en segundo plano. De manera predeterminada, la migración comienza a las 00:00 (medianoche) del mismo día. A partir de V2.2, puede personalizar la hora de migración. Para obtener más detalles, consulte Dynamic partition management.

  • Cuando se escriben datos nuevos en una tabla de almacenamiento frío, primero se registran en el almacenamiento caliente. Posteriormente, una tarea en segundo plano los migra de forma asíncrona al almacenamiento frío, lo cual genera algunos cargos por almacenamiento caliente.

  • Debido a las limitaciones del tiempo de búsqueda en disco, no se recomienda usar tablas de almacenamiento frío para escenarios de consultas puntuales (como tablas de dimensiones de Flink o escenarios de servicio). Las tablas de almacenamiento frío admiten un throughput de lectura dos órdenes de magnitud menor que las tablas de almacenamiento caliente.

  • No se recomienda configurar las tablas orientadas a filas en almacenamiento frío.

  • Durante la conversión por lotes de datos de almacenamiento caliente a frío, se abren todos los elementos tablet de la tabla, lo que aumenta el uso de memoria. Se recomienda convertir no más de 200 tablas a la vez.

Crear tablas de almacenamiento por niveles

Al crear una tabla, especifique la directiva de almacenamiento de datos estableciendo el parámetro storage_mode en SET_TABLE_PROPERTY. Para obtener más detalles, consulte CREATE TABLE.

Tablas no particionadas

Establecer la directiva de almacenamiento para tablas no particionadas

Para las tablas no particionadas, utilice SET_TABLE_PROPERTY para establecer la directiva de almacenamiento. Las opciones compatibles son:

  • hot (almacenamiento caliente).

  • cold (almacenamiento frío).

Por ejemplo, para configurar la tabla tbl1 en almacenamiento frío, utilice el siguiente código:

-- Specify cold storage when creating the table
BEGIN;
CREATE TABLE tbl1 (
 "id" int NOT NULL,
 "name" text NOT NULL
);
CALL set_table_property('tbl1', 'storage_mode', 'cold');
COMMIT;

Cambiar el medio de almacenamiento para tablas no particionadas

Puede cambiar el medio de almacenamiento después de crear la tabla. Por ejemplo, si cambia la tabla tbl1 a almacenamiento caliente, se activa una migración de datos asíncrona hacia dicho almacenamiento. Ejemplo:

-- Change storage medium to hot storage after table creation
CALL set_table_property('tbl1', 'storage_mode', 'hot');

Tablas particionadas

Establecer la directiva de almacenamiento para tablas particionadas

Las tablas particionadas también utilizan SET_TABLE_PROPERTY para establecer las directivas de almacenamiento. De forma predeterminada, las particiones secundarias heredan la propiedad de almacenamiento de la tabla principal, pero puede configurar directivas de almacenamiento distintas para las tablas principales y secundarias. Las opciones compatibles son:

  • hot (almacenamiento caliente).

  • cold (almacenamiento frío).

Por ejemplo, si configura la tabla de partición principal (tbl2) en almacenamiento frío, todas sus particiones secundarias (como tbl2_v1) utilizarán almacenamiento frío. Ejemplo de código:

-- Specify cold storage when creating the table
BEGIN;
CREATE TABLE tbl2(
  c1 text NOT NULL,
  c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl2', 'storage_mode', 'cold');
CREATE TABLE tbl2_v1 PARTITION OF tbl2 FOR VALUES IN ('v1');
COMMIT;

Modificar el almacenamiento para tablas particionadas

Puede cambiar el medio de almacenamiento después de crear la tabla. Por ejemplo, si cambia la tabla de partición principal tbl2 a almacenamiento caliente, se activa la migración asíncrona de todas sus particiones secundarias hacia dicho almacenamiento. Ejemplo:

-- Change storage policy to hot storage after table creation
CALL set_table_property('tbl2', 'storage_mode', 'hot');

Para configurar una partición secundaria específica en almacenamiento frío, modifique su propiedad storage_mode. Ejemplo:

-- Create multiple child partitions

CREATE TABLE tbl2_v2 PARTITION OF tbl2 FOR VALUES IN ('v2');
CREATE TABLE tbl2_v3 PARTITION OF tbl2 FOR VALUES IN ('v3');

-- Query table properties; they currently inherit the parent's hot storage setting

SELECT * FROM hg_table_storage_status('public', 'tbl2');

-- Set a child partition to cold storage

CALL set_table_property('tbl2_v3', 'storage_mode', 'cold');
                

Gestionar dinámicamente el medio de almacenamiento para tablas particionadas

Para gestionar de forma inteligente los medios de almacenamiento de las particiones, utilice el particionamiento dinámico y defina reglas de transformación de datos de almacenamiento caliente a frío. Esto permite implementar un almacenamiento por niveles inteligente que equilibra el costo y el rendimiento de manera eficaz. Para obtener más información sobre la gestión dinámica de particiones, consulte Dynamic partition management.

Consultar el estado del medio de almacenamiento

Llame a la función hg_table_storage_status para comprobar el estado de almacenamiento de una tabla. La función hg_table_storage_status muestra únicamente el tamaño de almacenamiento de datos y excluye el tamaño de almacenamiento de Meta. Uso:

SELECT * FROM hg_table_storage_status('<schema_name>', '<table_name>');

Parámetro

Descripción

schema_name

Nombre del esquema de la tabla.

table_name

Nombre de la tabla.

Se devuelve el siguiente resultado:

Columna

Contenido

table_name

  • Tabla no particionada: nombre de la tabla.

  • Tabla de partición principal: nombres de las particiones secundarias (varias filas, una por cada partición secundaria).

  • Tabla de partición secundaria: nombre de la partición secundaria.

hot_size

Tamaño del almacenamiento caliente en bytes.

cold_size

Tamaño del almacenamiento frío en bytes.

status

Estado:

  • hot: los datos están en almacenamiento caliente.

  • cold: los datos están en almacenamiento frío.

  • transferring: los datos se están migrando.

Ejemplos:

-- Non-partitioned table
SELECT * FROM hg_table_storage_status('public', 'tbl1');-- Returns size in bytes
 table_name | hot_size |   cold_size   | status
------------+----------+---------------+--------
 tbl1       |  145643  |      3685     | transferring

-- Parent partition table
SELECT * FROM hg_table_storage_status('public', 'tbl2');-- Returns size in bytes
   table_name    | hot_size | cold_size | status
-----------------+----------+-----------+--------
 tbl2_2022062222 |        0 |         0 | hot
 tbl2_2022062221 |     1125 |         0 | hot
 tbl2_2022062220 |     1245 |         0 | hot
 tbl2_2022062219 |     1358 |         0 | hot
 tbl2_2022062218 |        0 |      1875 | cold
 tbl2_2022062217 |        0 |      1143 | cold
 tbl2_2022062216 |        0 |      1299 | cold

Consultar la frecuencia de acceso a las tablas

A partir de V1.3.37, Hologres proporciona la tabla de registros del sistema hologres.hg_table_info para recopilar estadísticas diarias sobre las tablas dentro de una instancia. Esto le ayuda a analizar el uso de las tablas y optimizarlo según corresponda. Para obtener más detalles, consulte View and analyze table statistics. Puede consultar esta tabla para obtener el volumen de almacenamiento caliente o frío, la frecuencia de acceso a las tablas y la frecuencia de acceso a las particiones, con el fin de decidir si convierte los datos de almacenamiento caliente a frío. Consultas de ejemplo:

Tablas no particionadas

SELECT a.table_name,
       (a.total_read_count - b.total_read_count) AS read_count,
       (a.total_write_count - b.total_write_count) AS write_count,
       a.hot_storage_size
FROM (SELECT * FROM hologres.hg_table_info
      WHERE type='TABLE' AND collect_time::DATE = CURRENT_DATE - interval '1 day') a
JOIN
    (SELECT * FROM hologres.hg_table_info
    WHERE type='TABLE' AND collect_time::DATE = CURRENT_DATE - interval '${days} day') b
ON a.table_name = b.table_name
ORDER BY hot_storage_size DESC;

Tablas particionadas

Consulte todas las particiones:

SELECT parent_table_name,count(*) AS partition_cnt, 
       sum(hot_storage_size)/1024/1024/1024 AS hot_size_gb 
FROM hologres.hg_table_info
WHERE type = 'PARTITION' AND collect_time::DATE = CURRENT_DATE - interval '1 day'
GROUP BY parent_table_name
ORDER BY hot_size_gb DESC;

Consulte la frecuencia de acceso para particiones específicas:

SELECT a.table_name,
      (a.total_read_count - b.total_read_count) as read_count,
      (a.total_write_count - b.total_write_count) as write_count,
       a.hot_storage_size
FROM (SELECT * FROM hologres.hg_table_info
      WHERE type = 'PARTITION'
      AND parent_table_name = '${p_table_name}'
      AND collect_time::DATE = CURRENT_DATE - interval '1 day') a
JOIN
     (SELECT * FROM hologres.hg_table_info
     WHERE type = 'PARTITION'
     AND parent_table_name = '${p_table_name}'
     AND collect_time::DATE = CURRENT_DATE - interval '${days} day') b
ON a.table_name = b.table_name
ORDER BY table_name DESC;