oracle鎖的概念1
阿新 • • 發佈:2018-11-07
1、鎖是什麼
資料庫是一個多使用者使用的共享資源,當多個使用者併發的儲存取資料的時候,在資料庫中就會產生多個事務同時存取同一資料的時候,若對併發操作不加控制就可能讀取和儲存不正確的資料,破壞資料庫的一致性。
加鎖是實現資料庫併發的一個很重要的技術,當事務在對某個物件資料進行操作的時前,系統會先收到請求,對其加鎖,枷鎖後事務對該資料物件有了控制,在該事務釋放鎖之前。其他的事務不能對此資料物件進行更新操作。
可防止多個會話同時更改統一資料
是在指定語句的最低可能級別自動獲取的
2、鎖的分類
2.1DML鎖:
資料鎖:保護資料,修改資料
表級鎖(TM鎖)、事務鎖或者行級鎖(TX鎖)
加鎖方式:
a、共享鎖,用於TM鎖
b、獨佔鎖:用於TM鎖
c、共享更新鎖 用於TX鎖
2.2 DDL鎖:
修改結構
保護struture of schme objects:表和試圖的相關定義。
2.3SYSTEM鎖
資料庫級的,記憶體級的,latch
latch:記憶體中的資源鎖
lock:資料庫物件(表、索引等)鎖
導致latch爭用而等待的原因很多,記憶體中很多資源都可能存在爭用。
常見的兩類:
共享池中的latch爭用
資料快取池latch爭用
最常見的集中共享池裡的latch 是library cache
select * from v$latchname where name like 'library cache%';
資源的爭用可以通過如下sql來檢視:
select event,count(*) from v$session_wait group by event;
資料緩衝池latch爭用 最常見的latch爭用有:
(1)buffer busy waits
(2)cache buffer chain