Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Supervisar el rendimiento de las consultas con el generador de perfiles de consultas

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 recopila y muestra estadísticas de cualquiera de tus mongod instancias. El perfilador del query almacena tu mongod query Datos de registro, a los que se puede acceder directamente a través del Generador de perfiles de consultas o de la CLI de Atlas, y los utilizan para identificar consultas lentas. Atlas muestra estos datos en la Query Insights página, en la pestaña Query Profiler de una instancia.

Nota

El perfilador del query se diferencia del perfilador de base de datos. El Query Profiler identifica consultas ineficientes específicas basadas en entradas de tus registros mongod. El perfilador de base de datos devuelve información detallada sobre los comandos ejecutados en el mongod en función del nivel de profilación especificado. Cambiar el nivel de elaboración de perfiles no afecta las queries lentas mostradas en el perfilador del Query.

El Perfilador de Consultas de Atlas muestra las operaciones de todo el clúster de forma predeterminada. Puede filtrar la vista del Perfilador de Consultas para mostrar solo las operaciones provenientes de hosts específicos con el menú desplegable Filter by Hosts, que le permite ver datos relacionados con uno o más hosts específicos o ver grupos de hosts primarios o secundarios. La opción Query Insights en la barra lateral Cluster muestra información para revelar operaciones de base de datos lentas durante un período de tiempo determinado, como las siguientes:

  • Operation Execution Time

  • Docs Examined : Returned Ratio

El perfilador del query de Atlas brinda soporte a la agrupación de operaciones del mismo tipo que se ejecutan en la misma colección cerca de la misma marca de tiempo para brindar soporte a puntos de datos adicionales.

Para admitir puntos de datos adicionales, el Atlas perfilador del query admite operaciones de agrupación que cumplan con los siguientes criterios:

  • Las operaciones son del mismo tipo de operación.

  • Las operaciones se están ejecutando en el mismo namespace.

  • Las operaciones tienen valores booleanos de hasSort y usedIndex coincidentes.

  • Las operaciones se ejecutan alrededor de la misma marca de tiempo.

Atlas gestiona el umbral para operaciones lentas para cada host mongod según el tiempo medio de ejecución de operaciones en ese host. Este umbral se puede cambiar usando el comando de db.setProfilingLevel mongosh.

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, acercar el eje x del diagrama de dispersión recargará las operaciones lentas y puede proporcionar una mayor fidelidad de las operaciones lentas durante el período de tiempo seleccionado.

Nota

Para excluirse del umbral de operación lenta gestionado por Atlas y en su lugar utilizar un umbral fijo de query lenta de 100 milisegundos, utilice la API de administración de Atlas. Consulta Desactivar el umbral lento de operación gestionada. En el caso de los clusters gratuitos (antes conocidos como M0) y los clusters Flex, Atlas desactiva por defecto el umbral de operación de query lenta gestionado por Atlas y no puedes habilitarlo.

Importante

Por favor, lee las siguientes consideraciones antes de habilitar el perfilador del query.

Los datos del perfil pueden incluir información confidencial, incluido el contenido de las consultas de bases de datos. Asegúrate de que exponer estos datos a Atlas sea coherente con tus prácticas de seguridad de la información.

El perfilador del query muestra aproximadamente 100,000 registros muestreados por vez. Muestra todos los registros si se registraron 100,000 o menos registros en los hosts seleccionados y el rango de tiempo.

Atlas no muestra más de 100,000 puntos de datos en los Query Profiler gráficos.

Los datos de registro se procesan en lotes. Los datos pueden retrasarse hasta cinco minutos en tiempo real.

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.

Algunas operaciones de alta latencia $lookup no generan un registro de query lenta para la colección externa. Esto puede ocurrir porque los registros de query lentas corresponden a operaciones que se informan en el perfilador del query, mientras que las métricas de latencia solo se incrementan cuando se adquiere un bloqueo de colección.

Si la $lookup query en una partición puede realizar una lectura local, el $lookup no registra una operación separada para consultar la colección foránea. Una lectura local se refiere a cuando la query en la colección foránea apunta únicamente a la misma partición donde se está ejecutando la operación actual. Como resultado, la operación $lookup aumenta las métricas de latencia de Namespace Insights y el conteo de operaciones, pero no genera un registro de slow query para la colección foránea.

Para activar o desactivar Performance Advisor y el Perfilador del query para un Proyecto, debes tener el rol de Project Owner para el Proyecto o el rol de Organization Owner 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.

Atlas habilita el perfilador del query por defecto.

Para deshabilitar el generador de perfiles de consultas:

1
  1. 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.

  2. Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.

  3. En la barra lateral, haga clic en Project Settings.

La página Configuración del proyecto se muestra.

2

En la sección Database Monitoring Tools, cambie Performance Advisor and Profiler a Off.

La siguiente sección describe cómo encontrar slow queries utilizando el perfilador del query.

1
  1. 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.

  2. Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Clusters en la sección Database.

La página de clústeres se muestra.

2
  1. Haz clic en el nombre del clúster para abrir la barra lateral Cluster.

  2. Haz clic en Query Insights en la barra lateral Cluster.

  3. Haz clic en la pestaña Query Profiler.

    El perfilador del query muestra por defecto todos tus datos del registro en los nodos primarios y secundarios.

3

El perfilador del query utiliza una gráfica de dispersión y una tabla directamente debajo de la gráfica para ayudar a encontrar operaciones lentas.

  1. Seleccione uno o más hosts para los que desea ver las métricas en el menú desplegable Filter by Hosts.

  2. Selecciona el período de tiempo desde los desplegables Time Range o Filter by Date and Time. El perfilador del Query muestra datos de las últimas 24 horas por defecto.

  3. Selecciona la métrica en el desplegable Operation Execution Time. Las opciones incluyen:

    • Operation Execution Time (por defecto): El tiempo total, normalmente en milisegundos, que una operación de base de datos MongoDB tardó en completarse.

    • 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: El número de documentos que coincidieron con los criterios de query que Atlas devolvió para la 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: El número de veces que una operación se pausó 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.

  4. Haz clic en el menú desplegable All operation types para cambiar las operaciones que deseas perfilar. El perfilador del query muestra todos los tipos de operación por defecto.

4
  • Haga clic en un punto del diagrama de dispersión. Se abrirá un panel derecho con información resumida.

  • Haz clic en View more details en el panel del lado derecho para ver la forma completa del query, las estadísticas de ejecución detalladas, el registro de query y sugerencias para mejorar.

  • Haz clic y arrastra a lo largo de los ejes X y Y para ampliar un subconjunto específico de datos recopilados.

  • Desplácese hacia abajo hasta la tabla debajo de la gráfica para ver una lista de consultas lentas por colección. Haga clic en una fila de la tabla para más detalles.

5

Al inspeccionar una slow query, comienza revisando estos patrones y métricas clave:

  • Operation Execution Time (millis): Tiempo de consulta en milisegundos. Este es el principal indicador de una consulta lenta. Si esta métrica se mantiene alta, considere optimizar la lógica de la consulta, procesar los resultados por lotes o replantear cómo se accede a los datos.

  • 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): Número de documentos que MongoDB inspeccionó para la query. Si Docs Examined es significativamente mayor que Docs Returned, esto a menudo significa que:

    • 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(): Número de claves de índice analizadas para la consulta. Si esta métrica es 0 para una consulta que incluye condiciones de filtro, es muy probable que no haya índice y que MongoDB haya analizado toda la colección. Esta es una de las principales causas de lentitud. Si Docs Examined es muy alto y es Keys Examined 0 o muy bajo en comparación con, es probable que Docs Examined esté analizando la colección o un índice muy poco selectivo. Para obtener más información, consulte Índices.

  • Un Docs Examined : Returned Ratio alto significa que la query está escaneando muchos documentos para devolver pocos resultados, lo que puede ser un signo de una query ineficiente o de índices ausentes.

  • Num Yields (numYields): Los rendimientos frecuentes sugieren contención de recursos o operaciones de larga duración que se están pausando, lo que podría afectar el rendimiento general.

  • Response LengthLos tamaños de respuesta inusualmente grandes indican que las consultas están devolviendo más datos de los necesarios. Considera utilizar proyecciones para limitar los campos devueltos.

  • Has Index Coverage (usedIndex): Este booleano confirma si se utilizó un índice de MongoDB. Si se establece en false para una query que debe ser indexada, agregue un índice.

    Nota

    Esta métrica no refleja el uso del índice MongoDB Search.

  • Si hasSort está configurado en true, esto indica que la query contiene un método de sort(). Los sort() métodos no indexados pueden consumir muchos recursos. Verifique la configuración de su índice de búsqueda y confirme si admite el método sort().

Volver

Latencia de query

En esta página