仅在 M10+ 集群上可用
查询分析器可诊断并监控性能问题。此监控功能可在 Atlas 用户界面中公开运行缓慢的查询及其关键性能统计信息。
Atlas收集并显示任何 mongod
实例的统计信息。 查询分析器根据mongod
实例中的日志数据识别慢速查询。 Atlas会在实例的Query Profiler部分的 Query Insights标签页上显示此数据。
注意
默认下, Atlas查询分析器会显示整个集群的操作。 您可以使用 Filter by Hosts 下拉列表查询分析器显示其过滤数据的主机,这允许您查看与一个或多个特定主机相关的数据,或者查看主节点 (primary node in the replica set)或从节点(secondary node from replica set)托管组。 Query Insights标签页显示的信息揭示了在设立时间范围内的数据库慢速操作,如下所示:
Operation Execution Time
Docs Examined : Returned Ratio
Atlas查询分析器支持在同一时间戳前后的同一集合上运行的同一类型的分箱操作,以支持其他数据点。
为了支持更多数据点, Atlas查询分析器支持满足以下条件的分箱操作:
这些操作属于相同的操作类型。
这些操作在同一命名空间中运行。
这些操作具有匹配的
hasSort
和usedIndex
布尔值。这些操作在相同的时间戳前后执行。
Atlas根据每个mongod
托管的平均操作执行时间来管理该托管的慢速操作阈值。 可以使用db.setProfilingLevel
mongosh
命令更改此阈值。
注意
使用 db.setProfilingLevel
更改慢速操作的阈值,可能会影响性能和系统日志设置。在生产部署中使用 db.setProfilingLevel
调整查询分析器设置之前,请仔细考虑对性能和安全的影响。重新启动节点后,查询分析器设置将重置为默认值。
此外,放大散点图的 x 轴将重新获取慢操作,并可能提供所选时间段内慢操作的更详细信息。
注意
Considerations
重要
在启用查询分析器之前,请阅读以下注意事项。
安全性
个人资料数据可能包括敏感信息,包括数据库查询内容等。确保将这些数据提供给 Atlas 符合您的信息安全实践。
数据分析限制:
Query Profiler 每次显示约 100,000 个采样日志。如果在选定的主机和时间范围内记录了 100,000 个或更少的日志,则会显示所有日志。
数据显示限制
Atlas 在 Query Profiler 图表中最多显示 100,000 个数据点。
日志数据分批处理。数据最长可比实时数据延迟五分钟。
日志数量
如果集群出现活动高峰,并产生大量日志信息,Atlas 可能会在一段时间内停止收集和存储新日志。
注意
日志分析速率限制只适用于 Performance Advisor 用户界面、Query Insights 用户界面、访问跟踪用户界面和和 Atlas Search 查询分析用户界面。可下载的日志文件始终是完整的。
高延迟 $lookup 操作
某些高延迟 $lookup
操作不会为外部集合生成慢速查询日志。发生这种情况的原因是,慢速查询日志与查询分析器中报告的操作相对应,而延迟指标仅在获取集合锁时才会递增。
如果分片上的 $lookup
查询可以执行本地读取,则 $lookup
不会记录用于查询外部集合的单独操作。本地读取是指对外部集合的查询仅针对执行当前操作的同一分片。因此,$lookup
操作会增加命名空间见解延迟指标和操作计数,但不会为外部集合生成慢查询日志。
必需的访问权限
要为项目启用或禁用 Performance Advisor 和查询分析器,您必须具有该项目的 Project Owner
角色或其父组织的 Organization Owner
角色。
要在查询分析器中查看查询性能,您必须对项目具有Project Read Only
或Project Observability Viewer
访问权限。
启用和禁用查询分析器
Atlas默认启用查询分析器。
要禁用查询分析器:
使用查询分析器查找慢速查询
以下部分介绍如何使用查询分析器查找慢速查询。
访问查询分析器。
在 Atlas 中,进入项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
单击群集的对应 View Monitoring 按钮。
单击 Query Insights 标签页。
单击 Query Profiler 标签页。
默认下,查询分析器会显示主节点 (primary node in the replica set)和从从节点(secondary node from replica set)日志中的所有数据。
自定义查询分析器。
查询分析器使用图表和图表正下方的表格来帮助您找到慢速操作。
在 Filter by Hosts 下拉列表中选择要查看指标的一个或多个主机。
从 Time Range 或 Filter by Date and Time 下拉列表中选择时间段。默认下,查询分析器会显示过去 24 小时的数据。
从 Operation Execution Time 下拉列表中选择指标。选项包括:
Operation Execution Time (默认): MongoDB 数据库操作完成所需的总时间,通常以毫秒为单位。
Response Length:数据库为响应操作而返回的文档或数据的大小,以字节为单位。
Docs Examined:为查找查询结果而在集合中扫描的文档总数。
Docs Returned:与Atlas为查询返回的查询条件相匹配的文档数量。
Keys Examined:查询执行期间数据库扫描的索引项总数。
Num Yields:暂停某一操作以允许其他操作继续进行的次数。
Docs Examined : Returned Ratio:通过将 Docs Examined 除以 Docs Returned 计算得出的比率。
Keys Examined : Returned Ratio:通过将 Keys Examined 除以 Docs Returned 计算得出的比率。
单击 All operation types 下拉列表可更改要分析的操作。默认下,查询分析器会显示所有操作类型。
解释性能指标。
检查慢速查询时,首先查看这些关键指标和模式:
Operation Execution Time (
millis
):查询时间(以毫秒为单位)。这是慢速查询的主节点 (primary node in the replica set)指标。如果该指标持续较高,请考虑优化查询逻辑、批处理结果或重新考虑数据的访问方式。"planSummary": "COLLSCAN":
如果在查询日志中看到 ,则该查询执行了集合扫描并且未使用索引。这是添加索引或重写查询的强烈信号。Docs Examined (
docsExamined
): MongoDB为查询检查的文档数。如果 Docs Examined 明显大于 Docs Returned,这通常意味着:Keys Examined
keysExamined
():为查询扫描的索引键数。如果对于包含过滤条件的查询,该指标为0
,则很可能没有索引,并且MongoDB扫描了整个集合。这是速度缓慢的主节点 (primary node inDocs Examined Keys Examined0
Docs Examinedthe replica set)。如果 非常高,而 为 或与 相比非常低,则您可能正在扫描集合或非选择性索引。要学习;了解更多信息,请参阅索引。Docs Examined : Returned Ratio 较高意味着查询正在扫描大量文档,但返回的结果很少,这可能表明查询效率低下或缺失索引。
Num Yields (
numYields
):频繁的让出表明存在资源争用或长时间运行的操作正在暂停,可能会影响总体吞吐量。Has Index Coverage
usedIndex
():该布尔值确认是否使用了索引。如果将应建立索引的查询设立为false
,请添加索引。如果将
hasSort
设立为true
,则表示查询包含sort()
方法。无索引的sort()
方法可能会占用大量资源。检查搜索索引配置并确认其是否支持sort()
方法。