Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
1 つの要求を実行できる最大時間を設定します。このオプションを使用すると、接続が大量のサーバリソースを長時間にわたり消費することを防止できます。
整数 (秒)、範囲は 0 ~ 86400 (1 日)
0
個別の接続または PUBLIC に対して設定できます。PUBLIC または別のユーザ/ロールに対してこのオプションを設定するには SET ANY PUBLIC OPTION システム権限が必要です。
このオプションを 0 に設定すると、要求はタイムアウトになりません。
要求の実行時間が request_timeout に設定された時間 (CPU 時間ではなく実際の時間) を超えた場合、その要求は中断され、ユーザにエラーが返されます。返されるエラーは SQLE_REQUEST_TIMEOUT (タイムアウトになったため、要求が中断されました) です。要求がブロックされ、blocking_timeout オプションが 0 に設定されている場合は、最長 request_timeout 秒の間引き続き要求がブロックされる可能性があり、その後にブロックエラー (たとえば、SQLE_LOCKED (ユーザ '%1' の '%2' 内のローがロックされています) など) が返されます。
1 ~ 14 の範囲の値は、ユーザオプションまたは PUBLIC オプションとしては指定できませんが、テンポラリオプションとしては指定できます。これによって、接続に時間がかかる場合でも (ログインプロシージャが複雑であるなどの理由で)、ユーザがデータベースサーバに接続できなくなることはありません。
このオプションは、データベースクライアント要求と HTTP/HTTPS 要求のいずれに対しても使用できます。ただし、このオプションをストアドプロシージャや HTTP/HTTPS 要求に設定しても、現在の要求には影響しません。要求の先頭にあるオプション値が使用されるからです。
request_timeout パブリックオプションを設定する場合は注意が必要です。このオプションを設定すると、実行時間の長い要求を発行するアプリケーション (dbvalid、dbbackup、dbunload など) が失敗する可能性があります。また、大量のサーバリソースは使用しなくても別のユーザでブロックされる可能性のあるアプリケーションも、request_timeout が設定されていると失敗することがあります。このような問題に対処するには、ログインプロシージャでは接続の APPINFO 値に基づいて特定のアプリケーションだけに request_timeout オプションを設定します。
多数のローを含む結果セットをフェッチするなど、個々の要求を高速で評価するアプリケーションでは、このオプションを設定しても大量のサーバリソースの消費を回避できないことがあります。