私はゲームのバックエンドに取り組んでいます。プレイヤーはまずデータベースに保存されているチケットを購入し、次にプレイして特定の賞品を獲得できます。各プレイヤーは最大 60 枚のチケットを購入できます。
ゲームごとの合計チケット数の上限を設定する新しい要件が登場しました - 10 000 チケット。実装には、購入エンドポイントに、その時点で購入したチケットの総数 + 現在の購入に必要なチケットの数が、そのゲームのチケットの最大数以下であることを確認するテストを追加する必要があります。受け付けます。
問題は、チケット テーブルの count を使用して現在の購入済みチケット数を計算すると、その間に他のプレイヤーがチケットを購入した可能性があるため、返される値が古い可能性があることです。
考えられる解決策は、購入中にチケット テーブルをロックすることですが、これはパフォーマンスとユーザー エクスペリエンスに悪影響を及ぼす可能性があります。違う考えがあれば教えてください。