定義
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" : Long(5000) } ], "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1712161244, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : Long(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ミリ秒後にタイムアウトします。