Fix Query Issues
On this page
Query Targeting
alerts often indicate inefficient queries.
Alert Conditions
You can configure the following alert conditions in the project-level alert settings page to trigger alerts.
Query Targeting: Scanned Objects / Returned
alerts are
triggered when the average number of documents scanned relative to the
average number of documents returned server-wide across all operations
during a sampling period exceeds a defined threshold. The default alert
uses a 1000:1 threshold.
Ideally, the ratio of scanned documents to returned documents should be close to 1. A high ratio negatively impacts query performance.
Query Targeting: Scanned / Returned
occurs if the number of
index keys examined to fulfill a query relative to the actual number of
returned documents meets or exceeds a user-defined threshold. This
alert is not enabled by default.
Example
The following mongod log entry shows statistics generated from an inefficient query:
<Timestamp> COMMAND <query> planSummary: COLLSCAN keysExamined:0 docsExamined: 10000 cursorExhausted:1 numYields:234 nreturned:4 protocol:op_query 358ms
This query scanned 10,000 documents and returned only 4 for a ratio of 2500, which is highly inefficient. No index keys were examined, so MongoDB scanned all documents in the collection, known as a collection scan.
Common Triggers
The query targeting alert typically occurs when there is no index to support a query or queries or when an existing index only partially supports a query or queries.
The change streams cursors that the Atlas Search
process (mongot
) uses to keep Atlas Search indexes updated can
contribute to the query targeting ratio and trigger
query targeting alerts if the ratio
is high.
Fix the Immediate Problem
Add one or more indexes to better serve the inefficient queries.
The Performance Advisor provides the easiest and quickest way to create an index. The Performance Advisor monitors queries that MongoDB considers slow and recommends indexes to improve performance. Atlas dynamically adjusts your slow query threshold based on the execution time of operations across your cluster.
Click Create Index on a slow query for instructions on how to create the recommended index.
Note
It is possible to receive a Query Targeting alert for an inefficient query without receiving index suggestions from the Performance Advisor if the query exceeds the slow query threshold and the ratio of scanned to returned documents is greater than the threshold specified in the alert.
In addition, you can use the following resources to determine which query generated the alert:
The Real-Time Performance Panel monitors and displays current network traffic and database operations on machines hosting MongoDB in your Atlas clusters.
The MongoDB logs maintain an account of activity, including queries, for each
mongod
instance in your Atlas clusters.The cursor.explain() command for
mongosh
provides performance details for all queries.Namespace Insights monitors collection-level query latency.
The Atlas Query Profiler records operations that Atlas considers slow when compared to average execution time for all operations on your cluster.
Implement a Long-Term Solution
Refer to the following for more information on query performance:
Monitor Your Progress
Atlas provides the following methods to visualize query targeting:
Query Targeting metrics, which highlight high ratios of objects scanned to objects returned.
Namespace Insights, which monitors collection-level query latency.
The Query Profiler, which describes specific inefficient queries executed on the cluster.
Query Targeting Metrics
You can view historical metrics to help you visualize the query performance of your cluster. To view Query Targeting metrics in the Atlas UI:
In Atlas, go to the Clusters page for your project.
If it's not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
If it's not already displayed, select your desired project from the Projects menu in the navigation bar.
If the Clusters page is not already displayed, click Database in the sidebar.
The Clusters page displays.
The Query Targeting chart displays the following metrics for queries executed on the server:
Metric | Description |
---|---|
Scanned Objects / Returned | Indicates the average number of documents examined relative to
the average number of returned documents. |
Scanned / Returned | Indicates the number of index keys
examined to fulfill a query relative to the actual number of
returned documents. |
The change streams cursors that the Atlas Search
process (mongot
) uses to keep Atlas Search indexes updated can
contribute to the query targeting ratio and trigger
query targeting alerts if the ratio
is high.
If either of these metrics exceed the
user-defined threshold, Atlas generates
the corresponding
Query Targeting: Scanned Objects / Returned
or
Query Targeting: Scanned / Returned
alert.
Note
You can also view Query Targeting ratios of operations in real-time using the Real-Time Performance Panel.
Namespace Insights
Namespace Insights monitors collection-level query latency. You can view query latency metrics and statistics for certain hosts and operation types. Manage pinned namespaces and choose up to five namespaces to show in the corresponding query latency charts.
To access Namespace Insights:
In Atlas, go to the Clusters page for your project.
If it's not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
If it's not already displayed, select your desired project from the Projects menu in the navigation bar.
If the Clusters page is not already displayed, click Database in the sidebar.
The Clusters page displays.
Query Profiler
The Query Profiler contains several metrics
you can use to pinpoint specific inefficient queries. You can
visualize up to the past 24 hours of query operations. The Query
Profiler can show the Examined : Returned Ratio (index keys
examined to documents returned) of logged queries, which might help you
identify the queries that triggered a
Query Targeting: Scanned / Returned
alert. The chart shows the
number of index keys examined to fulfill a query relative to the actual
number of returned documents.
Note
The default
Query Targeting: Scanned Objects / Returned
alert ratio differs slightly. The ratio of the average number of
documents scanned to the average number of documents returned during
a sampling period triggers this alert.
Atlas might not log the individual operations that contribute to the Query Targeting ratios due to automatically set thresholds. However, you can still use the Query Profiler and Query Targeting metrics to analyze and optimize query performance.
To access the Query Profiler:
In Atlas, go to the Clusters page for your project.
If it's not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
If it's not already displayed, select your desired project from the Projects menu in the navigation bar.
If the Clusters page is not already displayed, click Database in the sidebar.
The Clusters page displays.