次のようなテーブルがあると想像してください。
+----+---------+--------+
| id | Name | Bunnies|
+----+---------+--------+
| 1 | England | 1000 |
| 2 | Russia | 1000 |
+----+---------+--------+
また、2時間などの指定された期間、複数のユーザーがバニーを削除しています。(したがって、最小0のバニー、最大1000のバニー、バニーが返されますが、ユーザーによって追加されることはありません)
私は次のような2つの基本的なトランザクションクエリを使用しています
BEGIN;
UPDATE `BunnyTracker` SET `Bunnies`=`Bunnies`+1 where `id`=1;
COMMIT;
誰かがバニーを返すと、
BEGIN;
UPDATE `BunnyTracker` SET `Bunnies`=`Bunnies`-1 where `id`=1 AND `Bunnies` > 0;
COMMIT;
誰かがバニーを連れて行こうとしたとき。私はそれらのクエリが内部である種の原子性を実装すると仮定しています
ユーザーが各国が持っているよりも多くのバニーをとることができないことが不可欠です(つまり、23人のユーザーが同時に取引する場合は-23バニー)
私の問題は、この場合、バニーフィールドを同時に追加/インクリメント/デクリメントしながら、境界(0〜1000)内にとどまりながら、ACIDの安全性を維持するにはどうすればよいですか?分離レベルをシリアル化に設定できますが、私はmは、パフォーマンスが低下するのではないかと心配していました。
任意のヒント?前もって感謝します