Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Data Warehouse Service/ Prácticas recomendadas / Desarrollo de datos/ Reducción de costos mediante la conmutación del almacenamiento de datos fríos y calientes en DWS
Actualización más reciente 2026-09-29 GMT+08:00

Reducción de costos mediante la conmutación del almacenamiento de datos fríos y calientes en DWS

Escenarios

En escenarios masivos de big data, con el crecimiento de los datos, el almacenamiento y el consumo de datos aumentan rápidamente. La necesidad de datos puede variar en diferentes períodos de tiempo, por lo tanto, los datos se gestionan de manera jerárquica, lo que mejora el rendimiento del análisis de datos y reduce los costos del servicio. En algunos escenarios de uso de datos, los datos se pueden clasificar en datos activos y datos fríos mediante el acceso a la frecuencia.

Los datos calientes y fríos se clasifican según la frecuencia de acceso a los datos y la frecuencia de actualización.

  • Datos calientes: Datos a los que se accede y se actualiza con frecuencia y que requieren una respuesta rápida.
  • Datos fríos: Datos que no se pueden actualizar o a los que rara vez se accede y que no requieren una respuesta rápida

Puede definir tablas de gestión de datos fríos y calientes para transferir los datos fríos que cumplan con las reglas especificadas a OBS para su almacenamiento. Los datos fríos y calientes se pueden determinar y migrar automáticamente por partición.

Figura 1 Gestión de datos calientes y fríos

Cuando los datos se escriben en las tablas de almacenamiento de columnas de DWS, los datos se almacenan primero en particiones calientes. Si hay una gran cantidad de datos en las particiones, los datos que cumplan con las reglas de datos fríos se pueden migrar manual o automáticamente a OBS para su almacenamiento. Los metadatos, las tablas de descripción y los índices de los datos fríos migrados se almacenan localmente para garantizar el rendimiento de lectura.

Las particiones calientes y frías se pueden transferir en función de las políticas LMT (hora de última modificación) y HPN (número de particiones calientes). LMT indica que la transferencia se realiza en función de la hora de la última actualización de la partición, y HPN indica que la transferencia se realiza en función del número de particiones calientes reservadas.

  • LMT: Transfiera los datos de particiones calientes que no se actualizaron en los últimos [day] días al tablespace de OBS como datos de particiones frías. [day] es un número entero que oscila entre 0 y 36500, en días.

    En la siguiente figura, day se establece en 2, lo que indica que las particiones modificadas en los últimos dos días se conservan como particiones calientes, mientras que el resto se conserva como particiones frías. Supongamos que la fecha actual es el 30 de abril. La operación de eliminación se realiza en la partición [4-26] el 30 de abril, y la operación de inserción se realiza en la partición [4-27] el 29 de abril. Por lo tanto, las particiones [4-26][4-27][4-29][4-30] se conservan como particiones calientes.

  • HPN: indica el número de particiones calientes que se reservarán. Las particiones se secuencian en función de los ID de secuencia de particiones. El ID de secuencia de una partición es un número de secuencia integrado generado en función de los valores de límite de partición y no se muestra. Para una partición de rango, un valor de límite mayor indica un ID de secuencia más grande. En una partición por lista, un valor máximo enumerado mayor en el límite de partición indica un ID de secuencia más grande. Durante la conmutación de datos fríos y calientes, los datos deben migrarse a OBS. HPN es un número entero que oscila entre 0 y 1600. Si HPN se establece en 0, no se reservan las particiones calientes. Durante una conmutación de datos fríos y calientes, todas las particiones con datos se convierten en particiones frías y se almacenan en OBS.

    En la siguiente figura, HPN se establece en 3, lo que indica que las últimas tres particiones con datos se conservan como particiones calientes y el resto como particiones frías durante la conmutación de particiones calientes y frías.

Restricciones

  • Admite operaciones DML en tablas frías y calientes, como INSERT, COPY, DELETE, UPDATE y SELECT.
  • Admite operaciones DCL, como la gestión de permisos en tablas frías y calientes.
  • Admite operaciones ANALYZE, VACUUM y MERGE INTO en tablas frías y calientes.
  • Admite tablas particionadas de almacenamiento en columnas comunes para actualizarlas a tablas de datos calientes y fríos.
  • Admite operaciones de actualización, expansión horizontal, reducción horizontal y redistribución en tablas con gestión de datos fríos y calientes habilitada.
  • Las versiones 8.3.0 y posteriores admiten la conversión mutua entre particiones frías y calientes. Las versiones anteriores a 8.3.0 solo admiten la conversión de datos calientes a datos fríos.
  • Si una tabla tiene particiones frías y calientes, la consulta se vuelve lenta porque los datos fríos se almacenan en OBS y la velocidad de lectura/escritura es inferior a la de las consultas locales.
  • Actualmente, las tablas frías y calientes solo admiten tablas particionadas de almacenamiento en columnas de la versión 2.0. Las tablas externas no admiten particiones frías y calientes.
  • Solo se pueden modificar las políticas de conmutación de datos fríos y calientes. El tablespace de datos fríos en tablas frías y calientes no se puede modificar.
  • Restricciones sobre la partición de tablas frías y calientes:
    • Los datos de las particiones frías no se pueden intercambiar.
    • MERGE PARTITION solo admite la fusión de particiones calientes-calientes y particiones frías-frías.
    • Las operaciones de partición, como ADD, MERGE y SPLIT, no se pueden realizar en un tablespace de OBS.
    • Los tablespaces de las particiones de tablas frías y calientes no se pueden especificar ni modificar durante la creación de la tabla.
  • La conmutación de datos fríos y calientes no se realiza inmediatamente cuando se cumplen las condiciones. La conmutación de datos solo se realiza después de que los usuarios invocan manualmente o a través de un programador el comando de conmutación. Actualmente, la hora de programación automática es 00:00 todos los días y se puede modificar.
  • Las tablas de datos fríos y calientes no admiten copia de respaldo y restauración físicos de grano fino. Solo se realiza una copia de respaldo de los datos calientes durante la copia de respaldo física. Los datos fríos en OBS no cambian. La copia de respaldo y la restauración no admiten sentencias de eliminación de archivos, como TRUNCATE TABLE y DROP TABLE.

Creación de un clúster

  1. Cree un clúster en la consola de DWS. Para obtener más información, consulte Creación de un clúster de DWS de almacenamiento y cómputo acoplados.

Using the gsql CLI Client to Connect to a Cluster

  1. Remotely log in to the Linux server where gsql is to be installed as user root, and run the following command in the Linux command window to download the gsql client:

    1
    wget https://obs.ap-southeast-1.myhuaweicloud.com/dws/download/dws_client_8.1.x_redhat_x64.zip --no-check-certificate
    

  2. Decompress the client.

    1
    cd <Path_for_storing_the_client> unzip dws_client_8.1.x_redhat_x64.zip
    

    Where,

    • <Path_for_storing_the_client>: Replace it with the actual path.
    • dws_client_8.1.x_redhat_x64.zip: This is the client tool package name of RedHat x64. Replace it with the actual name.

  3. Configure the DWS client.

    1
    source gsql_env.sh
    

    If the following information is displayed, the gsql client is successfully configured:

    1
    All things done.
    

  4. Use the gsql client to connect to a DWS database (using the password you defined when creating the cluster).

    1
    gsql -d gaussdb -p 8000 -h 192.168.0.86 -U dbadmin -W password -r
    

    If the following information is displayed, the connection succeeded:

    1
    gaussdb=>
    

Creación de tablas calientes y frías

Cree una tabla de gestión de datos fríos y calientes de almacenamiento en columnas lifecycle_table y configure el período de validez de los datos calientes LMT en 100 días.
1
2
3
4
5
6
7
8
9
CREATE TABLE lifecycle_table(i int, val text) WITH (ORIENTATION = COLUMN, storage_policy = 'LMT:100')
PARTITION BY RANGE (i)
(
PARTITION P1 VALUES LESS THAN(5),
PARTITION P2 VALUES LESS THAN(10),
PARTITION P3 VALUES LESS THAN(15),
PARTITION P8 VALUES LESS THAN(MAXVALUE)
)
ENABLE ROW MOVEMENT;

Conmutación de datos calientes y fríos

Conmute los datos de la partición caliente a la partición fría.
  • Conmutación automática: El programador activa automáticamente la conmutación a las 00:00 todos los días.

    Puede utilizar la función pg_obs_cold_refresh_time(table_name, time) para personalizar la hora de conmutación automática. Por ejemplo, configure la hora de activación automática a las 06:30 todas las mañanas.

    1
    2
    3
    4
    5
    SELECT * FROM pg_obs_cold_refresh_time('lifecycle_table', '06:30:00');
    pg_obs_cold_refresh_time
    --------------------------
     SUCCESS
    (1 row)
    
  • Manual

    Ejecute la sentencia ALTER TABLE para conmutar manualmente una sola tabla.

    1
    2
    ALTER TABLE lifecycle_table refresh storage;
    ALTER TABLE
    

    Utilice la función pg_refresh_storage() para conmutar todas las tablas calientes y frías por lotes.

    1
    2
    3
    4
    5
    SELECT pg_catalog.pg_refresh_storage();
     pg_refresh_storage
    --------------------
     (1,0)
    (1 row)
    

Convierta los datos de partición fría en datos de partición caliente. Esta función solo se admite en 8.3.0 o versiones posteriores.

  • Convierta todas las particiones frías en particiones calientes.
    1
    SELECT pg_catalog.reload_cold_partition('lifecycle_table');
    
  • Convierta una partición fría especificada en una partición caliente:
    1
    SELECT pg_catalog.reload_cold_partition('lifecycle_table', 'cold_partition_name');
    

Consulta de la distribución de datos en tablas calientes y frías

  • Consulte la distribución de datos en una sola tabla:
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM pg_catalog.pg_lifecycle_table_data_distribute('lifecycle_table');
    schemaname |    tablename    |   nodename   | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize
    ------------+-----------------+--------------+--------------+---------------+---------------------+-------------+--------------+--------------------
     public     | lifecycle_table | dn_6001_6002 | p1,p2,p3,p8  |               |                     | 96 KB       | 0 bytes      | 0 bytes
     public     | lifecycle_table | dn_6003_6004 | p1,p2,p3,p8  |               |                     | 96 KB       | 0 bytes      | 0 bytes
     public     | lifecycle_table | dn_6005_6006 | p1,p2,p3,p8  |               |                     | 96 KB       | 0 bytes      | 0 bytes
    (3 rows)
    
  • Consulte la distribución de datos en todas las tablas calientes y frías:
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM pg_catalog.pg_lifecycle_node_data_distribute();
    schemaname |    tablename    |   nodename   | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize
    ------------+-----------------+--------------+--------------+---------------+---------------------+-------------+--------------+--------------------
     public     | lifecycle_table | dn_6001_6002 | p1,p2,p3,p8  |               |                     |       98304 |            0 |                  0
     public     | lifecycle_table | dn_6003_6004 | p1,p2,p3,p8  |               |                     |       98304 |            0 |                  0
     public     | lifecycle_table | dn_6005_6006 | p1,p2,p3,p8  |               |                     |       98304 |            0 |                  0
    (3 rows)
    

Consulta de los tamaños de las tablas frías y calientes

  1. Consulte el tamaño de los datos fríos y calientes de una tabla.

    1
    SELECT * FROM pg_lifecycle_table_data_distribute ('lifecycle_table');
    

  2. Consulte el tamaño de los datos fríos y calientes de todas las tablas frías y calientes.

    1
    SELECT * FROM pg_lifecycle_node_data_distribute() ORDER BY tablename;
    

Eliminación de las particiones frías y calientes y los datos de partición.

  • Elimine datos de una partición especificada en una tabla fría y caliente.

    1
    ALTER TABLE lifecycle_table TRUNCATE PARTITION P1;
    
  • Elimine una partición especificada de una tabla fría y caliente.
    1
    ALTER TABLE lifecycle_table DROP PARTITION P2;