defaultMaxTimeMS
定义
访问控制
要修改集群参数,你必须进行身份验证,成为以下角色之一用户
语法
要在您的部署中设置defaultMaxTimeMS
,请在admin
数据库上运行以下命令
db.adminCommand( { setClusterParameter: { defaultMaxTimeMS: { readOperations: <value> } } } )
要查看defaultMaxTimeMS
的当前值,请在admin
数据库上运行以下命令
db.adminCommand( { getClusterParameter: "defaultMaxTimeMS" } )
行为
默认情况下,defaultMaxTimeMS.readOperations
为0,表示没有设置默认查询超时。如果没有默认查询超时,查询将运行,直到返回结果或失败。
如果查询指定了maxTimeMS()
选项,则该值将覆盖defaultMaxTimeMS
值。
长时间运行的查询
如果您的部署需要运行长时间查询,例如分析节点查询,您必须在操作级别使用maxTimeMS()
指定这些查询的超时时间。如果您未指定操作超时,这些查询将使用defaultMaxTimeMS
超时,并且不会运行所需的时间。
示例
以下命令设置默认查询超时为5000毫秒
db.runCommand( { setClusterParameter: { defaultMaxTimeMS: { readOperations: 5000 } } } )
要检查defaultMaxTimeMS
的值,请运行以下命令
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) }
结果
在您为您的部署设置defaultMaxTimeMS
之后,请考虑以下查询
db.test.find( { name: "Carol" } ) db.test.find( { name: "Carol" } ).maxTimeMS( 8000 )
第一个查询使用默认的defaultMaxTimeMS
值5,000毫秒。
第二个查询指定了maxTimeMS()
,它覆盖了defaultMaxTimeMS
,并导致查询在8,000毫秒后超时。