Definición
profileModificado en la versión 5.0.
Para un
mongodinstancia, el comando habilita, deshabilita o configura el perfilador de base de datos. El perfilador captura y registra datos sobre el rendimiento de las operaciones de escritura, cursores y comandos de base de datos en una instancia activa demongod. Si el perfilador está deshabilitado, el comando configura cómo se registran las operaciones lentas en el registro de diagnóstico.En
mongod, si el nivel del perfilador de base de datos es2, el registro completo está habilitado en el perfilador y eldiagnostic log.En el nivel de perfilador de base de datos
1, los siguientes ajustes modifican tanto el perfilador como eldiagnostic log:Si el nivel del perfilador de base de datos es
0, el perfilador de base de datos está deshabilitado. En el nivel0, la configuración siguiente solo modifica el registro de diagnósticos:En una
mongosinstancia, el comando sólo configura cómo se escriben las operaciones en el registro de diagnóstico. No se puede habilitar el perfilador de base de datos en unamongosinstancia porquemongosno tiene ninguna colección en la que el perfilador pueda guardar.A partir de MongoDB,5.0 los cambios realizados en el generador de perfiles de base
leveldeslowmssampleRatedatos,, ofiltermediante el El comandoprofileo el método contenedordb.setProfilingLevel()se registran en ellog file.En
mongos, puedes establecer el nivel deprofileen:0para establecer elslowms,sampleRateyfilterpara el registro de diagnóstico;-1para leer la configuración actual.
El perfilador está desactivado por defecto.
Advertencia
El perfilado puede degradar el rendimiento y exponer datos de la consulta no cifrados en el registro del sistema. Considera detenidamente cualquier implicación de rendimiento y seguridad antes de configurar y activar el perfilador en una implementación de producción.
Consulte Sobrecarga del perfilador para obtener más información sobre la posible degradación del rendimiento.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { profile: <level>, slowms: <threshold>, sampleRate: <rate>, filter: <filter expression> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción | |
|---|---|---|---|
| Int | Configura el nivel del perfilador. Los siguientes niveles de perfilador están disponibles:
Dado que el perfilado no está disponible en | |
| Int | Opcional. Valor predeterminado: 100 El umbral de tiempo de operación lento, en milisegundos. Las operaciones que se ejecutan por más tiempo que este umbral se consideran lentas. Las operaciones lentas se registran en función de Cuando Con configuraciones más altas de Este argumento afecta a la misma configuración que la opción de configuración | |
| doble | Opcional. Valor predeterminado: 1.0 La fracción de operaciones lentas que se deben perfilar o registrar. Este argumento afecta la misma configuración que la opción de configuración | |
| Objeto | Opcional. Una consulta que determina qué operaciones se perfilan o registran. La query de filtro toma la siguiente forma: La consulta puede ser cualquier operación legal de Este argumento afecta la misma configuración que la opción de configuración |
Los db.getProfilingStatus() db.setProfilingLevel() métodos de shell y profile proporcionan envoltorios alrededor del comando.
Comportamiento
El comando profile obtiene un bloqueo de escritura en la base de datos afectada mientras activa o desactiva el perfilador. Normalmente, esta es una operación breve. El bloqueo detiene otras operaciones hasta que finaliza el comando profile.
Cuando esté conectado a un clúster fragmentado a través de mongos, puede ejecutar el comando profile en cualquier base de datos.
Ejemplo
Permitir filtrado
Para habilitar la generación de perfiles y filtrar los datos registrados:
db.runCommand( { profile: 1, filter: { $or: [ { millis: { $gte: 100 } }, { user: "testuser@admin" } ] } } )
El filtro solo selecciona operaciones que sean:
al menos
100milisegundos de duración, opresentado por el
testuser.
Desactivar un filtro
Para borrar un filtro de perfil, ejecute profile con la opción filter: "unset".
db.runCommand( { profile: 1, filter: "unset" } )
La operación devuelve un documento con los valores anteriores de la configuración.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().