Explicación de la consulta te permite enviar consultas en modo Datastore
al backend y recibir estadísticas de rendimiento detalladas sobre la ejecución de consultas de backend
a cambio. Funciona como la operación EXPLAIN ANALYZE
en muchos
sistemas de bases de datos relacionales.
Puedes enviar solicitudes de explicación de consultas con el Bibliotecas cliente del modo Datastore
Los resultados de la explicación de consultas te ayudan a comprender cómo se ejecutan las consultas, las ineficiencias y la ubicación de los posibles cuellos de botella del servidor.
Query Explain ayuda a lo siguiente:
- Proporciona estadísticas sobre la fase de planificación para que puedas ajustar los índices de tus consultas y aumentar la eficiencia.
- Te ayuda a comprender el costo y el rendimiento por consulta y te permite iterar rápidamente a través de diferentes patrones de consulta para optimizar su uso.
Comprende las opciones de Query Explain: default y analyze
Las operaciones de explicación de consultas se pueden realizar con el opción default o analyze.
Con la opción default, Query Explain planifica la consulta, pero omite la etapa de ejecución. Esto devolverá la información de la etapa del planificador. Puedes usar esta opción para verificar que una consulta tenga los índices necesarios y comprenda qué índices se usan. Esto te ayudará a verificar, por ejemplo, que un consulta específica es usar un índice compuesto en lugar de tener que cruzar muchas diferentes índices.
Con la opción analyze, Query Explain planifica y ejecuta la consulta. Esto devuelve toda la información del planificador mencionada anteriormente junto con estadísticas del tiempo de ejecución de las consultas. Esto incluirá la facturación junto con estadísticas a nivel del sistema sobre la ejecución de la consulta. Puedes usar con esta herramienta para probar varios parámetros de configuración de consulta e índice optimizar sus costos y latencia.
¿Cuánto cuesta Query Explain?
Cuando se explica una consulta con la opción predeterminada, sin índice ni lectura se ejecutan las operaciones. Sin importar la complejidad de la consulta, una operación de lectura es que se hayan cargado correctamente.
Cuando se explica una consulta con la opción de analizar, se realizan las operaciones de índice y lectura, por lo que se te cobra por la consulta como de costumbre. No hay cargo adicional por la actividad de análisis, solo el cargo habitual por la consulta que se están ejecutando.
Ejecuta una consulta con la opción predeterminada
Puedes usar una biblioteca cliente para enviar una solicitud de opción predeterminada.
Ten en cuenta que los resultados de la explicación de consultas se autentican con Identity and Access Management, con los mismos permisos para operaciones de consulta regulares.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente del modo Datastore, consulta Bibliotecas cliente del modo Datastore Para obtener más información, consulta la API de Java modo Datastore documentación de referencia.
Para autenticarte en el modo Datastore, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Consulta el campo indexes_used
en la respuesta para obtener más información sobre los índices
usado en el plan de consultas:
"indexes_used": [ {"query_scope": "Collection Group", "properties": "(__name__ ASC)"}, ]
Para obtener más información sobre el informe, consulta la referencia del informe.
Ejecuta una consulta con la opción de análisis
Puedes usar una biblioteca cliente para enviar una solicitud de opción predeterminada.
Ten en cuenta que los resultados del análisis de consultas se autentican con Identity and Access Management (IAM), con los mismos permisos para operaciones de consulta regulares.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente del modo Datastore, consulta Bibliotecas cliente del modo Datastore Para obtener más información, consulta la API de Java modo Datastore documentación de referencia.
Para autenticarte en el modo Datastore, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Consulta el objeto executionStats
para encontrar información de creación de perfiles de consultas, como la siguiente:
{ "resultsReturned": "5", "executionDuration": "0.100718s", "readOperations": "5", "debugStats": { "index_entries_scanned": "95000", "documents_scanned": "5" "billing_details": { "documents_billable": "5", "index_entries_billable": "0", "small_ops": "0", "min_query_cost": "0", } } }
Para obtener más información sobre el informe, consulta la referencia del informe.
Interpreta los resultados y haz ajustes
El siguiente caso de ejemplo consulta películas por género y y muestra cómo optimizar los índices que usa la para cada búsqueda.
Para obtener más información sobre el informe, consulta la referencia del informe de explicación de consultas.
A modo de ejemplo, supongamos el equivalente de esta consulta en SQL.
SELECT * FROM movies WHERE category = 'Romantic' AND country = 'USA';
Si usamos la opción de análisis, el siguiente resultado del informe muestra
la consulta se ejecuta en los índices de campo único (category ASC, __name__ ASC)
y
(country ASC, __name__ ASC)
Analiza 16,500 entradas de índice, pero devuelve
solo 1,200 documentos.
// Output query planning info "indexes_used": [ {"query_scope": "Collection Group", "properties": "(category ASC, __name__ ASC)"}, {"query_scope": "Collection Group", "properties": "(country ASC, __name__ ASC)"}, ] // Output query status { "resultsReturned": "1200", "executionDuration": "0.118882s", "readOperations": "1200", "debugStats": { "index_entries_scanned": "16500", "documents_scanned": "1200" "billing_details": { "documents_billable": "1200", "index_entries_billable": "0", "small_ops": "0", "min_query_cost": "0", } } }
Para optimizar el rendimiento de la ejecución de la consulta, puedes crear un índice compuesto completamente cubierto (categoría ASC, país ASC, __name__ ASC).
Si vuelves a ejecutar la consulta en modo de análisis, podemos ver que la imagen índice seleccionado para esta consulta, que se ejecuta mucho más rápido y de forma eficiente.
// Output query planning info "indexes_used": [ {"query_scope": "Collection Group", "properties": "(category ASC, country ASC, __name__ ASC)"} ] // Output query stats { "resultsReturned": "1200", "executionDuration": "0.026139s", "readOperations": "1200", "debugStats": { "index_entries_scanned": "1200", "documents_scanned": "1200" "billing_details": { "documents_billable": "1200", "index_entries_billable": "0", "small_ops": "0", "min_query_cost": "0", } } }
¿Qué sigue?
- Más información sobre el informe de explicación de consultas
- Más información para optimizar índices y consultas