多くの人が同時に使うITシステムにおいてトランザクション制御というのは難しい課題の1つで、同じデータを同時に複数のセッションから更新しないように排他制御を行うというのは基本的な考え方です。
セオリーとしてはデータを更新する前には、そのレコードのデータにロックを掛けて、他から更新できないようにするのですが、色々な機能で更新されるテーブルだとロックがかちあってしまうケースも多々あります。
通常は、先にロックした方が優先されるので、後から更新しにいった方はロック済みということでエラーになるのですが、複数テーブルを更新する処理が複数走っている場合に、お互いがロックし合ってしまって先に進めなくなるケースがあります。
そういうのをデッドロックと呼びます。
これはSAPのシステムに限らず、データ更新を行うシステムならどんなものでも同様の現象を考慮する必要があります。
で、SAPの場合、このデッドロックが起こった場合にログの確認をするための機能が用意されており、今回はその機能の紹介です。
- トランザクションコード:ST04を起動
- 画面左に表示されるメニューから診断 → デッドロックモニタを選択
上記の手順で確認することができるので、デッドロックが発生してしまった場合はここでログを確認してみてください。
コメント