DBAtlas · Atlas d'exploitation des bases de données

Créer un index TTL, modifier son expiration et surveiller les suppressions TTL

MongoDBMaintenance

Commande

// Automatically delete documents lastSeen + 3600 s later:
db.oturum.createIndex({ lastSeen: 1 }, { expireAfterSeconds: 3600, name: "ttl_lastSeen" })
// Change the expiry without rebuilding the index:
db.runCommand({ collMod: "oturum", index: { name: "ttl_lastSeen", expireAfterSeconds: 7200 } })
// TTL indexes on the collection and their expiry:
db.oturum.getIndexes().filter(i => i.expireAfterSeconds !== undefined)
// TTL monitor statistics (deleted documents, passes):
db.serverStatus().metrics.ttl

Ce que fait la commande

Crée un index TTL qui supprime automatiquement les documents un temps donné après un champ de date, modifie l'expiration avec collMod sans reconstruction, et indique combien de documents le TTL monitor a supprimés.

Quand l'utiliser

Pour nettoyer des données à durée limitée comme les sessions, les logs ou les jetons temporaires sans écrire de job de suppression dans l'application, et pour comprendre pourquoi une collection en croissance ne diminue pas.

Attention

Le TTL monitor s'exécute toutes les 60 secondes par défaut ; la suppression n'est pas instantanée. Le champ doit être de type Date (ou un tableau de Dates) ; les dates en chaîne ou les documents sans le champ ne sont jamais supprimés. Raccourcir l'expiration entraîne la suppression d'un grand nombre de documents d'un coup, une charge d'écriture et un retard de réplication. Les suppressions n'ont lieu que sur le primaire et sont écrites dans l'oplog.

Ouvrir dans DBAtlas →

Voir aussi