ОбзорКак справиться с проблемами параллелизма с использованием транзакций Yii2 и MySQL?
Рассмотрим следующие детали:
- У нас есть таблица с именем
user
. В нем находится столбец с именемwallet
. - У нас есть таблица с именем
walletAction
. Мы вставляем новую запись в каждый действие кошелька, который делает пользователь. Эта таблица действует как некоторый журнал в базе данных с некоторыми вычислениями. - У нас есть команда CRON, которая обновляет каждые
N
минут. Каждое действие CRON получает некоторые данные с использованием автономного API и «вставляет» новую записьwalletAction
. В это время он обновляетuser
.wallet
. - A
user
можно купить с нашего сайта. Когдаuser
нажимает кнопку покупки, мы вставляем новую записьwalletAction
и меняемuser
.wallet
колонка.
Проблема
Я боюсь, что CRON обновить и действие user
при нажатии на кнопку купить будет происходить в одно и то же время, в результате чего записи в walletAction
таблице иметь неправильные вычисления.
Мне нужна какая-то «блокировка» при выполнении обновления CRON или что-то в этом роде.
Вопросы
- Должен ли я бояться этой ситуации?
- Как я могу избежать этой проблемы?
- Могу ли я избежать этой проблемы, используя транзакции MySQL?
- Какой уровень изоляции я должен использовать, и в каком случае следует использовать его? (В команде CRON или в действии
user
при нажатии на кнопку купить?)
Вы, кажется, не понимаете этого термина; вы обеспокоены проблемами ** параллелизма **. – Keale
[возможно, сможет помочь] (http://stackoverflow.com/questions/1195858/how-to-deal-with-concurrent-updates-in-databases) – Keale