Simulate slow query in mongodb?

前端 未结 3 1719
野性不改
野性不改 2021-02-15 23:35

Does MongoDb have anything like MySql\'s SELECT SLEEP(5); ?

I can see some internal sleep function that would pause the whole server, but I need to pause ju

相关标签:
3条回答
  • 2021-02-16 00:17

    From the mongo shell you can do sleep( ms ), eg sleep for 5 seconds before running a query:

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

    This doesn't pause the current query, but does pause execution on that connection for the specific number of milliseconds before continuing with the next statement (which is equivalent to a select sleep(5) in MySQL).

    0 讨论(0)
  • 2021-02-16 00:32

    You can use the $where operator to call sleep(). This should work in any language or ORM/ODM. For example, in Mongoid you could do:

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

    Tune the sleep value for the number of documents in the collection (it will delay on each one). This will do fairly horrible things to the DB server, so only use it for testing, and never (ever!) on a production server.

    0 讨论(0)
  • 2021-02-16 00:41

    You can use the $where operator as code_monkey_steve says, but be sure you do with mongo version >= 2.4. Before that version no javascript can be run on parallel on the same server. The sleep command is javascript, so it would apparently block other javascript queries you could be making.

    0 讨论(0)
提交回复
热议问题