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

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ SQL の使用法 » トランザクションと独立性レベル » トランザクションのブロックとデッドロック » トランザクションのブロック » デッドロック

 

デッドロックでブロックされるユーザを決定する方法

sa_conn_info システムプロシージャを使用して、どの接続がデッドロックでブロックされているかを判別できます。このプロシージャは、接続ごとに 1 つのローで構成される結果セットを返します。結果セットのカラムの 1 つには、接続がブロックされているかどうか、およびブロックされている場合は、どの接続でブロックされているかがリストされます。結果セットは、接続がブロックされているかどうかと、それをブロックしている接続を示します。

デッドロックが発生した場合は、デッドロックイベントを使用してアクションを実行することもできます。イベントハンドラでは、sa_report_deadlocks プロシージャを使用して、デッドロックが発生するに至った状況に関する情報を取得できます。データベースサーバからデッドロックの詳細を取り出すには、log_deadlocks オプションを使用して RememberLastStatement 機能を有効にします。

次の例では、デッドロックが発生した場合にその情報を取得するために使用できるテーブルとシステムイベントの設定方法を示します。アプリケーションで頻繁にデッドロックが発生する場合は、アプリケーションプロファイリングを使用するとデッドロックの原因の究明に役立ちます。

 例:デッドロックの発生時のアクションの実行
 参照