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 の使用法 » パフォーマンスの向上、診断、モニタリング » アプリケーションプロファイリングのチュートリアル » チュートリアル:デッドロックの診断

 

レッスン 2:デッドロックの作成とデータの取得

データベーストレーシングウィザードを使用して診断トレーシングセッションを作成することにより、デッドロックを作成してその情報を取得します。

前提条件

このレッスンでは、このチュートリアルの開始時に、権限のセクションで一覧されているロールと権限を持っていることを前提としています。 チュートリアル:デッドロックの診断

このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。レッスン 1:データベースのセットアップ を参照してください。

内容と備考

アプリケーションプロファイリングのチュートリアルでは、チュートリアルを実行しているデータベースと同じテストデータベース (app_profiling.db) にトレーシング情報が格納されます。ただし、負荷の高いデータベースをプロファイリングする場合は、パフォーマンスへの影響を避けるため、運用データベースとは別のデータベースにトレーシングデータを格納することを検討してください。

 ♦ タスク
  1. Sybase Central を起動します。[スタート] » [プログラム] » [SQL Anywhere 16] » [管理ツール] » [Sybase Central] をクリックします。

  2. Sybase Central で、次のように app_profiling.db に接続します。

    1. [接続] » [SQL Anywhere 16 に接続] をクリックします。

    2. [接続] ウィンドウで、テストデータベース app_profiling.db に接続するための情報を以下のフィールドに入力します。

      1. [認証] フィールドで [データベース] を選択します。

      2. [ユーザ ID] フィールドに、DBA と入力します。

      3. [パスワード] フィールドに、sql と入力します。

      4. [アクション] ドロップダウンリストで、[このコンピュータのデータベースを起動して接続] をクリックします。

      5. [データベースファイル] フィールドに、C:\AppProfilingTutorial\app_profiling.db と入力します。

      6. [開始行] フィールドに、dbeng16 -x tcpip と入力します。

    3. [接続] をクリックします。

  3. Sybase Central で、[モード] » [アプリケーションプロファイリング] をクリックします。

    アプリケーションプロファイリングウィザードが表示された場合は、[キャンセル] をクリックします。

  4. データベーストレーシングウィザードを起動します。

    1. [ファイル] » [トレーシング] をクリックします。

    2. [ようこそ] ページで、[次へ] をクリックします。

    3. [トレーシング詳細レベル] ページで、[高 (短期間の集中的なモニタリングに推奨)] をクリックし、[次へ] をクリックします。

    4. [トレーシングレベルの編集] ページで、[次へ] をクリックします。

    5. [外部データベースの作成] ページで、[新しいデータベースを作成せず、既存のトレーシングデータベースを使用] を選択し、[次へ] をクリックします。

    6. [トレースの開始] ページで、[このデータベースにトレーシングデータを保存] をクリックします。

    7. 格納するトレーシングデータの量を制限しない場合は、[制限なし] をクリックし、[完了] をクリックします。

  5. 次の手順に従って、デッドロックを発生させます。

    1. 左ウィンドウ枠で、app_profiling - DBA が選択されていることを確認してから、[ファイル] » [Interactive SQL を開く] をクリックします。

      Interactive SQL が起動し、app_profiling.db データベースに接続します。

    2. 前の手順を繰り返し、2 番目の Interactive SQL ウィンドウを開きます。

    3. 最初の Interactive SQL ウィンドウで、次の SQL 文を実行します。

      CALL "DBA"."proc_deadlock1"();
    4. 最初の Interactive SQL ウィンドウで SQL 文を実行してから 20 秒以内に、2 番目の Interactive SQL ウィンドウで次の SQL 文を実行します。

      CALL "DBA"."proc_deadlock2"();

      しばらくすると、デッドロックが検出されたことを示す [ISQL エラー] ウィンドウが表示されます。

      proc_deadlock1 は deadlock2 テーブルにアクセスする必要がありますが、このテーブルが proc_deadlock2 によってロックされていることによって、このデッドロックが発生しました。同様に、proc_deadlock2 は deadlock1 テーブルにアクセスする必要がありますが、このテーブルも proc_deadlock1 によってロックされています。

    5. [OK] をクリックします。

  6. デッドロックした操作は SQL Anywhere によって停止されたため、Interactive SQL ウィンドウを閉じることができます。

  7. Sybase Central の左ウィンドウ枠で app_profiling - DBA を選択し、[ファイル] » [トレーシング] » [トレーシングを停止して保存] をクリックして、トレーシングセッションを停止します。

結果

デッドロックが作成され、その情報が収集されます。

 参照