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 サーバ - SQL の使用法 » データベース・パフォーマンスのモニタリングと改善 » アプリケーション・プロファイリングのチュートリアル

 

チュートリアル:デッドロックの診断

このチュートリアルでは、データベース・トレーシング・ウィザードを使用してデータベースに発生する可能性があるデッドロックを参照する方法を学びます。データベース・トレーシング・ウィザードを使用すると、デッドロックが発生した状態や、デッドロック発生の原因となっている接続を調査することもできます。

デッドロックは、複数のトランザクションが互いにブロックされている場合に発生します。たとえば、トランザクション A がテーブル B にアクセスする必要があるが、テーブル B は トランザクション B によってロックされ、トランザクション B はテーブル A にアクセスする必要があるが、テーブル A はトランザクション A によってロックされている場合などです。これは環状ブロッキングの競合が発生している状態です。

デッドロックが発生している状況は、SQLCODE -306 と -307 が返されることで分かります。デッドロックを解決するために、SQL Anywhere はデッドロックが作成された最後の文を自動的にロールバックします。文が絶え間なくロールバックされる場合は、パフォーマンス問題が発生しています。


レッスン 1:テスト・データベースの作成
レッスン 2:デッドロックの作成
レッスン 3:デッドロック・データの取得
レッスン 4:ブロックされた接続データの確認
レッスン 5:デッドロック・データの表示