Docs Menu
Docs Home
/ /
Database Profiler

Encontrar queries lentas

MongoDB incluye el Generador de perfiles de base de datos, que puede identificar consultas lentas y ayudarle a determinar cómo mejorar el rendimiento de las consultas.

Esta tarea utiliza el generador de perfiles de base de datos para identificar consultas lentas en una base de datos en ejecución. mongod Instancia. Cuando está habilitado, el generador de perfiles de base de datos puede afectar el rendimiento y el uso del disco, y exponer datos de consulta no cifrados.

Advertencia

Considera las implicaciones de rendimiento, almacenamiento y seguridad antes de utilizar el perfilador de base de datos en una implementación de producción.

Los usuarios de Atlas pueden aprovechar Atlas Query Profiler para identificar consultas lentas con la comodidad de la visualización a través de un gráfico de dispersión.

Para obtener más información,consulte Supervisar el rendimiento de las consultas con el generador de perfiles de consultas.

Una consulta lenta es aquella que tarda más de un tiempo especificado en ejecutarse. Para esta tarea, el umbral de consulta lenta se establece en 100 milisegundos.

En algunos casos de uso, puede que necesite que las consultas se ejecuten más rápido. En otros, puede que necesite aumentar el umbral para centrarse solo en las consultas más lentas.

Elija un umbral de consulta lento que refleje las necesidades específicas de su aplicación y base de datos.

Cuando está habilitado, el generador de perfiles de base de datos supervisa las consultas solo a nivel de base de datos. Si necesita que el generador de perfiles supervise consultas lentas en varias bases de datos, ejecute el método en cada db.setProfilingLevel() una.

El generador de perfiles de base de datos no está disponible a través mongos de.

1

Para habilitar el perfilador de base de datos para supervisar queries lentas, utiliza el método db.setProfilingLevel():

db.setProfilingLevel(1, 100)
{ was: 0, slowms: 1, sampleRate: 1, ok: 1}

Esto establece el nivel de creación de perfiles en 1, que monitorea las consultas lentas y define una consulta como lenta si tarda más de 100 milisegundos en ejecutarse.

2

Para enumerar todas las consultas lentas encontradas por el generador de perfiles de base de datos, consulte la system.profile colección para obtener datos relevantes:

db.system.profile.find( { },
{
command: 1,
millis: 1,
docsExamined: 1,
keysExamined: 1,
nreturned: 1
}
).sort( { ts: -1 } )
[
{
command: {
find: 'people',
filter: { age: { '$gt': 35 } },
lsid: { id: UUID('ae3e9932-0a78-47ab-b741-01dd3bfb3563') },
'$db': 'contacts'
},
keysExamined: 0,
docsExamined: 100000,
nreturned: 40,
millis: 143
}
]

El comando proporciona una lista de consultas lentas observadas por el perfilador de base de datos.

La proyección filtra los documentos de retorno para incluir información que puede resultarle útil para determinar qué causó que la consulta se ejecutara lentamente.

  • Si keysExamined 0es, indica que la consulta no utilizó ningún índice. Para solucionarlo, cree un índice en la colección.

  • Si se utilizó un índice y docsExamined es mucho mayor que nreturned, indica que el índice no es efectivo. Es posible que deba actualizar el índice o crear uno nuevo en uno o más campos utilizados por el filtro de consulta.

  • Si keysExamined es alto y docsExamined es bajo, indica un uso efectivo del índice.

3

Para garantizar que el generador de perfiles de base de datos no altere aún más el rendimiento, deshabilítelo cuando ya no sea necesario:

db.setProfilingLevel(0)
{ was: 1, slowms: 1, sampleRate: 1, ok: 1}

Para evaluar el rendimiento de una colección con un índice, puede configurar la consulta para ignorar los índices utilizando el hint( { $natural: 1 } ) método.

db.listingsAndReviews.find( {
$or: [
{ "address.market": "Berlin" },
{ "review_scores.review_scores_cleanliness": { $lt: 5 } }
],
$where: function () {
return this.amenities && this.amenities.length > 15;
}
} ).sort( { description: 1 } ).hint( { $natural: 1 } );

Esto puede resultarle útil en los casos en los que desee comparar el rendimiento de las consultas con un escaneo de colección con respecto al de un escaneo de índice.

Volver

Salida

En esta página