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
/ /

configureQueryAnalyzer (comando de base de datos)

configureQueryAnalyzer

Nuevo 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 analyzeShardKey para calcular métricas sobre la distribución de lectura y escritura de una clave de partición.

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.

El comando tiene la siguiente sintaxis:

db.adminCommand(
{
configureQueryAnalyzer: <string>,
mode: <string>,
samplesPerSecond: <double>
}
)

configureQueryAnalyzer tiene los siguientes campos:

Campo
Tipo
Necesidad
Descripción

configureQueryAnalyzer

string

Requerido

namespace de la colección que se va a configurar para el muestreo de consultas.

mode

string

Requerido

El modo en que se ejecuta el analizador de query. Debe estar configurado en "full" o "off".

samplesPerSecond

doble

Opcional

Cantidad de muestras por segundo.

  • Cuando mode esté configurado en "full", samplesPerSecond debe establecerse entre 0 y 50.

  • Cuando mode se configura en "off", el servidor ignora samplesPerSecond.

Para obtener más detalles, consulte el límite superior de samplesPerSecond.

configureQueryAnalyzer requiere uno de los siguientes roles:

  • dbAdmin Rol contra la base de datos que contiene la colección que se está analizando

  • clusterManager papel contra el cluster

Ten en cuenta el siguiente comportamiento al ejecutar configureQueryAnalyzer:

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.

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

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.

Para supervisar el proceso de muestreo de query, utiliza la etapa $currentOp. Para un ejemplo, consulte queries 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 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.

  • No puedes ejecutar configureQueryAnalyzer en Atlas clústeres flexibles.

  • No se puede ejecutar configureQueryAnalyzer en implementaciones autónomas.

  • No puedes ejecutar configureQueryAnalyzer directamente contra un --shardsvr set de réplicas. Al ejecutarse en un clúster fragmentado, configureQueryAnalyzer debe ejecutarse contra un mongos.

  • No se puede ejecutar configureQueryAnalyzer en colecciones de series temporales.

  • No se puede ejecutar configureQueryAnalyzer en colecciones con Queryable Encryption.

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.

  • newConfiguration Contiene campos que describen la nueva configuración.

configureQueryAnalyzer devuelve un documento similar al siguiente:

{
ok: 1,
oldConfiguration: {
mode: ...,
samplesPerSecond: ...
}
newConfiguration: {
...
}
}

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
}
)

Para deshabilitar el muestreo de consultas en la colección test.students, utilice el siguiente comando:

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "off"
}
)

Volver

configureCollectionBalancing

En esta página