事務與鎖定 模擬死鎖產生的情景

2021-08-25 19:13:37 字數 1156 閱讀 8221

/*

drop table emp; --if exists?

create table emp(

empid number(5),

empname varchar2(100),

empage number(5)

);*/

truncate

table emp;

insert

into emp values(1,'chenzw',27);

insert

into emp values(2,'chenzz',27);

commit;

--sqlplus視窗a 為empid為1的表加排他鎖

update emp set empage=empage+1 where empid=1;

--sqlplus視窗b 為empid為2的表加排他鎖

update emp set empage=empage+2 where empid=2;

--sqlplus視窗a 檢測到死鎖

update emp set empage=empage+1 where empid=2;

--sqlplus視窗b 檢測到死鎖

update emp set empage=empage+2 where empid=1;

--在視窗a上面執行的示例程式如下:

sql> truncate

table emp;

表被截斷。

sql> insert

into emp values(1,'chenzw',27);

已建立 1 行。

sql> insert

into emp values(2,'chenzz',27);

已建立 1 行。

sql> commit;

提交完成。

sql> update emp set empage=empage+1 where empid=1;

已更新 1 行。

sql> update emp set empage=empage+1 where empid=2;

update emp set empage=empage+1 where empid=2

*第 1 行出現錯誤:

ora-00060: 等待資源時檢測到死鎖

mysql怎麼模擬死鎖 mysql 模擬產生死鎖

場景描述 在update表的時候出現deadlockloserdataacces ception異常 deadlock found when trying to get lock try restarting transaction.問題分析 這個異常並不會影響使用者使用,因為資料庫遇到死鎖會自動回...

事務與鎖定 檢視死鎖的資訊

模擬產生的死鎖 然後通過v locked object檢視來產看當前的死鎖資訊 select xidusn,number 回滾段號 xidslot,number 槽號 xidsqn number 序列號 object id,number 被鎖定的資料庫物件的編號 session id,number ...

乙個模擬死鎖的多執行緒

package org.kevinlifeng public class testdeadlock implements runnable catch interruptedexception e t1嘗試鎖o2 可o2 已經被t2 給鎖住了還沒釋放,一直等待 synchronized o2 到了這...