Sommaire

Index TTL Index:TTL

Les index TTL ont une durée de vie (Time To Live) limitée. Ils ne peuvent être appliqués que sur un seul champ, à condition qu’il soit de type date. Les index TTL servent à supprimer des documents dont la date a expiré. Ils sont utiles dans la gestion de logs, de sessions, de paniers ou toute autre chose ayant une durée de vie limitée. Pour les créer, la syntaxe est identique à celle d’un index standard, il suffira de préciser le nombre de secondes après lequel le document sera considéré comme ayant expiré.

La suppression des documents expirés est effectuée par le moniteur TTL, une tâche de fond qui s’exécute toutes les minutes. Il est possible de voir la valeur par défaut du paramètre ttlMonitorSleepSecs en utilisant la commande d’administration suivante :

db.adminCommand({getParameter:1, ttlMonitorSleepSecs: 1});

Nous vérifions bien le fait que, par défaut, notre moniteur est invoqué toutes les 60 secondes :

{ "ttlMonitorSleepSecs" : 60, "ok" : 1 }

Pour changer la valeur de ce paramètre et exécuter la tâche toutes les 30 secondes, il vous faudra modifier la valeur en utilisant setParameter :

db.adminCommand({setParameter:1, ttlMonitorSleepSecs: 30});

Si vous souhaitez voir s’afficher les logs du moniteur TTL, il vous faudra les activer à l’aide de la commande suivante :

db.setLogLevel(1, ...