Definição
defaultMaxTimeMSNovidades na versão 8.0.:
Especifica um limite de tempo padrão em milissegundos para que as operações de leitura individual sejam concluídas. Se uma query especificar uma opção
maxTimeMS(), esse valor substituirá o valordefaultMaxTimeMS.defaultMaxTimeMSaplica-se às seguintes operações de leitura:
Controle de acesso
Para modificar os parâmetros do cluster, você deve se autenticar como um usuário que tenha uma das seguintes roles:
Sintaxe
Para configurar o defaultMaxTimeMS para seu sistema, execute o seguinte comando no banco de dados do admin :
db.adminCommand( { setClusterParameter: { defaultMaxTimeMS: { readOperations: <value> } } } )
Para visualizar o valor atual de defaultMaxTimeMS, execute o seguinte comando no banco de banco de dados do admin :
db.adminCommand( { getClusterParameter: "defaultMaxTimeMS" } )
Comportamento
Por padrão, defaultMaxTimeMS.readOperations é 0, o que significa que nenhum tempo limite de query padrão está definido. Se não houver um tempo limite de query padrão, a query será executada até retornar um resultado ou falhar.
Se uma query especificar uma opção maxTimeMS() , esse valor substituirá o valor defaultMaxTimeMS .
Queries de longa duração
Se o seu sistema precisar executar queries longas, como queries de nó de analítica , você deverá especificar um tempo limite para essas queries no nível de operação usando maxTimeMS(). Se você não especificar um tempo limite de operação, essas queries usarão o tempo limite defaultMaxTimeMS e não serão executadas durante o tempo necessário.
Exemplo
O comando a seguir define o tempo limite padrão da query 5000 milissegundos:
db.runCommand( { setClusterParameter: { defaultMaxTimeMS: { readOperations: 5000 } } } )
Para verificar o valor de defaultMaxTimeMS, execute o seguinte 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
Depois de definir defaultMaxTimeMS para seu sistema, considere estas queries:
db.test.find( { name: "Carol" } ) db.test.find( { name: "Carol" } ).maxTimeMS( 8000 )
A primeira query usa o valor defaultMaxTimeMS de 5,000 milissegundos.
A segunda query especifica maxTimeMS(), que substitui defaultMaxTimeMS e faz com que a query atinja o tempo limite após 8,000 milissegundos.