使用awaitdata = true和存储引擎wiredTiger跳过对tailable游标查询的初始扫描

时间:2015-06-11 08:58:26

标签: mongodb

我在单个主实例中使用mongodb oplog.$main集合甚至在我的应用中进行流式传输。当我的应用程序启动时,它会使用等待新数据的tailable游标查询oplog集合,但是mongo cpu spikes因为此查询扫描完整的oplog集合(在我的情况下是25GB)。来自mongodb文档:

  • 因为tailable游标不使用索引,所以查询的初始扫描可能很昂贵;但是,在最初耗尽光标之后,后续检索新添加的文档的成本很低。

有没有办法跳过查询的初始扫描?我只对添加到oplog的新文档感兴趣。 我尝试使用{oplogReplay: true}和过滤器{ts: {$gt: lastOplogTime}},但mongo CPU仍然高峰。我使用mongo 3.0.3与存储引擎wiredTiger。此外,使用sort({$natural: -1})不起作用,因为我从mongo得到此错误:

  • invalid sort specified for tailable cursor: { $natural: -1 }

看起来sort错误是由于使用wiredTiger

非常感谢任何帮助。谢谢!

0 个答案:

没有答案