Solo disponible en clústeres M10+
El Analizador de Consultas diagnostica y monitoriza problemas de rendimiento. Esta monitorización permite detectar consultas de ejecución lenta y sus estadísticas clave de rendimiento en la interfaz de usuario de Atlas.
Atlas collects and displays statistics from any of your mongod instances. The Query Profiler stores your mongod query log data, which can be accessed directly through the Query Profiler or via the Atlas CLI, and use it to identify slow queries. Atlas displays this data on the Query Insights tab in the Query Profiler section of an instance.
Nota
El Perfilador de Consultas es diferente del Perfilador de Base de Datos. El Perfilador de Consultas identifica consultas ineficientes específicas basándose en las entradas de los mongod registros. El Perfilador de Base de Datos devuelve información detallada sobre los comandos ejecutados en mongod según el nivel de perfil especificado. Cambiar el nivel de perfil no afecta las consultas lentas que se muestran en el Perfilador de Consultas.
El Perfilador de Consultas Atlas muestra las operaciones en todo el clúster de forma predeterminada. Puede filtrar los hosts para cuyas operaciones el Perfilador de Consultas muestra datos con el menú desplegable Filter by Hosts, que le permite ver los datos relacionados con uno o más hosts específicos o ver grupos de hosts principales o secundarios. La pestaña Query Insights muestra información para revelar operaciones lentas de la base de datos durante un período determinado, como en los siguientes casos:
Operation Execution Time
Docs Examined : Returned Ratio
Atlas Query Profiler admite operaciones de agrupamiento del mismo tipo que se ejecutan en la misma colección y alrededor de la misma marca de tiempo para admitir puntos de datos adicionales.
Para admitir puntos de datos adicionales, Atlas Query Profiler admite operaciones de agrupamiento que cumplan los siguientes criterios:
Las operaciones son del mismo tipo de operación.
Las operaciones se ejecutan en el mismo espacio de nombres.
Las operaciones tienen valores booleanos de
hasSortyusedIndexcoincidentes.Las operaciones se ejecutan alrededor de la misma marca de tiempo.
Atlas administra el umbral de operaciones lentas para cada mongod host según el tiempo promedio de ejecución de operaciones en ese host. Este umbral se puede modificar con el db.setProfilingLevel mongosh comando.
Nota
Cambiar el umbral para operaciones lentas mediante db.setProfilingLevel puede impactar el rendimiento y la configuración de los registros del sistema. Considere cuidadosamente cualquier implicación de rendimiento y seguridad antes de usar db.setProfilingLevel para ajustar la configuración del perfilador del query en una implementación de producción. La configuración del perfilador del query se restablece a los valores por defecto después de reiniciar un nodo.
Además, al hacer zoom en el eje x del diagrama de dispersión se volverán a capturar las operaciones lentas y se podrá brindar una fidelidad más detallada de las operaciones lentas durante el período de tiempo seleccionado.
Nota
Para desactivar el umbral de operación lenta administrado por Atlas y usar un umbral fijo de consulta lenta de 100 milisegundos, utilice la API de administración de Atlas. M0 Consulte Deshabilitar el umbral de operación lenta administrado. Para clústeres y clústeres Flex, Atlas deshabilita el umbral de operación lenta administrado por Atlas de forma predeterminada y no se puede habilitar.
Considerations
Importante
Lea las siguientes consideraciones antes de habilitar el Generador de perfiles de consultas.
Seguridad
Los datos del perfil pueden incluir información confidencial, como el contenido de las consultas a la base de datos. Asegúrese de que la exposición de estos datos a Atlas se ajuste a sus prácticas de seguridad de la información.
Limitaciones del análisis de datos
El Analizador de Consultas muestra aproximadamente 100,000 registros muestreados a la vez. Muestra todos los registros si se registraron 100,000 o menos registros en los hosts y el intervalo de tiempo seleccionados.
Limitaciones de visualización de datos
Atlas no muestra más de 100,000 puntos de datos en los Query Profiler gráficos.
Los datos de registro se procesan por lotes. Pueden tener un retraso de hasta cinco minutos con respecto al tiempo real.
Cantidad de registros
Si un clúster experimenta un pico de actividad y genera una cantidad extremadamente grande de mensajes de registro, Atlas puede dejar de recopilar y almacenar nuevos registros durante un período.
Nota
Los límites de velocidad de análisis de registros se aplican únicamente a la Interfaz de Usuario de Performance Advisor, la Interfaz de Usuario de Query Insights, la Interfaz de Usuario de Access Tracking y la Interfaz de Usuario de MongoDB Search Query Analytics. Los archivos de registro descargables siempre están completos.
Operaciones $lookup de alta latencia
Algunas operaciones de alta latencia $lookup no generan un registro de consultas lentas para la colección externa. Esto puede deberse a que los registros de consultas lentas corresponden a operaciones reportadas en el Analizador de Consultas, mientras que las métricas de latencia solo se incrementan cuando se adquiere un bloqueo de colección.
Si la consulta $lookup en un fragmento puede realizar una lectura local, la consulta $lookup no registra una operación independiente para consultar la colección externa. Una lectura local se refiere a cuando la consulta en la colección externa se dirige únicamente al mismo fragmento donde se ejecuta la operación actual. Como resultado, la consulta $lookup aumenta las métricas de latencia y el número de operaciones de Namespace Insights, pero no genera un registro de consultas lentas para la colección externa.
Acceso requerido
Para habilitar o deshabilitar Performance Advisor y Query Profiler para un proyecto, debe tener el rol para Project Owner Organization Owner el proyecto o el rol en su organización principal.
Para ver el rendimiento de la consulta en el Generador de perfiles de consultas, debe tener Project Read Only acceso o Project Observability Viewer al proyecto.
Habilitar y deshabilitar el generador de perfiles de consultas
Atlas habilita el generador de perfiles de consultas de forma predeterminada.
Para deshabilitar el generador de perfiles de consultas:
En Atlas, diríjase a la página Project Settings.
Si aún no se muestra, seleccione la organización que contiene su proyecto deseado en el menú Organizations de la barra de navegación.
Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.
En la barra lateral, haga clic en Project Settings.
La página Configuración del proyecto se muestra.
Detectar consultas lentas con el generador de perfiles de consultas
La siguiente sección describe cómo encontrar consultas lentas utilizando el Generador de consultas.
En Atlas, ve a la página Clusters de tu proyecto.
Si aún no se muestra, seleccione la organización que contiene su proyecto deseado en el menú Organizations de la barra de navegación.
Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Clusters en la sección Database.
La página de clústeres se muestra.
Acceda al generador de perfiles de consultas.
Hacer clic en el botón View Monitoring para el clúster.
Haz clic en la pestaña Query Insights.
Haz clic en la pestaña Query Profiler.
El generador de perfiles de consultas muestra todos los datos del registro en los nodos primarios y secundarios de forma predeterminada.
Personalice el generador de perfiles de consultas.
El generador de perfiles de consultas utiliza un gráfico de dispersión y una tabla directamente debajo del gráfico para ayudarle a encontrar operaciones lentas.
Seleccione uno o más hosts cuyas métricas desea ver en el menú desplegable Filter by Hosts.
Seleccione el período de tiempo en los menús desplegables Time Range o Filter by Date and Time. El Generador de perfiles de consultas muestra los datos de las últimas 24 horas de forma predeterminada.
Seleccione la métrica en el menú desplegable Operation Execution Time. Las opciones incluyen:
Operation Execution Time (predeterminado): el tiempo total, generalmente en milisegundos, que tardó en completarse una operación de base de datos MongoDB.
Response Length:El tamaño de los documentos o datos devueltos por la base de datos en respuesta a una operación, medido en bytes.
Docs Examined:El número total de documentos escaneados dentro de la colección para encontrar los resultados de una consulta.
Docs Returned: The number of documents that matched the query criteria that Atlas returned for the query.
Keys Examined: El número total de entradas de índice escaneadas por la base de datos durante la ejecución de la query.
Num Yields:La cantidad de veces que se detuvo una operación para permitir que otras operaciones continuaran.
Docs Examined : Returned Ratio: La relación calculada dividiendo Docs Examined entre Docs Returned.
Keys Examined : Returned Ratio: La relación calculada dividiendo Keys Examined entre Docs Returned.
Haga clic en el menú desplegable All operation types para cambiar las operaciones que desea perfilar. El Generador de perfiles de consultas muestra todos los tipos de operaciones de forma predeterminada.
Identificar consultas lentas.
Haga clic en un punto del diagrama de dispersión. Se abrirá un panel derecho con información resumida.
Haga clic en View more details en el panel del lado derecho para ver la forma completa de la consulta, las estadísticas de ejecución detalladas, el registro de consultas y sugerencias de mejora.
Haga clic y arrastre a lo largo de los ejes
XyYpara ampliar un subconjunto específico de datos recopilados.Desplácese hacia abajo hasta la tabla debajo del gráfico para ver una lista de consultas lentas por colección. Haga clic en una fila de la tabla para obtener más detalles.
Interpretar métricas de rendimiento.
Al inspeccionar una consulta lenta, comience por observar estas métricas y patrones clave:
Operation Execution Time (
millis): Query time in milliseconds. This is the primary indicator of a slow query. If this metric is consistently high, consider optimizing the query logic, batching results, or rethink how the data is being accessed.Si ve
"planSummary": "COLLSCAN":en el registro de query, la query realizó un escaneo de colección y no usó ningún índice. Esto es una fuerte señal para agregar un índice o reescribir la query.Docs Examined (
docsExamined): Number of documents MongoDB inspected for the query. If Docs Examined is significantly larger than Docs Returned, this often means that:La consulta escaneó muchos documentos para encontrar los resultados, lo que podría afectar la latencia de la red y el rendimiento de la aplicación.
Los índices existentes son ineficientes o no son óptimos para esta consulta específica. Para obtener más información, consulte Índices.
Keys Examined (
keysExamined): Number of index keys scanned for the query. If this metric is0for a query that includes filter conditions, it's highly likely there is no index and MongoDB scanned the entire collection. This is a primary cause of slowness. If Docs Examined is very high and Keys Examined is0or very low compared to Docs Examined, you're likely scanning the collection or a very unselective index. To learn more, see Indexes.Un Docs Examined : Returned Ratio alto significa que la consulta está escaneando muchos documentos para devolver pocos resultados, lo que puede ser un signo de una consulta ineficiente o de índices faltantes.
Num Yields (
numYields): Frequent yields suggest resource contention or long-running operations that are pausing, potentially impacting overall throughput.Response Length: Unusually large response lengths indicate that queries are returning more data than necessary. Consider using projections to limit the fields returned.
Has Index Coverage (
usedIndex): This boolean confirms whether a MongoDB index was used. If set tofalsefor a query that should be indexed, add an index.Nota
Esta métrica no refleja el uso del índice de búsqueda de MongoDB.
Si
hasSortse establecetrueen, esto indica que la consulta contiene unsort()método. Lossort()métodos no indexados pueden consumir muchos recursos. Revise la configuración de su índice de búsqueda y confirme si admite elsort()método.