我们运行一些分片集群和许多复制集。我们的客户不使用 TTL 索引。
如果我们禁用负责从具有 TTL 索引的集合中删除文档的后台线程,是否会有更好的性能?
mongod --setParameter ttlMonitorEnabled=false
我在邮件列表上发现了一个旧的 (2013) Time to live (TTL) slows down mongod post。我不知道这是边缘情况还是一般优化。
如果系统处于极端负载下或在中断/损坏调查期间,可用于停止 TTL 删除。单个全局(或每个数据库)设置比必须更新或删除所有 TTL 索引更容易。
除非在极端情况下,如果您不使用该功能,我看不到这会产生任何明显的影响,如果您正在使用该功能并遇到重负载(停止删除,直到负载基本消退),它旨在作为一种紧急措施。
由于您没有在任何地方使用 TTL,所有
MongoDB
要做的就是扫描您的索引以查找包含该expireAfterSeconds
字段的索引。您链接的示例本身就是一个边缘案例,没有多少人在数据库中拥有 25 万个索引,但即使在这种情况下,对如此小的集合的读取查询system.indexes
也不太可能使用足够的资源来导致您出现问题。它可能会出现在慢速查询日志中,但由于它基本上是一个空操作并且只需要一个读锁,所以对其他地方的影响很小。这就是理论,如果你想判断对你的特定用例的影响,分析你的系统,这样你就知道当前的性能是什么样的,然后在你关闭它之后分析它。如果它确实有影响,那么我相信工程师
MongoDB
会想了解它(以及您的用例),以便他们可以评估该功能的运行方式并查看您看到的行为是否有意为之。