Definição
defaultMaxTimeMSNovidades na versão 8.0.
Especifica um limite de tempo padrão em todo o cluster em milissegundos para a conclusão de cada operação de leitura individual. 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 .
Observação
defaultMaxTimeMS aplica-se apenas a operações de leitura.
Agregações que incluem o $out ou $merge estágios executam operações de gravar, portanto, não estão sujeitos a defaultMaxTimeMS. O valor de maxTimeMS() ainda se aplica a essas agregações.
Queries de longa duração
If your deployment needs to run long queries, such as analytics node queries, you must specify a timeout for those queries at the operation level using maxTimeMS(). If you don't specify an operation timeout, those queries use the defaultMaxTimeMS timeout, and won't run for the required amount of time.
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.