有没有办法在MongoDB中捕获覆盖不良的查询?

外国的

我启用了notablescan参数来阻止未索引的数据库查询运行:

db.getSiblingDB("admin").runCommand( { setParameter: 1, notablescan: 1 })

这对于根本没有涉及的查询非常有用,但是我正在寻找一种方法来为覆盖不足的查询实现相同的行为。

用户集中的样本文档

{
    "_id" : ObjectId("53ea97c07567085b548b49c0"),
    "site_id": 1,
    "created_date" : ISODate("2014-08-12T22:40:00.746Z")
}

用户集合的样本集合索引

db.users.ensureIndex({'created_date':1})

样品查询

db.users.find({'user_id': 1}).sort({'created_date': -1})

预期结果

error: {
    "$err" : "Unable to execute query: error processing query: ns=collect.user limit=0 skip=0\nTree: site_id == 1.0\nSort: {}\nProj: {}\n No query solutions",
    "code" : 17007
}
马丁·康尼

我目前要做的是启用性能分析

$ mongo your_db
> db.setProfilingLevel(2)

这将分析所有查询,并存储执行所需时间的记录。

然后准备一份每晚的Cron作业,为您提供当天10个最慢的查询:

#!/bin/bash
now=$(date --iso-8601=date --utc -d "-1 day")
results=$(mongo your_db --eval "db.system.profile.find( { ts: {\$gte: ISODate('$now')} } ).sort({millis: -1}).limit(10).forEach(function(e){printjson(e);})"
)
host=$(hostname)
mail -s "Mongo Slow Queries for $now@$host" [email protected] << HERE
$results
HERE

因此,最后,您只需对出现的任何性能问题作出反应(并添加适当的索引)。并非所有集合都需要索引。

当然,您可以更改脚本以将其输出到文件而不是电子邮件中,还可以根据需要将其设置为每小时或每周运行一次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法覆盖 Mockito 中的 doReturn?

来自分类Dev

有没有办法从 MongoDB 中的查询返回特定的嵌套字段?

来自分类Dev

有没有办法丢弃空捕获物?

来自分类Dev

有没有办法覆盖`{}`对象?

来自分类Dev

有没有办法强制调用覆盖的方法?

来自分类Dev

有没有办法指定要覆盖的功能?

来自分类Dev

有没有办法覆盖unicode字符?

来自分类Dev

有没有办法在Python中覆盖现有(系统)类上的方法?

来自分类Dev

有没有办法在JavaScript中的for循环的每次迭代中捕获变量的值?

来自分类Dev

有没有办法向mongodb查询添加计数器?

来自分类Dev

有没有办法在Fish shell中回显/捕获多行消息?

来自分类Dev

有没有办法在C#中捕获Windows通知事件?

来自分类Dev

有没有办法捕获进程中的堆栈溢出?C ++ Linux

来自分类Dev

有没有办法在春季批处理中捕获SkipLimitExceedException

来自分类Dev

有没有办法捕获变量中dom元素的id?

来自分类Dev

有没有办法在Dart中捕获JavaScript异常?

来自分类Dev

有没有办法在Fish shell中回显/捕获多行消息?

来自分类Dev

有没有办法全局捕获 reactjs 中未处理的承诺异常?

来自分类Dev

有没有办法完全覆盖div中的复杂区域?

来自分类Dev

有没有办法从被dd覆盖的存储设备中恢复文件?

来自分类Dev

有没有办法避免 ajax 加载器覆盖 jquery-datatables 中的标题?

来自分类Dev

有没有办法覆盖下面代码中的变量

来自分类Dev

有没有办法在脚本中更新而不是覆盖 Dask YarnCluster 的 worker_env?

来自分类Dev

有没有办法动态定义查询字段?

来自分类Dev

有没有办法检查谁执行查询?

来自分类Dev

有没有办法查询FQL中在YESTERDAY创建的所有POST的计数?

来自分类Dev

使用 sql alchemy 查询有没有办法遍历表中的所有列

来自分类Dev

有没有办法在MongoDB中使用HQL?

来自分类Dev

有没有办法知道MongoDB中是否有更多文档可用于分页?

Related 相关文章

  1. 1

    有没有办法覆盖 Mockito 中的 doReturn?

  2. 2

    有没有办法从 MongoDB 中的查询返回特定的嵌套字段?

  3. 3

    有没有办法丢弃空捕获物?

  4. 4

    有没有办法覆盖`{}`对象?

  5. 5

    有没有办法强制调用覆盖的方法?

  6. 6

    有没有办法指定要覆盖的功能?

  7. 7

    有没有办法覆盖unicode字符?

  8. 8

    有没有办法在Python中覆盖现有(系统)类上的方法?

  9. 9

    有没有办法在JavaScript中的for循环的每次迭代中捕获变量的值?

  10. 10

    有没有办法向mongodb查询添加计数器?

  11. 11

    有没有办法在Fish shell中回显/捕获多行消息?

  12. 12

    有没有办法在C#中捕获Windows通知事件?

  13. 13

    有没有办法捕获进程中的堆栈溢出?C ++ Linux

  14. 14

    有没有办法在春季批处理中捕获SkipLimitExceedException

  15. 15

    有没有办法捕获变量中dom元素的id?

  16. 16

    有没有办法在Dart中捕获JavaScript异常?

  17. 17

    有没有办法在Fish shell中回显/捕获多行消息?

  18. 18

    有没有办法全局捕获 reactjs 中未处理的承诺异常?

  19. 19

    有没有办法完全覆盖div中的复杂区域?

  20. 20

    有没有办法从被dd覆盖的存储设备中恢复文件?

  21. 21

    有没有办法避免 ajax 加载器覆盖 jquery-datatables 中的标题?

  22. 22

    有没有办法覆盖下面代码中的变量

  23. 23

    有没有办法在脚本中更新而不是覆盖 Dask YarnCluster 的 worker_env?

  24. 24

    有没有办法动态定义查询字段?

  25. 25

    有没有办法检查谁执行查询?

  26. 26

    有没有办法查询FQL中在YESTERDAY创建的所有POST的计数?

  27. 27

    使用 sql alchemy 查询有没有办法遍历表中的所有列

  28. 28

    有没有办法在MongoDB中使用HQL?

  29. 29

    有没有办法知道MongoDB中是否有更多文档可用于分页?

热门标签

归档