mongodb系列~mongodb定時刪除資料
一 簡介:本文介紹建立自動刪除資料的TTL索引
二 目的 定時刪除資料
三 建立方法
db.collection.createIndex(keys, options)
options:
expireAfterSeconds 指定多少秒或者包含日期值的陣列
建立示例
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 },{backgroup: true})
四 何時失效
1 在指定的時間達到後失效,也即是索引欄位的值加上一個特定的秒數之後
2 如果索引欄位是一個數組,即索引欄位上存在著多個日期值,此時MongoDB取最小值加上失效時間(lowest())
3 對於非日期欄位或不包含日期陣列的索引欄位,文件不會失效
4 對於不包含索引欄位的文件,文件不會失效
五 刪除操作
1 mongod的一個後臺執行緒會讀取索引的值並將失效的文件從集合移除
2 當TTL執行緒被啟用後,可以從db.currentOp()或者從profile觀察到刪除操作
六 何時刪除
1 當基於後臺方式建立索引時,TTL執行緒能夠在索引建立期間開始刪除失效文件
2 當基於前臺方式建立索引時,TTL執行緒在索引建立完成後開始刪除失效文件
3 TTL索引的刪除不能完全保證失效期後一定刪除,存在一定延遲(取決於mongod的工作負載)
4 TTL刪除文件後臺執行緒每60s移除失效文件(因此可能存在已過失效期,文件還在的情形)
5 在副本集環境中,TTL後臺執行緒僅僅在主副本上工作,輔助副本上由複製操作實現
6 在使用TTL索引查詢時,與使用非TTL索引一樣
七 一些限制
1 不能基於已經存在索引的欄位建立TTL索引以及非日期欄位建立TTL索引,文件不會失效
2 TTL索引不支援基於多個欄位的複合索引
3 不支援定長集合
本文系轉載文章來源 https://blog.csdn.net/leshami/article/details/61195427