mongodb - Mongo DB Running find 扫描冗余索引
问题描述
我有一个安装在 Linux 上的 Mongo DB 服务器 V4.0.0。我有一个名为“日志”的集合。
我有一个 Windows 服务,在 .NET Framework 4.7.2634.0 上运行,C# 驱动程序版本 2.5.0.0
所以,我有几个问题
- 如果不同的机器使用不同的 C# 驱动版本访问 Mongo DB 可以吗?
- 可能是因为 Mongo Compass 1.23.0 一直在收集我的收藏,因为我的性能很差,一旦我关闭它,Mongo DB 似乎有了显着改善。
- 对于由于超时而失败的查询,为什么我在 Mongo DB 日志中找不到完整的查找语法和解释?
- 我有几个索引。其中我有这两个
{ Section: 1, Headline: 1, Timestamp: -1 }
{ Section: 1, Severity: 1, Timestamp: -1 }
我在表演
db.logs.find({ Section: "Machine", Headline: /^Shutdown.*/ }
,在日志中,我看到planSummary: IXSCAN { Section: 1, Headline: 1, Timestamp: -1 },
IXSCAN { Section: 1, Severity: 1, Timestamp: -1 }
这很奇怪,如果我只过滤第一个索引中包含的字段(标题字段),为什么它还要扫描第二个索引(具有严重性字段的那个)?
解决方案
如果不同的机器使用不同的 C# 驱动版本访问 Mongo DB 可以吗?
是的。
可能是因为 Mongo Compass 1.23.0 一直在收集我的收藏,因为我的性能很差,一旦我关闭它,Mongo DB 似乎有了显着改善。
启用完整查询日志记录以验证“不断聚合我的集合”假设。假设这是实际发生的情况,请使用连接元数据来确定哪个驱动程序正在发出这些查询。
对于由于超时而失败的查询,为什么我在 Mongo DB 日志中找不到完整的查找语法和解释?
您尚未启用查询日志记录,或者查询没有发送到服务器,或者您在日志中错过了它,或者您查看了错误的日志。
推荐阅读
- python - 如何从仅影响一个类的内置函数中导入对象?
- swift - 自定义 Swiftlint 规则,使 Xcode 警告(如折旧)成为错误
- c# - 如何在 asp.net 中使用本地化?
- ruby-on-rails - rails openssl 来自代码和终端的不同加密结果
- c++ - 如何判断 `constexpr` 是否在编译时评估(无需手动检查)
- swift - Swift - 使用具体实现时类型不符合协议
- spring - 无法启动嵌入式 Tomcat NoClassDefFoundError DispatcherServletPath
- javascript - 如何访问javascript数组中的项目“橙子”
- reactjs - 如何在项目中全局保存任何值,以便我们可以从 react.js 中的任何位置访问它
- php - 防止 Web 应用程序中 PHP 文件的直接 URL 访问