Представьте, что мы имеем следующую таблицу,уровня изоляции требуется для надежного де/приращения на одном поле
+----+---------+--------+
| id | Name | Bunnies|
+----+---------+--------+
| 1 | England | 1000 |
| 2 | Russia | 1000 |
+----+---------+--------+
И у нас есть несколько пользователей удаления зайчиков, в течение определенного периода, например, 2-х часов. (Так минимум 0 кроликами, не более 1000 зайчики, кролики возвращаются, не добавленные пользователями)
Я использую два основных запросов транзакций как
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 пользователей сделки одновременно)
Моя проблема заключается в том, как я могу поддерживать безопасность ACID в этом случае, имея возможность одновременно добавлять/увеличивать/уменьшать поле кроликов, оставаясь в пределах (0-1000) Я мог бы установить уровень изоляции в сериализованный, но я «Я беспокоюсь, что это убьет производительность.
Любые советы? Заранее спасибо
А, спасибо, это то, что мне нужно! знак равно – Josh