MongoDB TTL过期检查的更改周期

fga*_*lan 2 mongodb

关于基于 TTL 索引的文档过期,MongoDB 文档说:

删除过期文档的后台任务每 60 秒运行一次。因此,在文档过期和后台任务运行之间的时间段内,文档可能会保留在集合中。

有没有办法通过配置更改该周期?或者它是硬连线在 mongod 代码中的?

Rad*_*nik 5

截至今天,这是不可能的,但已经在MongoDB JIRA中进行了跟踪:

  • SERVER-6712使 TTL 收集后台任务周期由用户定义(命令行选项)
  • SERVER-8616:添加 Tunable 到 TTL Collection 线程
  • SERVER-13937允许设置 TTL 监视器的窗口和间隔

还有一种解决方法 - 您可以手动关闭和打开 TTL 监视器:

db.adminCommand({setParameter: 1, ttlMonitorEnabled: false});
db.adminCommand({setParameter: 1, ttlMonitorEnabled: true});
Run Code Online (Sandbox Code Playgroud)

编辑:事实证明,有一面ttlMonitorSleepSecs旗帜。例如,这里提到了它,但官方文档中没有提到。

db.adminCommand({setParameter: 1, ttlMonitorSleepSecs: 60});
Run Code Online (Sandbox Code Playgroud)