ロック・タイムアウト問題の診断

リソースのロックを待つトランザクションの待ち時間が、locktimeout データベース構成パラメーターで指定された待ち時間の値を超えると、ロック・タイムアウトが発生します。 このロック・タイムアウトでは時間が消費され、SQL 照会パフォーマンスの低下の原因となります。 ロック・タイムアウト問題は、ロック・タイムアウトの発生回数が増え、locktimeout データベース構成パラメーターがゼロ以外の時刻値に設定されている場合に発生することがあります。

始める前に

一般に、処理の遅延やローパフォーマンスなどのシステムの異常動作が起きていることを客観的に評価できるようにするためには、システムの標準動作 (ベースライン) を記述した情報を入手している必要があります。 その後、疑わしい異常動作の観察とベースラインを比較できます。 定期的な運用モニター・タスクをスケジュールしてベースライン・データを収集することは、トラブルシューティング・プロセスのキー・コンポーネントです。 システムのベースライン操作の確立について詳しくは、「システム・パフォーマンスの操作モニター」を参照してください。

ロックタイムアウトのロックイベントの監視方法については、 ロックイベントの監視 を参照してください。

このタスクについて

診断
ロック待機の状態は、トランザクションのロールバックの原因となるロック・タイムアウトにつながる場合があります。 ロック待機がロック・タイムアウトになるまでの時間は、データベース構成パラメーター locktimeout で指定します。 過剰な回数のロック・タイムアウトは、デッドロックと同様にシステムにダメージを及ぼします。 ほとんどの実動システムでデッドロックは比較的にまれなことですが、ロック・タイムアウトはもっと一般的に生じます。 通常、アプリケーションではこれらは同様の仕方で扱う必要があり、最初からトランザクションを再実行しなければなりません。 これが生じる比率をモニターすると、DBA が認識することなく、数多くのロック・タイムアウトがかなり余分の負荷をシステムに生じさせるのを回避するのに役立ちます。
標識サイン
以下のようなロック・タイムアウトの標識サインを見つけてください。
  • アプリケーションがトランザクションを頻繁に再実行している
  • lock_timeouts モニター・エレメント値が上昇している
  • 管理通知ログのロック・タイムアウト・メッセージの項目
モニター対象
イベントのロックには比較的一時的な性質があるので、ロック・イベントのデータを一定の時間にわたり定期的に収集すると、進展中の状況をより良く理解するのに非常に役立ちます。
管理通知ログでロック・タイムアウト・メッセージをモニターできます。
注: ロックタイムアウトメッセージを管理通知ログファイルに書き込むには、 mon_lck_msg_lvl データベース構成パラメータを3に設定します。
イベント・モニターを作成し、ワークロードまたはデータベースのロック・タイムアウト・データを収集します。
重要な標識となるモニター・エレメントは以下のとおりです。
  • lock_timeouts 値が上昇している
  • int_rollbacks 値が上昇している

ここにリストされた標識サインが 1 つ以上見つかった場合、ロック・タイムアウト問題が発生している可能性があります。 この問題を解決するには、「次に行うこと」セクションのリンクに従ってください。

次の作業

ロックタイムアウトが問題の原因である可能性が高いと診断された場合、問題を解決するための手順を実行します。 ロックタイムアウト問題の解決