Tous les produits
Search
Centre de documentation

PolarDB:Utilisation du TTL

Dernière mise à jour :Aug 11, 2026

Cette rubrique décrit la fonctionnalité Time to Live (TTL), qui supprime automatiquement les données expirées dans PolarDB for MySQL.

Restrictions de version

PolarDB for MySQL prend en charge les versions de moteur de base de données suivantes :

  • MySQL 8.0.1 avec une version de révision 8.0.1.1.49.2 ou ultérieure.

  • MySQL 8.0.2 avec une version de révision 8.0.2.2.29.2 ou ultérieure.

Pour plus d'informations, consultez Description des versions du noyau.

Remarques

  • Vous ne pouvez pas définir de propriétés TTL sur les tables temporaires (locales ou globales).

  • Les tables dotées de propriétés TTL ne prennent pas en charge certaines fonctionnalités, telles que l'index secondaire global (GSI) et les tables partitionnées.

  • Une table possédant des propriétés TTL ne peut pas servir de table principale dans une contrainte de clé étrangère.

  • Les tables configurées avec le TTL ne peuvent pas contenir de déclencheurs.

  • La suppression des données expirées n'est pas immédiate. Elle dépend du cycle de planification de la tâche de nettoyage en arrière-plan.

  • Lors d'une restauration à partir d'une table de base de données ou d'une sauvegarde, définissez loose_innodb_enable_ttl_purge sur OFF pour désactiver la purge automatique des données basée sur le TTL. En effet, toutes les données risquent d'être considérées comme expirées après la restauration.

  • La colonne utilisée pour le TTL doit être de type TIMESTAMP ou DATETIME.

  • Les données supprimées par la fonctionnalité TTL ne génèrent pas d'enregistrements dans les journaux binaires. Par conséquent, si vous utilisez ces journaux pour la synchronisation des données et que le TTL est activé sur une table de la base source, des conflits de valeurs clés peuvent survenir dans la base secondaire.

Syntaxe

Utilisez l'instruction CREATE TABLE ou ALTER TABLE pour configurer la fonctionnalité TTL sur une table.

Créer une table avec des propriétés TTL

Plusieurs méthodes permettent de créer une table intégrant des propriétés TTL :

Dans l'exemple ci-dessous, une table nommée t1 est créée. La colonne created_at sert de référence Time to Live (TTL) et stocke la date de création des données. Définissez une durée de vie basée sur cette colonne created_at pour déterminer le moment où les données seront supprimées.

  • Définir la durée de vie de created_at à 100 secondes.

    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';
    Remarque

    L'expression TTL='created_at@100' fixe la durée de vie des lignes de la table à 100 secondes. Les lignes dépassant cette durée sont marquées comme expirées et seront supprimées ultérieurement.

  • Définir la durée de vie de created_at à 3 heures.

    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;
    Remarque
    • L'expression TTL ='created_at'+ INTERVAL 3 HOUR établit une durée de vie de 3 heures pour les lignes de la table. Les données expirées sont automatiquement supprimées.

    • La configuration du TTL accepte diverses unités temporelles telles que YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE et SECOND. Cette flexibilité permet de choisir l'unité la plus adaptée pour gérer efficacement vos données selon vos besoins.

Modifier les propriétés TTL d'une table

Plusieurs méthodes permettent de modifier les propriétés TTL d'une table :

Les exemples suivants illustrent la modification de la durée de vie associée à la colonne created_at de la table t1.

  • Passer la durée de vie de created_at à 10 000 secondes.

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

    Ce paramétrage garantit la suppression automatique des données 10 000 secondes après leur création, selon la valeur indiquée dans le champ created_at.

  • Ajuster la durée de vie de created_at à 3 jours.

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

    Cela fixe l'expiration des données à 3 jours après la valeur de la colonne created_at. Toute donnée vieille de plus de 3 jours sera automatiquement supprimée.

Effacer les propriétés TTL d'une table

ALTER TABLE t1 TTL = '';

Interroger les propriétés TTL d'une table

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';
Remarque

Cette instruction permet de vérifier si une table possède des propriétés TTL.

Description des paramètres

Les paramètres globaux suivants contrôlent le nettoyage des données expirées :

Remarque

Modifiez les paramètres globaux suivants depuis la console PolarDB afin de contrôler le nettoyage des données expirées.

Nom du paramètre

Description

loose_innodb_enable_ttl_purge

Indique s'il faut activer le nettoyage des données expirées par TTL.

Valeurs valides :

  • ON : active le nettoyage des données expirées par TTL.

  • OFF (par défaut) : désactive le nettoyage des données expirées par TTL.

Remarque

Accédez à la console pour activer la fonctionnalité de nettoyage des données expirées par TTL.

loose_innodb_ttl_min_interval

Durée minimale autorisée lors de la définition du délai d'expiration des données. La valeur par défaut est 100, exprimée en secondes.

loose_innodb_ttl_purge_thread

Nombre de threads dédiés au nettoyage des données expirées par TTL. Après avoir modifié ce paramètre, réinitialisez le paramètre innodb_enable_ttl_purge pour appliquer le changement. La valeur par défaut est 4.

loose_innodb_ttl_cluster_index_purge_batch_size

Si la colonne TTL spécifiée ne possède pas d'index, la clé primaire est analysée pour rechercher les données expirées. Le nombre de lignes analysées par lot via la clé primaire est de 10 000 par défaut.

loose_innodb_ttl_index_purge_batch_size

Lorsque la colonne TTL spécifiée est indexée, cet index est parcouru pour identifier les données expirées. Par défaut, 500 lignes sont analysées par lot sur cet index.

loose_innodb_ttl_purge_start_hour

Heure de début de la tâche de nettoyage TTL. La valeur par défaut est 0. La plage valide s'étend de 0 à 23. Cette valeur ne peut pas être supérieure à innodb_ttl_purge_end_hour.

loose_innodb_ttl_purge_end_hour

Heure de fin de la tâche de nettoyage TTL. La valeur par défaut est 0. La plage valide s'étend de 0 à 23. Cette valeur ne peut pas être inférieure à innodb_ttl_purge_start_hour.

loose_innodb_ttl_finished_job_expired_days

Contrôle la durée de conservation des données dans la table mysql. ttl_job_history. La valeur par défaut est 90 jours. La plage valide va de 1 à 365 jours.

Surveillance du TTL

Le système collecte périodiquement des informations d'exécution relatives au TTL. Consultez la table système mysql.ttl_job_history pour vérifier l'état d'avancement des tâches de nettoyage. Le tableau suivant détaille les champs de cette table :

Nom de la colonne

Description

job_id

Identifiant de la tâche de nettoyage TTL, correspondant généralement à un horodatage en millisecondes.

table_name

Nom de la table concernée par cette tâche TTL.

state

État d'exécution de la tâche TTL : en attente, en cours ou terminée.

start_time

Heure de démarrage de la tâche.

finished_time

Heure de fin de la tâche.

expire_time

Date d'expiration des données ciblées par cette tâche de nettoyage.

scan_cost

Temps écoulé pour analyser ce lot de données.

purge_cost

Durée nécessaire au nettoyage de ce lot.

purge_rows

Nombre de lignes supprimées lors de cette tâche TTL.