Postgres 9.1 を使用しています。同じトランザクションで複数の SELECT FOR UPDATES を使用すると、競合状態が発生する可能性があるかどうか疑問に思っています。
2 つの同時トランザクション:
トランザクション 1: テーブル 1 の更新を選択 -- ロックを正常に取得
トランザクション 2: テーブル 2 の更新を選択 -- ロックを正常に取得
トランザクション 2: テーブル 1 の更新を選択 -- トランザクション 1 からのロック解放を待機
トランザクション 1: テーブル 2 の更新を選択 -- トランザクション 2 からのロック解放を待機
この状況ではどうなりますか?待機中のトランザクションの 1 つが最終的にタイムアウトしますか? もしそうなら、タイムアウト期間を設定する方法はありますか?
編集:deadlock_timeout は私が探している構成ですか?