1. 程式人生 > >oracle鎖的概念1

oracle鎖的概念1

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