DBAtlas · データベース運用アトラス

TTL インデックスを作成し、有効期限を変更し、TTL による削除を監視する

MongoDBメンテナンス

コマンド

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

概要

日付フィールドから一定時間後にドキュメントを自動削除する TTL インデックスを作成し、collMod で再構築なしに有効期限を変更し、TTL モニターが削除したドキュメント数を表示する。

使用する場面

セッション、ログ、一時トークンなどの期限付きデータを、アプリケーションに削除ジョブを書かずに整理する場合、および増大するコレクションが縮小しない理由を調べる場合。

注意

TTL モニターはデフォルトで 60 秒ごとに実行されるため、削除は即時ではない。フィールドは Date 型 (または Date の配列) である必要がある。文字列の日付やフィールドのないドキュメントは削除されない。有効期限を短縮すると、多数のドキュメントが一度に削除され、書き込み負荷とレプリケーション遅延が生じる。削除はプライマリでのみ行われ、oplog に書き込まれる。

DBAtlas で開く →

関連項目