Todos os produtos
Search
Central de documentação

PolarDB:Uso do TTL

Última atualização: Jun 28, 2026

Este tópico descreve o recurso Time to Live (TTL), que exclui automaticamente dados expirados no PolarDB for MySQL.

Restrições de versão

O PolarDB for MySQL oferece suporte às seguintes versões do mecanismo de banco de dados:

  • MySQL 8.0.1 com versão de revisão 8.0.1.1.49.2 ou posterior.

  • MySQL 8.0.2 com versão de revisão 8.0.2.2.29.2 ou posterior.

Para obter mais informações, consulte Descrição da versão do kernel.

Observações

  • Não é possível definir propriedades de TTL em tabelas temporárias, incluindo tabelas temporárias locais e globais.

  • Tabelas com propriedades de TTL não oferecem suporte a recursos como índice secundário global (GSI) e tabela particionada.

  • Uma tabela com propriedades de TTL não pode ser referenciada por outras tabelas como tabela primária em uma restrição de chave estrangeira.

  • Tabelas com propriedades de TTL não podem conter triggers.

  • Dados expirados podem não ser excluídos imediatamente. O momento da exclusão depende do ciclo de agendamento da tarefa de limpeza em segundo plano.

  • Ao restaurar de uma tabela de banco de dados ou de um backup, defina loose_innodb_enable_ttl_purge como OFF para desativar o recurso de purga de dados expirados com base no TTL. Isso é necessário porque todos os dados podem estar expirados após a restauração.

  • Uma coluna com propriedades de TTL deve ser do tipo TIMESTAMP ou DATETIME.

  • Dados excluídos pelo recurso TTL não geram registros de log binário. Portanto, se você utilizar log binário para sincronização de dados e uma tabela no banco de dados source tiver o recurso TTL ativado, poderão ocorrer conflitos de valores-chave no banco de dados secundário.

Sintaxe

Utilize a instrução CREATE TABLE ou ALTER TABLE para configurar o recurso TTL em uma tabela.

Crie uma tabela com propriedades de TTL

Escolha um dos métodos abaixo para criar uma tabela com propriedades de TTL:

Nos exemplos a seguir, uma tabela chamada t1 é criada, onde created_at é a coluna de tempo de vida (TTL) que armazena o horário de criação dos dados. Defina um valor de TTL com base na coluna created_at para determinar quando os dados serão excluídos.

  • Defina o tempo de vida de created_at como 100 segundos.

    CREATE TABLE `t1` (
      `a` INT PRIMARY KEY,
      `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      KEY idx_created_at (`created_at`)
    )ENGINE=InnoDB  TTL='created_at@100';
    Nota

    A expressão TTL='created_at@100' define o tempo de vida das linhas da tabela como 100 segundos. Linhas mais antigas que essa duração são marcadas como expiradas e serão excluídas posteriormente.

  • Defina o tempo de vida de created_at como 3 horas.

    CREATE TABLE `t1` (
      `a` INT PRIMARY KEY,
      `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      KEY idx_created_at (`created_at`)
    )ENGINE=InnoDB  TTL='created_at' + INTERVAL 3 HOUR;
    Nota
    • A expressão TTL ='created_at'+ INTERVAL 3 HOUR define o tempo de vida das linhas da tabela como 3 horas. Os dados expirados são excluídos automaticamente.

    • A configuração de TTL aceita diversas unidades de tempo, como YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE e SECOND. Essa flexibilidade permite selecionar a unidade de tempo adequada para gerenciar dados de forma eficiente conforme suas necessidades.

Modifique as propriedades de TTL de uma tabela

Utilize um dos métodos a seguir para modificar as propriedades de TTL de uma tabela:

Os exemplos abaixo modificam o tempo de vida da coluna created_at na tabela t1.

  • Altere o tempo de vida de created_at para 10.000 segundos.

    ALTER TABLE `t1` TTL='created_at@10000';
    Nota

    Essa configuração garante que os dados sejam excluídos automaticamente 10.000 segundos após o horário de criação, com base no valor do campo created_at.

  • Altere o tempo de vida de created_at para 3 dias.

    ALTER TABLE `t1` TTL='created_at' + INTERVAL 3 DAY;
    Nota

    Isso define o tempo de expiração dos dados como 3 dias a partir do valor na coluna created_at. Dados com mais de 3 dias são excluídos automaticamente.

Limpar as propriedades de TTL de uma tabela

ALTER TABLE t1 TTL = '';

Consultar as propriedades de TTL de uma tabela

SHOW CREATE TABLE `t1` FULL;

CREATE TABLE `t1` (  
`a` INT PRIMARY KEY,  
`created_at` TIMESTAMP DEFAULT 
CURRENT_TIMESTAMP,  
 KEY idx_created_at (`created_at`)
)ENGINE=InnoDB  TTL='created_at@259200';
Nota

Use esta instrução para consultar se uma tabela possui propriedades de TTL.

Descrição dos parâmetros

Os seguintes parâmetros globais controlam a limpeza de dados expirados:

Nota

Modifique os parâmetros globais a seguir no console do PolarDB para controlar a limpeza de dados expirados.

Nome do parâmetro

Descrição

loose_innodb_enable_ttl_purge

Especifica se a limpeza de dados expirados por TTL deve ser ativada.

Valores válidos:

  • ON: ativa a limpeza de dados expirados por TTL.

  • OFF (padrão): desativa a limpeza de dados expirados por TTL.

Nota

Acesse o console para ativar o recurso de limpeza de dados expirados por TTL.

loose_innodb_ttl_min_interval

Tempo mínimo permitido ao definir o tempo de expiração dos dados. O valor padrão é 100. A unidade padrão é segundo.

loose_innodb_ttl_purge_thread

Número de threads para limpeza de dados expirados por TTL. Após modificar este parâmetro, redefina o parâmetro innodb_enable_ttl_purge para que a alteração tenha efeito. O valor padrão é 4.

loose_innodb_ttl_cluster_index_purge_batch_size

Se a coluna TTL especificada não possuir índice, a chave primária será verificada em busca de dados expirados por TTL. O número de linhas verificadas na chave primária por vez é 10.000 por padrão.

loose_innodb_ttl_index_purge_batch_size

Caso a coluna TTL especificada esteja indexada, esse índice será verificado em busca de dados expirados por TTL. O número de linhas verificadas nesse índice por vez é 500 por padrão.

loose_innodb_ttl_purge_start_hour

Horário de início da tarefa de limpeza de TTL. O valor padrão é 0. O intervalo válido é de 0 a 23. O valor não pode ser maior que innodb_ttl_purge_end_hour.

loose_innodb_ttl_purge_end_hour

Horário de término da tarefa de limpeza de TTL. O valor padrão é 0. O intervalo válido é de 0 a 23. O valor não pode ser menor que innodb_ttl_purge_start_hour.

loose_innodb_ttl_finished_job_expired_days

Controla o tempo de expiração dos dados na tabela mysql. ttl_job_history. O valor padrão é 90. O intervalo válido é de 1 a 365. A unidade padrão é dia.

Monitorar o TTL

O sistema coleta periodicamente informações de execução do TTL. Visualize o status de execução das tarefas de limpeza de TTL na tabela de sistema mysql.ttl_job_history. A tabela a seguir descreve os campos dessa tabela:

Nome da coluna

Descrição

job_id

ID da tarefa de limpeza de TTL, geralmente um timestamp em milissegundos.

table_name

Nome da tabela correspondente à tarefa executada por este job de TTL.

state

Status de execução da tarefa de TTL, incluindo pendente, em execução e concluído.

start_time

Horário de início da tarefa.

finished_time

Horário de conclusão da tarefa.

expire_time

Tempo de expiração dos dados limpos por esta tarefa de TTL.

scan_cost

Tempo consumido para verificar este lote.

purge_cost

Tempo consumido para limpar este lote.

purge_rows

Quantidade de linhas de dados limpas por esta tarefa de TTL.