oracle死鎖模擬

2021-09-02 16:09:01 字數 515 閱讀 7733

用plsql developer新建乙個command window視窗,執行

update a g set g.status='9' where seq_id in(3407144);

--休眠8秒

exec dbms_lock.sleep(8);

update a g set g.status='9' where seq_id in(3407146);

commit;

再新建乙個command window視窗,執行

update a g set g.status='4' where seq_id in(3407146);

--休眠20秒

exec dbms_lock.sleep(20);

update a g set g.status='4' where seq_id in(3407144);

commit;

兩個相互鎖的sql執行,兩個執行sql的事務是一起提交的,最後查資料,發現兩條記錄最後的狀態是4,說明以最後提交的資料為準

oracle死鎖模擬

環境介紹 使用者test01 建立表tab01,使用者test02建立表tab02。test01 更新tab01不提交,test02 更新表tab02不提交。然後test01 更新test02下的表tab02,此時有鎖阻塞 鎖等待情況發生。接著test02 更新test01下的tab01,那麼此時就...

模擬 SQLSERVER 死鎖

環境 sqlserver 2008 事務 程序 id n 與另乙個程序被死鎖在鎖資源上,並且已被選作死鎖犧牲品。請重新執行 死鎖原理 如兩個任務 任務1,已經鎖定r1,再進行請求r2任務2,已經鎖定r2,再進行請求r1導致兩個任務都進入了阻塞。sqlserver會選擇乙個進行犧牲。了解了原理後,來段...

mysql 死鎖模擬 mysql死鎖示例

mysql有三種鎖的級別 頁級 表級 行級。myisam和memory儲存引擎採用的是表級鎖 table level locking bdb儲存引擎採用的是頁面鎖 page level locking 但也支援表級鎖 innodb儲存引擎既支援行級鎖 row level locking 也支援表級鎖...