Todos os produtos
Search
Central de documentação

PolarDB:Uso do TTL

Última atualização: Nov 03, 2026

Este tópico descreve o recurso de limpeza de dados expirados do PolarDB for MySQL.

Restrições de versão

O PolarDB for MySQL é compatível com as seguintes versões do mecanismo de banco de dados:

  • O MySQL 8.0.1 requer a versão secundária 8.0.1.1.49.2 ou posterior.

  • O MySQL 8.0.2 requer a versão secundária 8.0.2.2.29.2 ou posterior.

Para visualizar a versão do kernel, consulte Engine versions.

Notas de uso

  • Não é possível configurar propriedades de tempo de vida (TTL) em tabelas temporárias, incluindo tabelas temporárias locais e globais.

  • Tabelas com propriedades de TTL não são compatíveis com Global Secondary Indexes (GSIs).

  • 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.

  • Uma tabela com propriedades de TTL não pode conter triggers.

  • Nem todos os dados expirados são excluídos imediatamente. O momento da exclusão dos dados expirados depende do ciclo de agendamento da tarefa de limpeza em segundo plano.

  • Ao restaurar bancos de dados e tabelas ou restaurar a partir de backups, defina loose_innodb_enable_ttl_purge como OFF para desativar a limpeza de dados expirados por TTL. Isso ocorre porque todos os dados podem ter expirado após a restauração.

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

  • Os dados limpos pelo TTL não são registrados no binary log. Quando você utiliza o binary log para sincronização de dados e uma tabela no banco de dados source tem o TTL ativado, podem ocorrer conflitos de valores de chave durante a sincronização dos dados para o banco de dados secundário.

Sintaxe

Use as instruções CREATE TABLE ou ALTER TABLE para configurar o TTL de uma tabela.

Crie uma tabela com propriedades de TTL

Use um dos seguintes métodos para criar uma tabela com propriedades de TTL:

Uma tabela chamada t1 é criada com created_at especificado como sua coluna de TTL, que representa o horário de criação dos dados. Defina o TTL de created_at para determinar se os dados serão excluídos.

  • Defina o TTL máximo 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 configuração TTL='created_at@100' define o TTL máximo das linhas na tabela como 100 segundos. Os dados expirados que excedem essa duração são excluídos posteriormente.

  • Defina o TTL máximo 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
    • Ao definir TTL ='created_at'+ INTERVAL 3 HOUR, você define o TTL máximo dos dados na tabela como 3 horas. Os dados expirados que excedem essa duração são excluídos automaticamente.

    • Essa configuração de TTL é compatível com várias unidades de tempo, incluindo YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE e SECOND. Essa flexibilidade permite que você selecione uma unidade de tempo adequada para o gerenciamento e a manutenção eficientes dos dados, de acordo com os seus requisitos.

Modifique as propriedades de TTL de uma tabela

Use um dos seguintes métodos para modificar as propriedades de TTL de uma tabela:

Na tabela t1, modifique o TTL de created_at para determinar se os dados serão excluídos.

  • Defina o TTL máximo de created_at como 10.000 segundos.

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

    Definir o TTL do campo created_at como 10.000 segundos torna os dados válidos por 10.000 segundos após o horário de criação. Os dados com mais de 10.000 segundos são excluídos automaticamente.

  • Defina o TTL máximo de created_at como 3 dias.

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

    Use o carimbo de data e hora created_at nas propriedades de TTL e adicione um período de validade de 3 dias para definir a expiração dos dados em 3 dias. Isso garante que os dados não excedam 3 dias após a criação. Os dados com mais de 3 dias são excluídos automaticamente.

Limpe as propriedades de TTL de uma tabela

ALTER TABLE t1 TTL = '';

Consulte 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 a instrução anterior para consultar se uma tabela contém informações de TTL.

Parâmetros

Os seguintes parâmetros globais também são adicionados para controlar a limpeza de dados expirados por TTL:

Nota

O PolarDB permite que você modifique os seguintes parâmetros globais no console para controlar a limpeza de dados expirados por TTL.

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

Você deve ativar a limpeza de dados expirados por TTL no console.

loose_innodb_ttl_min_interval

A duração mínima permitida ao definir um tempo de expiração de dados. O valor padrão é 100. A unidade padrão é o segundo.

loose_innodb_ttl_purge_thread

O número de threads para limpar dados expirados por TTL. Após a modificação, 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 de TTL especificada não tiver índice, a chave primária será verificada durante a varredura de dados expirados por TTL. O número padrão de linhas de chave primária verificadas por vez é 10.000.

loose_innodb_ttl_index_purge_batch_size

Se a coluna de TTL especificada tiver um índice, o índice será verificado durante a varredura de dados expirados por TTL. O número padrão de linhas de índice verificadas por vez é 500.

loose_innodb_ttl_purge_start_hour

O horário de início da tarefa de limpeza de TTL. O valor padrão é 0. O valor varia de 0 a 23 e não pode exceder innodb_ttl_purge_end_hour.

loose_innodb_ttl_purge_end_hour

O horário de término da tarefa de limpeza de TTL. O valor padrão é 0. O valor varia de 0 a 23 e não pode ser inferior a 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 valor varia de 1 a 365. A unidade padrão é o dia.

Monitore o TTL

O sistema coleta periodicamente informações de tempo de execução do TTL e fornece uma tabela do sistema que mostra o status de execução detalhado das tarefas de limpeza de TTL. A tabela a seguir descreve os campos na tabela mysql.ttl_job_history:

Nome da coluna

Descrição

job_id

O ID da tarefa de limpeza de TTL, que geralmente é um carimbo de data e hora em milissegundos.

table_name

O nome da tabela associada a esta tarefa de TTL.

state

O status de execução da tarefa de TTL: pendente, em execução ou concluída.

start_time

O horário de início da tarefa.

finished_time

O horário de conclusão da tarefa.

expire_time

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

scan_cost

O tempo necessário para verificar este lote.

purge_cost

O tempo necessário para limpar este lote.

purge_rows

O número de linhas de dados limpas por esta tarefa de TTL.