用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 也支援表級鎖...