Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » データベース・オプション » データベース・オプションの概要 » アルファベット順のオプション・リスト

 

request_timeout オプション [データベース]

1 つの要求を実行できる最大時間を設定します。このオプションを使用すると、接続が大量のサーバ・リソースを長時間にわたり消費することを防止できます。

指定可能な値

整数 (秒)、範囲は 0 ~ 86400 (1 日)

デフォルト

0

備考

このオプションを 0 に設定すると、要求はタイムアウトになりません。

要求の実行時間が request_timeout に設定された時間 (CPU 時間ではなく実際の時間) を超えた場合、その要求は中断され、ユーザにエラーが返されます。返されるエラーは、SQLE_REQUEST_TIMEOUT「タイムアウトになったため、要求が中断されました」です。要求がブロックされた場合、blocking_timeout オプションが 0 に設定されていると、要求は最大で request_timeout に指定された秒数の間ブロックされたままとなり、その時間の経過後、ブロッキング・エラー (SQLE_LOCKED「'%2' のローは、ユーザ '%1' によってロックされています」など) を返します。

USER 値と PUBLIC 値 1 ~ 14 は、使用できません。これによって、接続に時間がかかる場合でも (ログイン・プロシージャが複雑であるなどの理由で)、ユーザがデータベース・サーバに接続できなくなることはありません。

このオプションは、データベース・クライアント要求と HTTP/HTTPS 要求のいずれに対しても使用できます。ただし、このオプションをストアド・プロシージャや HTTP/HTTPS 要求に設定しても、現在の要求には影響しません。要求の先頭にあるオプション値が使用されるからです。

request_timeout パブリック・オプションを設定する場合は注意が必要です。このオプションを設定すると、実行時間の長い要求を発行するアプリケーション (dbvalid、dbbackup、dbunload など) が失敗する可能性があります。また、大量のサーバ・リソースは使用しなくても別のユーザでブロックされる可能性のあるアプリケーションも、request_timeout が設定されていると失敗することがあります。このような問題に対処するには、ログイン・プロシージャでは接続の APPINFO 値に基づいて特定のアプリケーションだけに request_timeout オプションを設定します。

多数のローを含む結果セットをフェッチするなど、個々の要求を高速で評価するアプリケーションでは、このオプションを設定しても大量のサーバ・リソースの消費を回避できないことがあります。

参照