Todos los productos
Search
Centro de documentos

MaxCompute:COMPACTION

Última actualización: Oct 10, 2026

La compactación combina todos los archivos de datos con base en una directiva específica para mejorar la eficiencia de las consultas.

Funciones

Las Delta Tables admiten escrituras incrementales casi en tiempo real y consultas de viaje en el tiempo. Las escrituras frecuentes de datos generan muchos archivos pequeños. Una directiva de combinación eficiente une estos archivos pequeños y elimina los datos duplicados. Este proceso mejora la eficiencia de E/S y reduce la carga del sistema de almacenamiento. Sin embargo, las compactaciones frecuentes pueden provocar una amplificación grave de escritura y fallas por conflictos.

Actualmente se admiten dos métodos de combinación de datos:

  • Clustering: combina los DeltaFiles confirmados en un solo archivo grande sin modificar los datos. El sistema ejecuta este proceso de forma periódica según el tamaño y la cantidad de archivos nuevos. No es necesario ejecutarlo manualmente. El clustering resuelve principalmente los problemas de eficiencia y estabilidad de E/S que causan los archivos pequeños.

  • Compaction: combina todos los archivos de datos con base en una directiva específica para generar nuevos BaseFiles. En las filas de datos que comparten la misma clave principal (PK), solo se almacena el estado más reciente; no se incluyen los estados históricos ni la información de las columnas del sistema. El objetivo principal de la compactación es mejorar la eficiencia de las consultas.

Sintaxis

alter table <table_name> [partition 
                          (<partition_key> = '<partition_value>' [, ...])
                         ] 
                         compact major;

Notas

  • Para ejecutar la compactación de forma manual, establezca la siguiente marca.

     set odps.merge.task.mode=service;
  • La compactación crea archivos nuevos. Esto mejora la eficiencia de las consultas, pero también incrementa los costos de almacenamiento. Elija una frecuencia de activación que equilibre estos factores según su escenario específico.

  • La compactación utiliza recursos de cómputo para leer y reescribir datos. Si usa el método de facturación pay-as-you-go, se le cobrará por la compactación. El costo se calcula de la siguiente manera: cantidad de datos analizados × 1 × precio unitario. Si usa el método de facturación de suscripción, la compactación consumirá la cuota de recursos de cómputo de su suscripción.

Ejemplos

--Create a table
create table mf_dt (pk bigint not null primary key, val bigint not null) 
             partitioned by (dd string, hh string) 
             tblproperties ("transactional"="true");
--Insert data            
insert into table mf_dt partition(dd='01', hh='01') values (1, 1), (2, 2);
insert into table mf_dt partition(dd='01', hh='01') values (2, 20), (3, 3);
insert into table mf_dt partition(dd='01', hh='01') values (3, 30), (4, 4);

--Run compaction. After the operation completes, you can still query historical data.
set odps.merge.task.mode=service;
alter table mf_dt partition(dd='01', hh='01') compact major;
select * from mf_dt timestamp as of get_latest_timestamp('mf_dt') where dd='01' and hh='01';
select * from mf_dt timestamp as of get_latest_timestamp('mf_dt', 2) where dd='01' and hh='01';