模拟mongodb中的慢查询?

时间:2012-10-16 06:00:32

标签: mongodb

MongoDb有类似MySql的SELECT SLEEP(5);吗?

我可以看到一些暂停整个服务器的内部睡眠功能,但我只需暂停当前查询。

免责声明:仅用于测试目的

4 个答案:

答案 0 :(得分:6)

您可以使用$where operator来调用sleep()。这应该适用于任何语言或ORM / ODM。例如,在Mongoid中你可以这样做:

Model.where( :$where => "sleep(100) || true" ).count

调整集合中文档数量的睡眠值(每个文档都会延迟)。这会给数据库服务器带来相当可怕的事情,因此只能用于测试,而且永远不会(永远!)在生产服务器上。

答案 1 :(得分:3)

您可以code_monkey_steve说明使用$where运算符,但请务必使用mongo version >= 2.4。在该版本之前,没有javascript可以在同一台服务器上并行运行。 sleep命令是javascript,因此它显然会阻止您可能正在进行的其他JavaScript查询。

答案 2 :(得分:1)

你可以从 mongo Shell 运行:

db.collection_name.find( { $where: function() { return sleep(100) || true }}).pretty();

经过测试和工作。

答案 3 :(得分:0)

mongo shell中你可以做睡眠(ms),例如在运行查询之前休眠5秒:

> sleep(5000); db.collection.find(..);

这不会暂停当前查询,但会在继续下一个语句(相当于MySQL中的select sleep(5))之前暂停在该连接上执行特定的毫秒数。