Todos los productos
Search
Centro de documentos

PolarDB:Uso de TTL

Última actualización: Sep 05, 2026

Este tema describe la función Time to Live (TTL), que elimina automáticamente los datos caducados en PolarDB for MySQL.

Restricciones de versión

PolarDB for MySQL es compatible con las siguientes versiones del motor de base de datos:

  • MySQL 8.0.1 con la versión de revisión 8.0.1.1.49.2 o posterior.

  • MySQL 8.0.2 con la versión de revisión 8.0.2.2.29.2 o posterior.

Para obtener más información, consulte Kernel version description.

Notas

  • No es posible establecer propiedades TTL en tablas temporales, incluidas las tablas temporales locales y globales.

  • Las tablas con propiedades TTL no admiten funciones como global secondary index (GSI) ni partitioned table.

  • Otras tablas no pueden hacer referencia a una tabla con propiedades TTL como tabla principal dentro de una restricción de clave externa.

  • Una tabla con propiedades TTL no puede contener triggers.

  • Es posible que los datos caducados no se eliminen de inmediato. El momento de eliminación depende del ciclo de programación de la tarea de limpieza en segundo plano.

  • Al restaurar desde una tabla de base de datos o una copia de seguridad, establezca loose_innodb_enable_ttl_purge en OFF para deshabilitar la función que purga los datos caducados según el TTL. Esto se debe a que todos los datos podrían estar caducados después de la restauración.

  • Una columna con propiedades TTL debe ser de tipo TIMESTAMP o DATETIME.

  • Los datos que elimina la función TTL no generan registros de binary logging. Por lo tanto, si utiliza binary logging para la sincronización de datos y una tabla de la base de datos de origen tiene habilitada esta función, pueden surgir conflictos de valores de clave en la base de datos secundaria.

Sintaxis

Utilice la instrucción CREATE TABLE o ALTER TABLE para configurar la función TTL en una tabla.

Crear una tabla con propiedades TTL

A continuación se muestran los métodos disponibles para crear una tabla con propiedades TTL:

En este ejemplo se crea una tabla llamada t1, donde created_at es la columna de tiempo de vida (TTL) que almacena la hora de creación de los datos. Establezca un valor de TTL basado en la columna created_at para determinar cuándo se eliminan los datos.

  • Establezca el tiempo de vida de created_at en 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

    La expresión TTL='created_at@100' establece el tiempo de vida de las filas de la tabla en 100 segundos. Las filas que superan esta duración se marcan como caducadas y se eliminan posteriormente.

  • Establezca el tiempo de vida de created_at en 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
    • La expresión TTL ='created_at'+ INTERVAL 3 HOUR define el tiempo de vida de las filas de la tabla en 3 horas. Los datos caducados se eliminan automáticamente.

    • La configuración de TTL admite varias unidades de tiempo, como YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE y SECOND. Esta flexibilidad le permite elegir la unidad adecuada para gestionar los datos de forma eficiente según sus necesidades.

Modificar las propiedades TTL de una tabla

Utilice uno de los siguientes métodos para modificar las propiedades TTL de una tabla:

Los siguientes ejemplos modifican el tiempo de vida de la columna created_at en la tabla t1.

  • Modifique el tiempo de vida de created_at a 10 000 segundos.

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

    Esta configuración garantiza que los datos se eliminen automáticamente 10 000 segundos después de su hora de creación, calculada a partir del valor del campo created_at.

  • Modifique el tiempo de vida de created_at a 3 días.

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

    Esto establece el tiempo de caducidad de los datos en 3 días a partir del valor de la columna created_at. Los datos con más de 3 días de antigüedad se eliminan automáticamente.

Borrar las propiedades TTL de una tabla

ALTER TABLE t1 TTL = '';

Consultar las propiedades TTL de una tabla

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

Utilice esta instrucción para comprobar si una tabla tiene propiedades TTL.

Descripción de parámetros

Los siguientes parámetros globales controlan la limpieza de los datos caducados:

Nota

Modifique los siguientes parámetros globales en la consola de PolarDB para controlar la limpieza de los datos caducados.

Nombre del parámetro

Descripción

loose_innodb_enable_ttl_purge

Especifica si se habilita la limpieza de los datos caducados por TTL.

Valores válidos:

  • ON: habilita la limpieza de los datos caducados por TTL.

  • OFF (predeterminado): deshabilita la limpieza de los datos caducados por TTL.

Nota

Acceda a la consola para habilitar la función de limpieza de datos caducados por TTL.

loose_innodb_ttl_min_interval

Tiempo mínimo permitido al establecer el tiempo de caducidad de los datos. El valor predeterminado es 100 y la unidad predeterminada es el segundo.

loose_innodb_ttl_purge_thread

Número de hilos destinados a limpiar los datos caducados por TTL. Después de modificar este parámetro, restablezca el parámetro innodb_enable_ttl_purge para que el cambio surta efecto. El valor predeterminado es 4.

loose_innodb_ttl_cluster_index_purge_batch_size

Si la columna TTL especificada no tiene índice, se examina la clave principal en busca de datos caducados por TTL. De forma predeterminada, se examinan 10 000 filas de la clave principal cada vez.

loose_innodb_ttl_index_purge_batch_size

Si la columna TTL especificada cuenta con un índice, se examina dicho índice en busca de datos caducados por TTL. De forma predeterminada, se examinan 500 filas de este índice cada vez.

loose_innodb_ttl_purge_start_hour

Hora de inicio de la tarea de limpieza de TTL. El valor predeterminado es 0 y el rango válido va de 0 a 23. Este valor no puede ser mayor que innodb_ttl_purge_end_hour.

loose_innodb_ttl_purge_end_hour

Hora de finalización de la tarea de limpieza de TTL. El valor predeterminado es 0 y el rango válido va de 0 a 23. Este valor no puede ser menor que innodb_ttl_purge_start_hour.

loose_innodb_ttl_finished_job_expired_days

Controla el tiempo de caducidad de los datos en la tabla mysql. ttl_job_history. El valor predeterminado es 90 y el rango válido va de 1 a 365. La unidad predeterminada es el día.

Supervisión de TTL

El sistema recopila periódicamente información de ejecución de TTL. Consulte el estado de ejecución de las tareas de limpieza de TTL en la tabla del sistema mysql.ttl_job_history. En la siguiente tabla se describen los campos de esta tabla:

Nombre de la columna

Descripción

job_id

Identificador de la tarea de limpieza de TTL, que suele ser una marca de tiempo en milisegundos.

table_name

Nombre de la tabla asociada a la tarea que ejecuta este trabajo de TTL.

state

Estado de ejecución de la tarea de TTL, que incluye pending, executing y completed.

start_time

Hora de inicio de la tarea.

finished_time

Hora de finalización de la tarea.

expire_time

Tiempo de caducidad de los datos que limpia esta tarea de TTL.

scan_cost

Tiempo empleado en examinar este lote.

purge_cost

Tiempo empleado en limpiar este lote.

purge_rows

Número de filas de datos que limpia esta tarea de TTL.