LATEST DETECTED DEADLOCK
------------------------
2022-03-03 13:54:44 0x1500cd3fa700
*** (1) TRANSACTION:
TRANSACTION 323759856, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 1136, 1 row lock(s)
MySQL thread id 90693, OS thread handle 23102782699264, query id 50481733 admin updating
UPDATE notification_log_records SET email_count_fact = email_count_fact + 1 WHERE id = 38049
*** (1) HOLDS THE LOCK(S):
RECORD LOCKS space id 620 page no 1140 n bits 112 index PRIMARY of table `production`.`notification_log_records` trx id 323759856 lock_mode X locks rec but not gap waiting
Record lock, heap no 12 PHYSICAL RECORD: n_fields 29; compact format; info bits 0
0: len 8; hex 00000000000094a1; asc ;;
...
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 620 page no 1140 n bits 112 index PRIMARY of table `production`.`notification_log_records` trx id 323759856 lock_mode X locks rec but not gap waiting
Record lock, heap no 12 PHYSICAL RECORD: n_fields 29; compact format; info bits 0
0: len 8; hex 00000000000094a1; asc ;;
...
*** (2) TRANSACTION:
TRANSACTION 323759853, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 13 lock struct(s), heap size 1136, 6 row lock(s), undo log entries 2
MySQL thread id 90697, OS thread handle 23093132125952, query id 50481738 admin updating
UPDATE notification_log_records SET sms_count_fact = sms_count_fact + 1 WHERE id = 38049
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 620 page no 1140 n bits 112 index PRIMARY of table `production`.`notification_log_records` trx id 323759853 lock mode S locks rec but not gap
Record lock, heap no 12 PHYSICAL RECORD: n_fields 29; compact format; info bits 0
0: len 8; hex 00000000000094a1; asc ;;
...
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 620 page no 1140 n bits 112 index PRIMARY of table `production`.`notification_log_records` trx id 323759853 lock_mode X locks rec but not gap waiting
Record lock, heap no 12 PHYSICAL RECORD: n_fields 29; compact format; info bits 0
0: len 8; hex 00000000000094a1; asc ;;
...
*** WE ROLL BACK TRANSACTION (1)
Команда не в транзакции. И почему 2я транзакция заблокировала 6 row lock(s)
может set auto_commit=0 где-то есть в коде приложения?
возможно foreign keys
даже теоретически не представляю такой возможности, хотя и допускаю. Будет здорово если пояснишь примером в моём случае было так: тот случай который у меня висел в SHOW ENGINE INNODB STATUS оказался не типовой, и редкий. там была огромная куча дедлоков вызванная не правильным php кодом, а именно вызов метода который в свою очередь делал магические методы ларавеля DB::beginTransaction(); DB::commit(); и там в некоторых случаях не было нужного try catch c ролбеком, а магические методы DB::beginTransaction(); иногда делает SAVEPOINT
Обсуждают сегодня