Недавно я передаю вопрос SQL, у меня есть две транзакции, транзакция A сначала получила блокировки следующего ключа, и транзакция B попыталась получить такую же блокировку, поэтому она ожидала, затем транзакция A попыталась получитьВставьте намеренные блокировки, чтобы произошла тупиковая ситуация.Но я не понимаю, почему это произошло?
(1)СДЕЛКА:
СДЕЛКА 22640, АКТИВНОЕ Чтение 66-секундного начального индекса
Используются таблицы MySQL 1, заблокировано 1
LOCK WAIT 2 структуры блокировки, размер кучи 1136,Блокировка 1 строки
Идентификатор потока MySQL 209, дескриптор потока ОС 123145559986176, идентификатор запроса 6204 root локального хоста Отправка данных
select * from changeset where documentId = '7oO5C_v' and version >=
13 for update
(1) ЖДЕТ ЭТОГОБлокировка для предоставления:
ЗАПИСИ ЗАПИСЕЙ идентификатор пространства 107 страница нет 15 n битов 704 индекс uniq_documentId_version таблицы test
. changeset
идентификатор trx 22640 lock_mode X ожидание
блокировка записи, куча нет2 ФИЗИЧЕСКАЯ ЗАПИСЬ: n_fields 3;компактный формат;биты информации 0
0: len 7;гекс 3976735431644а;asc 9vsT1dJ ;;
1: len 8;гекс 8000000000000000;asc ;;
2: len 4;гекс 051cbef7;asc ;;
(2) СДЕЛКА:
СДЕЛКА 22639, АКТИВНО 95 секунд вставка
используемых таблиц mysql 1, заблокировано 1
6 lock struct(s), размер кучи 1136, 4 блокировки строк, отмена записей журнала 1
идентификатор потока MySQL 212, дескриптор потока ОС 123145561657344, идентификатор запроса 6210 обновление корня локального хоста insert into changeset values (0, 9, '7oO5C_v',
814, 1, 13, 'x')
(2) Удерживает замок (ы):
ЗАПИСИ ЗАПИСЕЙ идентификатор пространства 107 страница нет 15 n битов 704 индекс uniq_documentId_version таблицы test
. changeset
идентификатор trx 22639 lock_mode X
записьблокировка, куча нет 2 ФИЗИЧЕСКАЯ ЗАПИСЬ: n_fields 3;компактный формат;биты информации 0
0: len 7;гекс 3976735431644а;asc 9vsT1dJ ;;
1: len 8;гекс 8000000000000000;asc ;;
2: len 4;гекс 051cbef7;asc ;;
(2) В ожидании этой блокировки:
ЗАПИСИ ЗАПИСЕЙ пробел id 107 страница нет 15 n битов 704 index uniq_documentId_version таблицы test
. changeset
trx id22639 lock_mode X блокирует пробел перед ожиданием вставки записи
Блокировка записи, куча № 2 ФИЗИЧЕСКАЯ ЗАПИСЬ: n_fields 3;компактный формат;биты информации 0
0: len 7;гекс 3976735431644а;asc 9vsT1dJ ;;
1: len 8;гекс 8000000000000000;asc ;;
2: len 4;гекс 051cbef7;asc ;;
СДЕЛАЕМ ОБРАТНУЮ СДЕЛКУ (1)