Почему блокировка mysql для обновления ничего не делает? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть две таблицы:

  • игры:

    • id INT AI primary;
  • ставки:

    • id INT AI primary;
    • game_id INT чужой на games.id;

Далее я создаю одну строку в таблице games с id, равным 1. То, что я пытаюсь сделать, - это ограничитель параллелизма, чтобы ограничить количество транзакций, которые так или иначе связаны с этой конкретной игрой, и это дочерний процесс с использованием инструментов mysql. Итак, я нашел mysql lock for update и lock in share mode и попытался использовать их оба таким образом:

Открыл один терминал и набрал:

USE test;
START TRANSACTION;
SELECT * FROM `games` WHERE `id` = 1 FOR UPDATE;

Затем открыл другой терминал и набрал то же самое, ожидая, что он будет ждать, пока первая транзакция не будет зафиксирована / откатана, как описано в документации, но вместо этого я получил реальные результаты (игра с таким идентификатором). То же самое происходит, когда используется LOCK IN SHARE MODE.

Что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...