私はオンラインショップを実装しています。ネットワーク操作を待っている更新を選択しますか?
オーダーレコードのロックをselect for update
にしても問題ないのですか?
以下は、ロックと見なされる注文状態の変更点です。
- 支払処理:買い手や売り手は順番
- 注文確認を取り消す::その買い手はキャンセルできませんので、売り手は順序を確認し、購入者が注文を支払う、注文はキャンセルオーダー
paid
に
waiting-for-payment
から行きます注文はこれ以上なくなります
たとえば、買い手が注文をキャンセルし、売り手が注文を確認したとき。
ロックしないと、買い手がキャンセルを実行し、売り手が注文を同時に確認する可能性があります。
しかし、ロックすると、買い手はキャンセルするか、売り手が確認します。
これまでのところ、私の質問はこれです:ネットワーク操作(支払い処理)を待っている注文インスタンスをロックすることは、テーブルの行だけであってもあまりにも大きなパフォーマンスオーバーヘッドになりますか?
私はpostgresqlを使用しています
私はあなたの答えをよく理解していません。'より良いトランザクション処理履歴テーブルを使用して、時間の経過とともにトランザクション状態の完全なログを表示する 'このステートメントをよりよく理解できるリンクを提供できますか? – eugene
私の推測では、あなたは状態の変化の履歴を作成します。ステータスを変更した後、前の状態の変更を見て、エラーを発生させ、現在の状態の変更が前の状態から有効でない場合にロールバックします。 – eugene