すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:デッドロック

最終更新日:Mar 29, 2026

ApsaraDB RDS for SQL Server の デッドロック タブでは、ご利用のインスタンスにおけるデッドロックイベントを表示します。表示内容には、トランザクション開始時刻、セッション ID、ロック済みリソース、およびデッドロックの種類が含まれます。これらの情報を活用して、デッドロックを引き起こす SQL ステートメントおよびトランザクションを特定・修正してください。

仕組み

トランザクションがリソースを変更する際、SQL Server はデータ整合性を保つため、そのリソースをロックして同時更新を防止します。

デッドロックとは、2 つのトランザクションが互いに相手が保持するロックを待機している状態です。たとえば、トランザクション A がリソース A をロックしリソース B を待機中であり、一方でトランザクション B がリソース B をロックしリソース A を待機中の場合、どちらのトランザクションも進行できなくなります。この状況において、SQL Server はいずれかのトランザクションを終了させます。

死锁

SQL Server はロールバックコストに基づいて終了対象のセッションを選択します。つまり、ロールバックに最も低いコストがかかるトランザクション(デッドロック被害者)を終了させます。たとえば、SELECT セッションと UPDATE セッションの間でデッドロックが発生した場合、ロールバックコストが低いため、SELECT セッションが終了されます。

基本概念

デッドロックの種類

ApsaraDB RDS for SQL Server では、以下のデッドロックの種類を検出します。

  • KeyDeadlock

  • ObjectDeadLock

  • RIDDeadlock

  • PageDeadlock

  • ComplieDeadlock

各タイプの詳細については、「ロックの粒度と階層」をご参照ください。

ロックモード

ロックモード は、リソースへのアクセス方法によって異なります。

  • 共有 (S): 共有ロックが解放されるまで、リソースの読み取りは可能ですが、変更はできません。

  • 更新 (U): リソースに対して排他ロックを取得するまで、他のトランザクションによる変更はできません。

  • 排他的 (X): ロックを保持するトランザクションが排他ロックを解放するまで、他のトランザクションによるリソースへのアクセスは一切許可されません。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • RDS インスタンスが、クラウドディスク上で SQL Server 2008 R2 を実行していないこと

  • RDS インスタンスが、以下のリージョンのいずれかに配置されていること:中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深セン)、中国 (河源)、中国 (広州)、中国 (成都)、中国 (香港)、シンガポール、または UAE (ドバイ)

デッドロックの詳細情報の表示

  1. インスタンス ページに移動します。上部のナビゲーションバーから、ご利用の RDS インスタンスが配置されているリージョンを選択し、その後、インスタンス ID をクリックします。

  2. 左側のナビゲーションウィンドウで、自律サービス > ロック最適化 を選択します。

デッドロックタブのリファレンス

デッドロック数

直近の時間範囲におけるデッドロックの発生回数を表示します。結果をフィルターするには、時間範囲を指定してください。

死锁数量

デッドロックの傾向

指定した時間範囲内におけるデッドロックの種類別の分布を表示します。

死锁变化趋势
  • 開始時刻 および 終了時刻 を設定し、検索 をクリックします。指定できる時間範囲は最大 30 日間です。

  • 過去 24 時間過去 7 日間、または 先月 をクリックして、あらかじめ定義された時間範囲を使用します。

  • グラフ上のデータポイントにマウスカーソルを合わせると、その時点におけるデッドロックの種類と発生回数を確認できます。

  • グラフ右上隅にあるアイコン 图标 を使用して、表示スタイルを変更したり、グラフを画像としてダウンロードしたりできます。

デッドロックの詳細

死锁详细信息

デッドロックレコード横の 加号 アイコンをクリックすると、ブロッキングおよびブロッキングされたセッションの詳細が展開されます。

フィールド説明
LastTranStartedセッション内でトランザクションが開始された時刻
SPIDセッション ID
IsVictim当該セッションがデッドロック被害者として終了されたかどうか
LogUsedセッション内で生成されたトランザクションログのサイズ(バイト単位)
LockModeセッションが保持しているロックモード
WaitResourceDescトランザクションが待機中のリソースの詳細
ObjectOwnedセッションがロックしているオブジェクト
ObjectRequestedトランザクションがロックしようとしているオブジェクト
WaitResourceトランザクションが待機中のリソースの名前
HostNameトランザクションが実行されているホスト
LoginNameトランザクションを実行するために使用されたアカウント
Statusセッション内のトランザクションのステータス
ClientAppトランザクションを開始したクライアント
SQLTextセッション内で実行された SQL ステートメント。分析のためにコピーするには、ステートメントをクリックします。

デッドロックレコードをクリックすると、デッドロックダイアグラム セクションが開きます。

デッドロックダイアグラム

死锁关系图

ブロックしているセッションおよびブロックされたセッションの関係、およびロック済みリソースの詳細を表示します。[ダウンロード] をクリックして XDL ファイルをダウンロードし、SQL Server Management Studio (SSMS) で開いて、完全なデッドロック グラフを表示します。

次のステップ

ApsaraDB RDS for SQL Server インスタンスでデッドロックが発生した場合はどうすればよいですか?