DBアプリケーションを作成する際、デッドロックを回避するために考慮すべき点のまとめ。 ここに書くことは、今までの経験 (Oracle) を思い出し、「こうすればコーディング時点でデッドロックを回避出来るんじゃないか」と、捻り出したので、多少間違いがあるかもしれません。 後日、PostgreSQLにて検証してみようと思います。 1. 同一トランザクション内の複数テーブルアクセス デッドロックの説明でもっともわかりやすい基本的な例として引用されるパターン。 例えばA, Bというテーブルがあるとき、二つのトランザクションで トランザクション1 : A -> B トランザクション2 : B -> A の順にテーブルの更新アクセスをしていると、同時にアクセスされた時にデッドロックとなる。 (実際は同一レコードに対してアクセスした場合) 対策: ・ コーディング規約として、同一トランザクション内のテー