1. 程式人生 > >MySQL 兩個死鎖樣例

MySQL 兩個死鎖樣例

creat 一個 table 更新 mysql font mysq 新人 span

【引子】

  從事MySQL-DBA這一樣也有些年頭了,想對新人說,在分析死鎖問題時應該還要考慮到有一個叫請求隊列的“概念”。之所以

  在這裏提這個不是因為新手不知道,而是有時候會自然而然的想不到。

  不信的話,我下面要說的這個例子每個dba都知道要排隊

  session A

creat table t(x int primary key);
insert into t(x) values(1);

start transaction;
update t set x=2 where x=1; 

  session B

update t set x=3 where x=1;

  由於session A持有著x=1那一行的“X”鎖,所以當session B要去更新x=1這一行時它就只能是等待了,此時如果有session C它也要去更新

  x=1的行,那麽session C的獲取鎖的請求就要排在session B的後面。

未完 ... ...

----

MySQL 兩個死鎖樣例