このチュートリアルでは、データベース・トレーシング・ウィザードを使用してデータベースに発生する可能性があるデッドロックを参照する方法を学びます。データベース・トレーシング・ウィザードを使用すると、デッドロックが発生した状態や、デッドロック発生の原因となっている接続を調査することもできます。
デッドロックは、複数のトランザクションが互いにブロックされている場合に発生します。たとえば、トランザクション A がテーブル B にアクセスする必要があるが、テーブル B は トランザクション B によってロックされ、トランザクション B はテーブル A にアクセスする必要があるが、テーブル A はトランザクション A によってロックされている場合などです。これは環状ブロッキングの競合が発生している状態です。
デッドロックが発生している状況は、SQLCODE -306 と -307 が返されることで分かります。デッドロックを解決するために、SQL Anywhere はデッドロックが作成された最後の文を自動的にロールバックします。文が絶え間なくロールバックされる場合は、パフォーマンス問題が発生しています。
レッスン 1:テスト・データベースの作成
レッスン 2:デッドロックの作成
レッスン 3:デッドロック・データの取得
レッスン 4:ブロックされた接続データの確認
レッスン 5:デッドロック・データの表示
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |