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 )
第一个查询使用5的defaultMaxTimeMS
值, 000毫秒。
第二个查询指定了maxTimeMS()
,它会覆盖defaultMaxTimeMS
并导致查询在8 ( 000毫秒)后超时。