我最近升級到mysql 5.7並觀察頻繁的死鎖問題。是否有任何與鎖定5.7相關的更改,因爲我之前沒有遇到過這個問題。我最近升級到mysql 5.7並觀察頻繁的死鎖問題。是否有任何與5.7鎖定有關的變化?
我有一個簡單的表稱爲retry_records具有自動遞增的id作爲主鍵和列unique_reference作爲唯一索引和兩列。這個表格被用於完全多線程的環境中,其中一段代碼從該表中選擇n條記錄,在處理失敗的情況下處理數據並更新該表,並且其他段的代碼從表中刪除少量處理的記錄,並且另一段代碼段在此表中插入新記錄。沒有加入任何查詢,沒有批量插入,批量更新,除選擇以外的批量刪除。所有更新/刪除/插入事務都有單個語句。即使那樣,我正在觀察插入時的死鎖。 下面是日誌:
------------------------
LATEST DETECTED DEADLOCK
------------------------
2016-09-22 13:05:09 0x7f3f427e0700
*** (1) TRANSACTION:
TRANSACTION 39420432534, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1
MySQL thread id 37503, OS thread handle 139917976340224, query id 1695822465
插入查詢..
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 1334 page no 1726952 n bits 312 index id of table `database_name`.`table_name` trx id 39420432534 lock_mode X insert intention waiting
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0
0: len 8; hex 73757072656d756d; asc supremum;;
*** (2) TRANSACTION:
TRANSACTION 39420432524, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
6 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 1
MySQL thread id 37494, OS thread handle 139909675222784, query id 1695822438
另一個插入查詢...
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 1334 page no 1726952 n bits 312 index id of table
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 1334 page no 1726952 n bits 312 index id of table
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0
0: len 8; hex 73757072656d756d; asc supremum;;
你的頭銜似乎暗示1)你最近升級到5.7,2)你以前沒有遇到過這些問題。如果這些都是真的,請直接在您的問題中說明它們,以及您升級的版本。無論其他點是否爲真,實際查詢和「SHOW CREATE TABLE tablename」輸出都不會受到影響。 –
感謝Willem Renzema和Ryan Vincent的回覆。我已經添加了幾個與問題有關的更多細節。請幫忙。 – Rahul