我可以设置 MongoDB 查询的优先级,以便向用户请求生成批处理/存档操作吗?



我一直在使用Mongo的map/reduce一段时间了,自从2.0中的JS引擎取出锁以来,这阻止了其他操作(或者我相信)。我只是在 2.2 中试验新的聚合框架,并希望因为它只是读取它不需要锁定,但根据 db.currentOps() 它正在锁定。

因此,关于新的聚合框架(实际上对于任何MongoDB操作),我想知道是否可以指示某个操作的优先级,以便MongoDB可以智能地将低优先级操作(例如某些后台更新)生成为时间敏感的高优先级操作?

在这个文档中,你可以看到它说Map Reduce"允许大量的并发操作,但仅限于其他javascript执行。

因此,这意味着它已经在数据库上产生了操作。另外,这主要是限制在map/reduce是一个单线程的JavaScript操作。

但是,如果要确保没有锁定,则可以将Map Reduce的输出写入另一个数据库,然后将集合移动到原始数据库。

>use admin
>db.runCommand( {renameCollection: "mapreducedb.mycol", to: "appdb.mycol"} )

与聚合框架相同

编辑:不能用于聚合框架(从 2.2 开始),因为它没有 {{$out}} 运算符来写入另一个数据库。但是聚合操作仍然可以安全地在生产/主数据库上执行,因为这些操作的产生仍然会发生。

最新更新