Definición
configureQueryAnalyzerNuevo en la versión 7.0.
Configura el muestreo de consultas para una colección en un conjunto de réplicas o un clúster fragmentado. Las consultas muestreadas proporcionan información a
analyzeShardKeypara calcular métricas sobre la distribución de lectura y escritura de una clave de partición.
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.adminCommand( { configureQueryAnalyzer: <string>, mode: <string>, samplesPerSecond: <double> } )
Campos de comandos
configureQueryAnalyzer tiene los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | namespace de la colección que se va a configurar para el muestreo de consultas. |
| string | Requerido | El modo en que se ejecuta el analizador de query. Debe estar configurado en |
| doble | Opcional | Cantidad de muestras por segundo.
Para obtener más detalles, consulte el límite superior de samplesPerSecond. |
Control de acceso
configureQueryAnalyzer requiere uno de los siguientes roles:
dbAdminRol contra la base de datos que contiene la colección que se está analizandoclusterManagerpapel contra el cluster
Comportamiento
Ten en cuenta el siguiente comportamiento al ejecutar configureQueryAnalyzer:
Colecciones descartadas y colecciones renombradas
Query sampling se desactiva automáticamente cuando la colección se descarta o se renombra. Si deseas muestrear consultas después de que se recree o renombre una colección, debes reconfigurar el muestreo de consultas.
Límite superior de muestras por segundo
El límite superior para samplesPerSecond es 50. Una tasa más alta hace que las consultas muestreadas llenen 10GB de espacio en disco en menos de cuatro días.
Esta tabla muestra el uso estimado de disco para cada combinación de tasa de muestreo y duración:
Tamaño promedio de consulta muestreada (kB) | samplesPerSecond | Duración del muestreo (días) | Número de queries de muestra | Tamaño total de consultas muestreadas (GB) |
|---|---|---|---|---|
0.5 | 0.1 | 7 | 60,480 | 0.03024 |
0.5 | 10 | 7 | 6,048,000 | 3.024 |
0.5 | 50 | 7 | 30,240,000 | 15.12 |
1000 | 50 | 1 | 4,320,000 | 4320 |
16,000 | 50 | 1 | 4,320,000 | 69,120 |
queryAnalysisSampleExpirationSecs
Las consultas muestreadas se almacenan en una colección interna con un índice TTL expireAfterSeconds de. Para configurar,expireAfterSeconds utilice el queryAnalysisSampleExpirationSecs parámetro de servidor. Las consultas muestreadas se eliminan automáticamente después queryAnalysisSampleExpirationSecs de.
Progreso del muestreo de query
Para supervisar el proceso de muestreo de query, utiliza la etapa $currentOp. Para un ejemplo, consulte queries de muestra.
Ver muestras de queries
Para ver consultas muestreadas de todas las colecciones o de una colección específica, utilice la $listSampledQueries etapa de agregación.
Para ver el conteo de cada tipo de comando capturado por el analizador de query, use:
db.getSiblingDB("admin").aggregate( [ { "$listSampledQueries": { ns: "<db.collectionName>" } }, { "$group": { "_id": { ns: "$ns", cmdName: "$cmdName" }, count: { "$sum": 1 } } }, { "$project": { "_id.ns": 1, "_id.cmdName": 1, "count": 1 // Explicitly include fields to output } }, { "$sort": { "_id.ns": 1 } } ] );
[{ count: 10, cmdName: 'aggregate' }, { count: 51, cmdName: 'delete' }, { count: 25, cmdName: 'distinct' }, { count: 100, cmdName: 'find' }, { count: 24, cmdName: 'findAndModify' }, { count: 7, cmdName: 'update' }]
Cuando tengas suficientes muestras, puedes desactivar el analizador de query.
Limitaciones
No puedes ejecutar
configureQueryAnalyzeren Atlas clústeres flexibles.No se puede ejecutar
configureQueryAnalyzeren implementaciones autónomas.No puedes ejecutar
configureQueryAnalyzerdirectamente contra un--shardsvrset de réplicas. Al ejecutarse en un clúster fragmentado,configureQueryAnalyzerdebe ejecutarse contra unmongos.No se puede ejecutar
configureQueryAnalyzeren colecciones de series temporales.No se puede ejecutar
configureQueryAnalyzeren colecciones con Queryable Encryption.
Salida
configureQueryAnalyzer devuelve un documento que contiene campos que describen la configuración anterior, si existe, y campos que describen la nueva configuración.
oldConfiguration, si existe, contiene campos que describen la configuración anterior.newConfigurationContiene campos que describen la nueva configuración.
configureQueryAnalyzer devuelve un documento similar al siguiente:
{ ok: 1, oldConfiguration: { mode: ..., samplesPerSecond: ... } newConfiguration: { ... } }
Ejemplos
Habilitar el muestreo de query
Para habilitar el muestreo de consultas en la colección test.students a un ritmo de cinco muestras por segundo, utiliza el siguiente comando:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "full", samplesPerSecond: 5 } )
Deshabilitar muestreo de query
Para deshabilitar el muestreo de consultas en la colección test.students, utilice el siguiente comando:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "off" } )