Configure o ciclo de vida da tabela para liberar automaticamente dados inalterados, reduzindo custos de armazenamento enquanto mantém os dados atualizados.
Ciclo de vida
O MaxCompute libera automaticamente tabelas ou partições cujos dados permanecem inalterados além do ciclo de vida configurado. O sistema verifica diariamente se há dados expirados.
Se o LastModifiedTime de uma tabela não particionada exceder o ciclo de vida, o MaxCompute libera os dados e exclui a tabela.
-
Para tabelas particionadas, o MaxCompute libera partições individuais com base em seu LastModifiedTime. A tabela permanece após a liberação de sua última partição.
Para excluir automaticamente a tabela após a liberação de sua última partição, use um destes métodos:
NotaAs configurações no nível da tabela têm precedência sobre as configurações no nível do projeto.
-
Configurações no nível do projeto
-- Automatically delete the table after the last partition of the table is reclaimed. setproject odps.table.lifecycle.deletemeta.on.expiration=true; -- Retain the table by default after the last partition is reclaimed. setproject odps.table.lifecycle.deletemeta.on.expiration=false; -
Configurações no nível da tabela
--- Create a table and configure a lifecycle-related parameter to allow the table to be automatically deleted after the last partition of the table is reclaimed. CREATE TABLE <Table_Name>(id int, name string) partitioned BY (ds string) tblproperties ('lifecycle.deletemeta'='true') lifecycle 1; --- If a table exists, configure a lifecycle-related parameter to allow the table to be automatically deleted after the last partition of the table is reclaimed. ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='true'); -- Retain the table by default after the last partition is reclaimed. ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='false');
-
Observações de uso
As dependências de agendamento de tarefas não impedem a liberação de dados após a expiração do ciclo de vida.
O ciclo de vida se aplica a toda a tabela particionada. Não é possível configurar o ciclo de vida no nível da partição.
Os dados liberados permanecem na lixeira por um dia, por padrão. Depois disso, são excluídos permanentemente e não podem ser recuperados.
A liberação pode não ocorrer imediatamente após a expiração do ciclo de vida. O momento exato depende da disponibilidade do sistema.
Gravações, atualizações ou exclusões de dados atualizam o LastModifiedTime. Modificar o valor do ciclo de vida não atualiza o LastModifiedTime.
Configurar o ciclo de vida da tabela
Definir o ciclo de vida durante a criação da tabela
-
Sintaxe
-- Create a table. CREATE [external] TABLE [if not exists] <table_name> [(<col_name> <data_type> [default <default_value>] [comment <col_comment>], ...)] [comment <table_comment>] [partitioned BY (<col_name> <data_type> [comment <col_comment>], ...)] -- Configure the shuffle and sort properties of a clustered table that you want to create. [clustered BY | range clustered BY (<col_name> [, <col_name>, ...]) [sorted BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> buckets] -- Used only for external tables. [stored by StorageHandler] -- Used only for external tables. [with serdeproperties (options)] -- Used only for external tables. [location <osslocation>] -- Configure the lifecycle for the table. lifecycle <days>; -- Create a table based on an existing table and replicate the schema of the existing table. You can execute the CREATE TABLE statement to create a table based on an external table or an existing table of an external project that is used to implement the data lakehouse solution. create table [if not exists] <table_name> like <existing_table_name> [lifecycle <days>]; -
Parâmetros
table_name: obrigatório. O nome da tabela.
-
days: obrigatório. Duração do ciclo de vida como um número inteiro positivo. Unidade: dias.
NotaEsta seção aborda apenas os parâmetros relacionados ao ciclo de vida. Para mais informações sobre os parâmetros de criação de uma tabela, consulte Create a table.
-
Exemplo
-- Create the test_lifecycle table with the lifecycle of 100 days. CREATE TABLE test_lifecycle (key string) lifecycle 100;
Configurar ou modificar o ciclo de vida de uma tabela existente
Execute a seguinte instrução para modificar o ciclo de vida de uma tabela existente.
-
Sintaxe
ALTER TABLE <Table_Name> SET lifecycle <days>; -
Parâmetros
table_name: obrigatório. O nome da tabela.
days: obrigatório. Nova duração do ciclo de vida como um número inteiro positivo. Unidade: dias.
-
Exemplo
-- Change the lifecycle of the test_lifecycle table to 50 days. ALTER TABLE test_lifecycle set lifecycle 50;
Desativar ou restaurar o ciclo de vida da tabela
-
Sintaxe
ALTER TABLE <table_name> [<pt_spec>] {enable|disable} lifecycle; -
Parâmetros
table_name: obrigatório. O nome da tabela.
pt_spec: opcional. A partição de destino. Para partições de vários níveis, especifique todas as colunas de chave de partição no formato
partition_col1=col1_value1, partition_col2=col2_value1....-
enable e disable: restaura ou desativa o ciclo de vida de uma tabela ou partição.
NotaAntes de restaurar o ciclo de vida, verifique o valor do ciclo de vida configurado para evitar a liberação não intencional de dados.
Desativar o ciclo de vida no nível da tabela substitui a ativação no nível da partição. Se o ciclo de vida da tabela estiver desativado,
table disable lifecyclesubstituipt_spec enable lifecycle.Desativar o ciclo de vida preserva as configurações. Ainda é possível modificar os valores do ciclo de vida enquanto ele estiver desativado.
-
Exemplos
-
Exemplo 1: Desativar o ciclo de vida da tabela
trans.ALTER TABLE trans disable lifecycle; -
Exemplo 2: Desativar o ciclo de vida da partição dt='20141111' na tabela
trans.ALTER TABLE trans partition (dt='20141111') disable lifecycle;
-