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 fragmento.
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 | espacio de nombres de la colección que se configurará para el muestreo de consultas. |
| string | Requerido | Modo en el que se ejecuta el analizador de consultas. Debe establecerse en |
| doble | Opcional | Número 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
Considere el siguiente comportamiento al ejecutar configureQueryAnalyzer:
Colecciones eliminadas y colecciones renombradas
El muestreo de consultas se desactiva automáticamente al eliminar o cambiar el nombre de la colección. Si desea muestrear consultas después de volver a crear o cambiar el nombre de una colección, debe 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 ocupen 10GB de espacio en disco en menos de cuatro días.
Esta tabla muestra el uso estimado del disco para cada combinación de frecuencia de muestreo y duración:
Tamaño promedio de consulta muestreada (kB) | samplesPerSecond | Duración del muestreo (días) | Número de consultas muestreadas | Tamaño total de las 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 |
consultaAnálisisMuestraExpiraciónSeg
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 consultas
Para supervisar el proceso de muestreo de query, utiliza la etapa $currentOp. Para un ejemplo, consulte queries de muestra.
Ver consultas de muestra
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 recuento de cada tipo de comando capturado por el analizador de consultas, utilice:
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 tenga suficientes muestras, puede desactivar el analizador de consultas.
Limitaciones
No se puede ejecutar
configureQueryAnalyzeren clústeres flexibles de Atlas.No se puede ejecutar
configureQueryAnalyzeren implementaciones independientes.No se puede ejecutar
configureQueryAnalyzerdirectamente en un--shardsvrconjunto de réplicas. Al ejecutarse en un clúster fragmentado,configureQueryAnalyzerdebe ejecutarse enmongosun.No se puede ejecutar
configureQueryAnalyzercontra colecciones de series de tiempo.No se puede ejecutar
configureQueryAnalyzeren colecciones con cifrado consultable.
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 una velocidad de cinco muestras por segundo, utilice el siguiente comando:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "full", samplesPerSecond: 5 } )
Deshabilitar el muestreo de consultas
Para deshabilitar el muestreo de consultas en la colección test.students, utilice el siguiente comando:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "off" } )