defaultMaxTimeMS
Nesta página
Definição
defaultMaxTimeMS
Novidades na versão 8.0.
Disponível para
mongod
emongos
.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
.defaultMaxTimeMS
aplica-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 denó 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" : NumberLong(5000) } ], "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1712161244, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(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.