Analiza la ejecución de consultas con Query Explain

En esta página, se describe cómo recuperar información de ejecución de consultas cuando ejecutas una.

Usa Query Explain

Puedes usar la función Query Explain para comprender cómo se ejecutan tus consultas. Esto proporciona detalles que puedes usar para optimizar tu queriegoogledata/devsite/site-cloud/en/firestore/mongodb-compatibility/quotas.mds. Actualmente, la compatibilidad con la función Explicación de consultas se limita a la consola de Google Cloud.

Para usar la Explicación de consultas, ejecuta una consulta en el editor de consultas y abre la pestaña Explicación:

Console
  1. En la consola de Google Cloud, ve a la página Bases de datos.

    Ir a Bases de datos

  2. En la lista de bases de datos, selecciona una base de datos de Firestore con compatibilidad con MongoDB. La consola de Google Cloud abrirá el Explorador de Firestore de esa base de datos.
  3. Ingresa una consulta en el editor de consultas y haz clic en Ejecutar.
  4. Haz clic en la pestaña Explicación para ver el resultado del análisis de la consulta.

    Pestaña Explicación de consultas en la consola

Análisis

El resultado de la explicación de la consulta contiene dos componentes principales: las estadísticas de resumen y el árbol de ejecución. Considera esta consulta como ejemplo:

db.order.aggregate(
 [
   { "$match": { "user_id": 1234 } },
   { "$sort": { "date_placed": 1 } }
 ]
)

Estadísticas de resumen

La parte superior del resultado explicado contiene un resumen de las estadísticas de ejecución. Usa estas estadísticas para determinar si una consulta tiene una latencia o un costo altos. También contiene estadísticas de memoria que te permiten saber qué tan cerca está tu consulta de los límites de memoria.

Billing Metrics:
read units: 1

Execution Metrics:
request peak memory usage: 4.00 KiB (4,096 B)
results returned: 1

Árbol de ejecución

El árbol de ejecución describe la ejecución de la consulta como una serie de nodos. Los nodos inferiores (nodos hoja) recuperan datos de la capa de almacenamiento que recorre el árbol para generar una respuesta de consulta.

Para obtener detalles sobre cada nodo de ejecución, consulta la referencia de ejecución.

Si deseas obtener más información para usar esta información y optimizar tus consultas, consulta Cómo optimizar la ejecución de consultas.

El siguiente es un ejemplo de un árbol de ejecución:

• Drop
|  fields to drop: [__$3__]
|  records returned: 0
|
└── • MajorSort
    |  fields: [__$3__ ASC]
    |  peak memory usage: 4.00 KiB (4,096 B)
    |  records returned: 0
    |
    └── • Extend
        |  expressions: [date_placed AS __$3__]
        |  records returned: 0
        |
        └── • Drop
            |  fields to drop: [__key__]
            |  records returned: 0
            |
            └── • Extend
                |  expressions: [_id(__key__) AS __id__]
                |  records returned: 0
                |
                └── • Filter
                    |  expression: $eq(user, 1,234)
                    |  records returned: 0
                    |
                    └── • TableScan
                           order: UNDEFINED
                           properties: * - { __create_time__, __update_time__ }
                           records returned: 0
                           records scanned: 0
                           source: (default)#/**/collection

¿Qué sigue?