データベースのデッドロックが発生する従来の理由の 1 つは、2 つのトランザクションが異なる順序でテーブルを挿入および更新している場合です。
たとえば、トランザクション A はテーブル A に挿入し、次にテーブル B に挿入します。
そして、トランザクション B がテーブル B に挿入され、その後に A が続きます。
このようなシナリオでは、常にデータベース デッドロックのリスクがあります (シリアライズ可能な分離レベルを使用していないと仮定します)。
私の質問は次のとおりです。
すべてのトランザクションが同じ順序で挿入および更新されるようにするために、設計でどのようなパターンに従いますか。私が読んでいた本には、テーブルの名前でステートメントを並べ替えることができるという提案がありました。このようなことや別のことをしたことがありますか - すべての挿入と更新が同じ順序になることを強制しますか?
レコードの削除についてはどうですか?削除は子テーブルから開始する必要があり、更新と挿入は親テーブルから開始する必要があります。これがデッドロックに陥らないようにするにはどうすればよいでしょうか?