Oracle入门(十五)之数据库锁
生活随笔
收集整理的這篇文章主要介紹了
Oracle入门(十五)之数据库锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、鎖的概念
- 鎖是數據庫用來控制共享資源并發訪問的機制。
- 鎖用于保護正在被修改的數據
- 直到提交或回滾了事務之后,其他用戶才可以更新數據
?
二、鎖定的優點
- 一致性 - 一次只允許一個用戶修改數據
- 完整性 - 為所有用戶提供正確的數據。如果一個用戶進行了修改并保存,所做的修改將反映給所有用戶
- 并行性 -允許多個用戶訪問同一數據
?
三、鎖的類型
?
四、行級鎖
對正在被修改的行進行鎖定。其他用戶可以訪問除被鎖定的行以外的行
?
?
- 行級鎖是一種排他鎖,防止其他事務修改此行
- 在使用以下語句時,Oracle會自動應用行級鎖:
SELECT … FOR UPDATESELECT … FOR UPDATE語句允許用戶一次鎖定多條記錄進行更新使用COMMIT或ROLLBACK語句釋放鎖SELECT … FOR UPDATE語法:
SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];例子:
SQL> SELECT * FROM emp WHERE sal=1000FOR UPDATE; SQL> UPDATE emp SET sal = 3000WHERE sal =1000; SQL> COMMIT; SQL> SELECT * FROM scott.emp WHERE sal=1000FOR UPDATE WAIT 5; SQL> SELECT * FROM scott.emp WHERE sal=1000FOR UPDATE NOWAIT ;?
?
五、表級鎖
?
?
鎖定整個表,限制其他用戶對表的訪問。
使用命令顯示地鎖定表,應用表級鎖的語法是:
?LOCK TABLE table_name IN mode MODE;
?
- 行共享 (ROW SHARE) – 禁止排他鎖定表
- 行排他(ROW EXCLUSIVE) – 禁止使用排他鎖和共享鎖
- 共享鎖(SHARE)
- 共享行排他(SHARE ROW EXCLUSIVE) – 比共享鎖更多的限制,禁止使用共享鎖及更高的鎖
- 排他(EXCLUSIVE) – 限制最強的表鎖,僅允許其他用戶查詢該表的行。禁止修改和鎖定表
?
六、死鎖
- 當兩個事務相互等待對方釋放資源時,就會形成死鎖
- Oracle會自動檢測死鎖,并通過結束其中的一個事務來解決死鎖
?
?
總結
以上是生活随笔為你收集整理的Oracle入门(十五)之数据库锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年最火的网红小吃分别是哪些 20
- 下一篇: 4号国旗尺寸是多少 简介4号国旗尺寸是多