У меня возникли некоторые проблемы с уровнями ISOLATION и транзакцией, в которой возникла проблема состояния гонки.
У меня есть таблица с полем состояния, и n-процессы обращаются к нему.Каждая транзакция должна возвращать самую старую строку со статусом = 1 и менять статус на 2. Теоретически процесс 2 не должен иметь возможность получать один и тот же реестр.Но этого не происходит.Поскольку строка не заблокирована для чтения транзакцией.
Ниже вы можете найти псевдокод того, что будет делать транзакция:
- Начать транзакцию;
- Получить самую старую строку (порядок по дате создания) со статусом = 1;
- Обновить строку и установить статус = 2;
- Подтвердить транзакцию;
Состояние гонки происходит между 2 и 3. Поскольку строка не заблокированадля выбора.это возможно в MariaDB?Играя с уровнями изоляции?Сколько будет стоить это?