Navigation

Query Targeting

On this page

Description

Query Targeting alerts indicate inefficient queries:

  • Query Targeting: Scanned Objects / Returned occurs if the number of documents examined to fulfill a query relative to the actual number of returned documents meets or exceeds a user-defined threshold. The default is 1000, which means that a query must scan more than 1000 documents for each document returned to trigger the alert.
  • 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.

Ideally, the ratio of scanned documents to returned documents should be close to 1. A high ratio negatively impacts query performance. 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.

Solution

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. 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. Click Create Index on a slow query for instructions on how to create the recommended index.

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 the mongo shell provides performance details for all queries.

Refer to the following for more information on query performance: