DBAtlas · Atlas für Datenbankbetrieb

TTL-Index anlegen, Ablaufzeit ändern und TTL-Löschungen überwachen

MongoDBWartung

Befehl

// 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

Was es tut

Legt einen TTL-Index an, der Dokumente eine festgelegte Zeit nach einem Datumsfeld automatisch löscht, ändert die Ablaufzeit mit collMod ohne Rebuild und zeigt, wie viele Dokumente der TTL-Monitor gelöscht hat.

Wann einsetzen

Um zeitgebundene Daten wie Sessions, Logs oder temporäre Tokens ohne Lösch-Job in der Anwendung zu bereinigen und um zu untersuchen, warum eine wachsende Collection nicht schrumpft.

Vorsicht

Der TTL-Monitor läuft standardmäßig alle 60 Sekunden; das Löschen erfolgt nicht sofort. Das Feld muss vom Typ Date (oder ein Array von Dates) sein; Datumsangaben als String oder Dokumente ohne das Feld werden nie gelöscht. Eine verkürzte Ablaufzeit führt dazu, dass viele Dokumente auf einmal gelöscht werden, mit Schreiblast und Replikationsverzögerung. Löschungen erfolgen nur auf dem Primary und werden ins Oplog geschrieben.

In DBAtlas öffnen →

Verwandte Einträge