Learn VisualLearn DB Visual
EN

待つだけでは循環を解けない

デッドロックは待ちの循環です。例えばAが行1をロックして行2を待ち、Bが行2をロックして行1を待つと、互いに相手を待ち続けます。PostgreSQLはこの循環を検出すると、どちらか一方のトランザクションを中断してデッドロックを解消します。同じ順序でロックを取得したり、トランザクションを短くしたりすることで、この循環が起きる機会を減らせます。

中断された処理はどうする?