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