Тупики с запросом, который проиндексировал столбцыMySql

Форум по Mysql
Ответить
Anonymous
 Тупики с запросом, который проиндексировал столбцы

Сообщение Anonymous »

Я сталкиваюсь с проблемой, когда две мои транзакции приводят к тупику, но у обоих они не имеют ничего общего. Я считаю, что MySQL блокирует некоторые дополнительные строки. >------------------------
LATEST DETECTED DEADLOCK
------------------------
2025-02-18 11:30:14 70391974347744
*** (1) TRANSACTION:
TRANSACTION 642806136, ACTIVE 0 sec fetching rows
mysql tables in use 2, locked 2
LOCK WAIT 185 lock struct(s), heap size 24696, 11 row lock(s), undo log entries 6
MySQL thread id 1705273, OS thread handle 70369545208800, query id 79057633 172.31.46.194 XXX Searching rows for update
UPDATE `shipment_detail_child` SET `status_id`='7' WHERE (`container_id`='1020065') AND (`status_id`=5)

*** (1) HOLDS THE LOCK(S):
RECORD LOCKS
space id 1968091
page no 16162
n bits 1192
index shipment_detail_child_status of table `shipment_detail_child`
trx id 642806136
lock_mode X locks rec but not gap

*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS
space id 1968091
page no 18504
n bits 280
index PRIMARY of table `shipment_detail_child`
trx id 642806136
lock_mode X locks rec but not gap waiting
Record lock,
heap no 207

*** (2) TRANSACTION:
TRANSACTION 642806143, ACTIVE 0 sec updating or deleting
mysql tables in use 1, locked 1
LOCK WAIT 7 lock struct(s), heap size 1128, 5 row lock(s), undo log entries 5
MySQL thread id 1705277, OS thread handle 70369790415840, query id 79057707 172.31.46.194 XXXX updating
UPDATE `shipment_detail_child` SET `inventory_id`=2804662, `status_id`='7' WHERE `id`=2160566

*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 1968091 page no 18504 n bits 272 index PRIMARY of table `shipment_detail_child` trx id 642806143 lock_mode X locks rec but not gap
Record lock, heap no 207 PHYSICAL RECORD: n_fields 23; compact format; info bits 0
< /code>
Мой первый запрос заблокировал 11 строк, как показано выше «11 -й строки блокировки»
Но в действительности приведенный выше запрос вернет только 2 записи в таблице отгрузки_detail_child
Для этого container_id и status_id. Так почему же он блокирует 11 рядов, и я считаю, что именно поэтому он противоречит 2 -м запросу, потому что оба запроса не имеют ничего общего, но все еще тупика. < /p>
KEY `shipment_detail_child_status` (`status_id`),
KEY `fk_shipment_container_detail_child` (`container_id`),
CONSTRAINT `fk_shipment_container_detail_child` FOREIGN KEY (`container_id`) REFERENCES `shipment_container` (`id`)
< /code>
При проверке с помощью объяснения < /p>
Я получаю следующее, и я вижу здесь, а также используются только 2 строки. Так почему я все еще получаю тупик? "src =" https://i.sstatic.net/da7mx674.png "/>

Подробнее здесь: https://stackoverflow.com/questions/794 ... ed-columns
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»