デフォルトMaxTimeMS
定義
defaultMaxTimeMS
バージョン8.0の新機能。
個々の読み取り操作が完了するためのデフォルトの時間制限をミリ秒単位で指定します。 クエリで
maxTimeMS()
オプションが指定されている場合、その値はdefaultMaxTimeMS
の値を上書きします。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
の 値、5000 ミリ秒が使用されます。
2 番目のクエリではmaxTimeMS()
を指定します。これによりdefaultMaxTimeMS
が上書きされ、クエリは8 、 000ミリ秒後にタイムアウトします。