Definición
defaultMaxTimeMSNuevo en la versión 8.0.
Disponible para ambos
mongodymongos.Especifica un límite de tiempo por defecto en milisegundos para que se completen las operaciones individuales de lectura. Si una query especifica una opción
maxTimeMS(), ese valor reemplazará el valordefaultMaxTimeMS.defaultMaxTimeMSse aplica a las siguientes operaciones de lectura:
Control de acceso
Para modificar los parámetros del clúster, se debe autenticar como un usuario que tenga uno de los siguientes roles:
Sintaxis
Para configurar defaultMaxTimeMS para su implementación, ejecute el siguiente comando en la base de datos admin:
db.adminCommand( { setClusterParameter: { defaultMaxTimeMS: { readOperations: <value> } } } )
Para ver el valor actual de defaultMaxTimeMS, ejecute el siguiente comando en la base de datos admin:
db.adminCommand( { getClusterParameter: "defaultMaxTimeMS" } )
Comportamiento
Por defecto, defaultMaxTimeMS.readOperations es 0, lo que significa que no se establece un tiempo de espera predeterminado para la query. Si no hay un tiempo de espera de query predeterminado, la query se ejecuta hasta que se devuelva un resultado o se produzca un error.
Si una consulta especifica una opción, ese valor anula maxTimeMS() el defaultMaxTimeMS valor.
Consultas de larga duración
Si su implementación necesita ejecutar consultas largas, como consultas nodo de análisis, debes especificar un tiempo de espera para esas consultas a nivel de operación utilizando maxTimeMS(). Si no especificas un tiempo de espera de operación, esas consultas usarán el tiempo de espera defaultMaxTimeMS y no se ejecutarán durante el tiempo requerido.
Ejemplo
El siguiente comando establece el tiempo de espera de consulta predeterminado en 5000 milisegundos:
db.runCommand( { setClusterParameter: { defaultMaxTimeMS: { readOperations: 5000 } } } )
Para comprobar el valor de defaultMaxTimeMS, ejecute el siguiente comando:
db.adminCommand( { getClusterParameter: "defaultMaxTimeMS" } )
{ "clusterParameters" : [ { "_id" : "defaultMaxTimeMS", "clusterParameterTime" : Timestamp(1711564868, 17), "readOperations" : Long(5000) } ], "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1712161244, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : Long(0) } }, "operationTime" : Timestamp(1712161244, 1) }
Resultados
Después de configurar defaultMaxTimeMS para su implementación, considere estas consultas:
db.test.find( { name: "Carol" } ) db.test.find( { name: "Carol" } ).maxTimeMS( 8000 )
La primera consulta utiliza el valor defaultMaxTimeMS de 5,000 milisegundos.
La segunda consulta especifica maxTimeMS(), que sobrescribe el defaultMaxTimeMS y provoca que la consulta agote el tiempo de espera después de 8,000 milisegundos.