MySQL тупик транзакции во время DELETE WHERE IN () - PullRequest
0 голосов
/ 28 мая 2020

Я получил сообщение о тупике в нашей системе и попытался воспроизвести его на простом примере:

create table db.deadlock (id int primary key auto_increment, val int);

insert into db.deadlock (val) values (1);
insert into db.deadlock (val) values (2);
insert into db.deadlock (val) values (3);
insert into db.deadlock (val) values (4);
// CLIENT 1
START TRANSACTION;
DELETE FROM db.deadlock WHERE val in (1,2);
// CLIENT 2
START TRANSACTION;
DELETE FROM db.deadlock WHERE val in (3,4);

Я получил такое же тупиковое сообщение. Но я не понимаю, почему это произошло? Похоже, где in () блокирует всю таблицу, а не выбранные строки.

Я также не могу найти объяснения в mysql документах. Может кто-нибудь поделится описанием такого поведения?

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