我发现了一件非常有趣的事情,发现死锁如下:
最新检测到的死锁
Transation(1):
UPDATE A set value = 1 where id = 1;
(1)等待桌子A X锁定:
RECORD LOCKS space id 1174 page no 3 n 位120表索引PRIMARY表。一个trx id 524946 lock_mode X锁定rec而不是间隙等待
记录锁定,堆没有 28物理记录:n_fields 16;紧凑格式;信息位0
Transation(2):
UPDATE B INNER JOIN (
SELECT A.id, A.value AS value1, IFNULL(t.value, 0) AS value2
FROM A
LEFT JOIN (
SELECT SUM(c.value) AS value
FROM C
INNER JOIN A ON C.a_id = A.id
GROUP BY C.a_id
)
) t SET B.value = t.value1 + t.value2
(1)保持表A S锁;
RECORD LOCKS空格id 1174页3 n位120索引表test.A trx id 281479462315824锁定模式S锁定rec而不是间隙
记录锁定,堆没有2物理记录: n_fields 16;紧凑格式;信息位0(2)等待表A S锁;
RECORD LOCKS空格id 1174页3 n位120索引表的主要内容lancai_u.finance_user trx id 281479462315824锁定模式S等待
记录锁,堆没有28物理记录:n_fields 16;紧凑格式;信息位0