Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

监控并改进慢速查询

在此页面上

  • 慢查询的常见原因
  • 必需的访问权限
  • 配置慢速查询阈值
  • 索引注意事项
  • 访问性能优化顾问
  • 索引建议
  • 创建建议的索引

仅适用于 M10+ 集群和无服务器实例

性能优化顾问会监控 MongoDB 认为其速度缓慢的查询,并建议使用新索引来提高查询性能。慢查询的阈值会根据集群上的平均操作时间而变化,从而提供针对工作负载的建议。

推荐的索引附带示例查询(按查询结构进行分组),且会针对可从推荐索引中受益的集合来运行。Performance Advisor 不会对 Atlas 集群的性能产生负面影响。

您还可以使用 命名空间见解 监控集合级 查询延迟 ,并使用 查询分析器监控查询性能。

注意

如果查询速度慢,常见原因包括:

  • 当前索引不支持该查询。

  • 您集合中的某些文档有大量的数组字段,搜索和索引的成本很高。

  • 一个查询使用$lookup 从多个集合中检索信息。

如需查看慢速查询的集合并查看建议索引,您必须拥有项目的 Project Read Only 或更高访问权限。

如需查看“性能优化顾问”中示例查询的字段值,您必须拥有项目的 Project Data Access Read/Write 或更高访问权限。

如需启用或禁用 Atlas 托管的慢速操作阈值,您必须拥有项目的 Project Owner 访问权限。拥有 Organization Owner 访问权限的用户必须将自己作为 Project Owner 添加到项目中。

默认情况下,Atlas 会根据集群中操作的执行时间动态 调整慢查询阈值。但是, 您可以选择退出此功能,而是使用 100 毫秒的固定慢查询阈值。 您可以使用 Atlas CLI、 Atlas Administration API 或 Atlas UI 禁用 Atlas 管理的 慢速操作阈值。

注意

启用了“Atlas 搜索”的 Atlas 集群不支持 Atlas 托管的慢速查询操作阈值。

对于M0M2M5 集群和无服务器实例,Atlas 默认禁用 Atlas 托管的慢速查询操作阈值,而且您无法启用。

重要

默认情况下,Atlas 会根据集群中操作的执行时间动态 调整慢查询阈值。如果 您禁用 Atlas 管理的慢速查询阈值,则不再动态调整。 MongoDB 默认固定慢速查询阈值为 100 毫秒。 我们不建议您将固定慢速查询阈值设置为低于 100 毫秒。

要禁用 Atlas 托管的慢速运行阈值,并使用 100 毫秒的固定阈值:

Atlas 默认启用 Atlas 托管的慢速操作阈值。重新启用您之前禁用的 Atlas 托管的慢速操作阈值:

索引可提高读取性能,但大量索引可影响写入性能, 因为索引必须在写入期间更新。 如果您的集合已经有多个索引, 请在决定是否创建新索引时考虑读写性能方面的权衡。 检查能否修改此类集合的查询以利用现有索引, 以及查询是否频繁发生以考虑投入成本创建新索引的合理性。

Performance Advisor显示集群中所有集合最多 20 个查询结构以及这些结构的建议索引。Performance Advisor根据索引的Impact对索引进行排名,这根据读取的浪费字节总数指示HighMedium 。要了解有关索引排名的更多信息,请参阅查看索引排名

Performance Advisor 根据其建议的索引的 Impact 进行排名,根据读取的浪费字节总数指示 HighMedium 。如需进一步了解“性能优化顾问”如何对索引排名,请参阅“查看索引排名”。

要了解如何创建性能优化顾问建议的索引,请参阅创建建议的索引。

性能优化顾问建议的每个索引都包含以下指标。 这些指标会专门应用于此索引可改善的查询:

衡量标准
说明
Execution Count
每小时执行的查询次数将得到改进。
Average Execution Time
受影响查询的当前平均执行时间(毫秒)。
Average Query Targeting
受影响查询返回的每个文档的平均文档读取数。查询目标分数越高,表明效率越低。有关查询定位的更多信息,请参阅查询定位。
In Memory Sort
当前每小时需要在内存中排序的受影响查询次数。
Average Docs Scanned
扫描文档的平均数量。
Average Docs Returned
平均返回文档数。
Average Object Size
平均对象大小。

对于每个建议索引,性能优化顾问都会显示索引可以改进的最常执行的查询结构。 对于每个查询结构,性能优化顾问显示以下指标:

衡量标准
说明
Execution Count
每小时执行的与查询结构匹配的查询数。
Average Execution Time
与查询结构匹配的查询的平均执行时间(以毫秒为单位)。
Average Query Targeting
匹配查询返回的每个文档的平均读取文档数。 查询定位分数越高,表示效率越低。 有关查询定位的更多信息,请参阅查询定位。
Average Docs Scanned
扫描文档的平均数量。
Average Docs Returned
平均返回文档数。

性能优化顾问还显示了与查询形状匹配的每个已执行的示例查询, 以及该查询的特定指标。

每个索引建议包含一个 Average Query Targeting 分数,表示为索引的相应查询结构返回的每个文档读取了多少个文档。分数 1 表示非常高效的查询结构,因为读取的每个文档都与查询匹配,并与查询结果一起返回。所有建议的索引都是提高查询性能的机会。

默认情况下,性能优化顾问会为部署中的所有集群建议索引。要仅显示特定集合的建议索引,请使用性能优化顾问顶部的 Collection 下拉列表。

您还可以使用性能优化顾问顶部的 Time Range(时间范围)下拉列表,调整性能优化顾问在建议索引时考虑的时间范围。

性能优化顾问无法为配置为使用ctime时间戳格式的 MongoDB 数据库提供索引建议。作为一种变通方法,可将此类数据库的时间戳格式设置为iso8601-utciso8601-local 。要了解有关时间戳格式的更多信息,请参阅mongod --timeStampFormat。

性能优化顾问可分析多达 200,000 个集群的最新日志行。

如果集群出现活动高峰,并产生大量日志信息,Atlas 可能会在一段时间内停止收集和存储新日志。

注意

日志分析速率限制仅适用于性能优化顾问用户界面、查询见解用户界面、访问跟踪用户界面和 Atlas Search 查询分析用户界面。可下载的日志文件始终是完整的。

性能优化顾问不会为时间序列集合提供性能建议。

性能优化顾问为索引建议提供用户反馈按钮。 Atlas 对无服务器实例隐藏了此按钮。

您可以直接在性能优化顾问中创建性能优化顾问建议的索引。创建索引时,请注意目标集合上的读取与写入比率。索引会带来性能成本,但对于大型数据集的频繁查询来说,这是值得的。要了解有关索引策略的更多信息,请参阅索引策略。

  • 如果禁用了项目的数据浏览器,则无法通过性能优化顾问创建索引。您仍然可以查看性能优化顾问建议,但必须从mongosh创建这些索引。

  • 您一次只能通过性能优化顾问创建一个索引。如果要同时创建更多索引,则可使用 Atlas 用户界面驱动程序Shell 来实现

  • Atlas 始终为整个集群创建索引。如果您在查看性能优化顾问时为分片集群中的单个分片创建索引,则 Atlas 会为整个分片集群创建该索引。

要创建建议的索引,请执行以下操作:

1

性能优化顾问打开 Create Index(创建索引)对话框,并根据您选择的索引预填充 Fields(字段)。

2
{ <option1>: <value1>, ... }

例子

以下选项文档指定索引的 unique 选项和 name

{ unique: true, name: "myUniqueIndex" }
3

使用排序规则指定特定于语言的字符串比较规则,例如字母大小写和重音符号规则。 排序规则文档 包含一个locale 字段,表示 ICU 区域设置代码 ,并且可能包含其他字段来定义排序规则行为。

例子

以下排序规则选项文档将法语排序规则的语言环境值指定为 fr

{ "locale": "fr" }

要查看 MongoDB 排序规则支持的区域设置列表,请参阅语言和区域设置列表。要了解有关排序规则的详情,包括默认为每个区域设置启用的排序规则选项,请参阅 MongoDB 手册的排序规则

4

重要

滚动索引构建仅在满足特定条件时才会成功。 为确保索引构建成功,请避免使用通常会触发重启循环的以下设计模式:

注意

Atlas UI 不支持用滚动构建的方式为 M0 个空闲集群和 M2/M5 个共享集群构建索引。您无法用滚动构建的方式为无服务器实例构建索引。

对于不能容忍由于索引构建而导致性能下降的工作负载, 请考虑以滚动方式构建索引。

要保持集群的可用性:

  • Atlas 从节点开始,一次从集群中删除一个节点

  • 一次可能有多个节点宕机,但 Atlas 始终保持大多数节点在线。

Atlas 自动取消未在所有节点上成功的 滚动索引构建。当滚动索引构建在某些节点上完成, 但在其他节点上失败时,Atlas 会取消构建 并从成功构建索引的所有节点中删除索引。

在滚动索引构建取消的情况下,Atlas 会生成操作日志事件,并通过电子邮件向项目所有者发送以下信息:

  • 滚动索引构建失败的集群的名称

  • 滚动索引构建失败的命名空间

  • 包含集群和命名空间的项目

  • 包含项目的组织

  • 指向操作日志事件的链接

要了解有关重建索引的更多信息,请参阅在副本集上构建索引。

注意

唯一 索引选项与以滚动方式构建索引不兼容。如果您在Options窗格中指定unique ,Atlas 将拒绝您的配置,并显示错误消息。

5
6

重要

索引构建完成后,Atlas 会生成操作日志事件,并通过电子邮件向项目所有者发送以下信息:

  • 索引构建的完成日期

  • 索引构建完成的集群的名称

  • 完成索引构建的命名空间

  • 包含集群和命名空间的项目

  • 包含项目的组织

  • 指向操作日志事件的链接

← 分析慢速查询