Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
接続で一度に使用できる準備文の最大数を制限するリソースガバナーを制御します。
整数
50
個々の接続または PUBLIC グループに設定できます。すぐに有効になります。どの接続に対しても、このオプションを設定するには DBA 権限が必要です。
準備文を使用するアプリケーションは、準備文が不要になった後で明示的に削除されなかった場合、「準備文のリソースガバナーが制限を超えています。」というエラーを受け取ることがあります。max_statement_count オプションはリソースガバナーであり、これを使用することにより、DBA は 1 つの接続で使用される準備文の数を制限できます。接続の制限を超える操作が行われると、リソースのガバナーを超過していることを示すエラーを出力します。
接続がストアドプロシージャーを実行する場合、プロシージャーはプロシージャー所有者のパーミッションのもとで実行されます。ただし、プロシージャーが使用するリソースは、現在の接続に割り当てられています。
データベースサーバーには、接続によって作成される準備文ごとにデータ構造体が用意されます。アプリケーションがデータベースサーバーに準備文が不要になったことを通知するか、接続が切断されるまで、これらの構造体は解放されません。接続ごとの準備文の数を減らすためには、DROP STATEMENT 要求に相当する処理を実行する必要があります。次の表は、SQL Anywhere でサポートされる API で実行できる文を示しています。
Java と .NET では、文を明示的に削除することをおすすめします。言語ルーチンは文リソースの割り付けを解除するサーバー呼び出しを発行しないため、ガーベジコレクションを使用して文を削除しないでください。また、ガーベジコレクションルーチンが実行される時点について保証はありません。
サーバーにおいて接続のいずれかの時点でデフォルトの最大数を超える準備文のサポートが必要になった場合は、max_statement_count をデフォルトより大きな値に設定する必要があります。ただし、アクティブな準備文が多くなると、サーバーメモリの使用量が増加します。max_statement_count オプションを 0 (ゼロ) に設定し、準備文リソースガバナーを無効にすることもできますが、この方法は推奨できません。このようにすると、アプリケーションが準備文を適切に解放しない場合、データベースサーバーがメモリ不足によって異常終了しやすくなります。