【筆記】lock and latch

yellowlee發表於2009-04-19

lock and latch

lock是一種queue機制,防止多個process同時修改一個object,運用了排隊機制,所有請求按請求先後排序。最常見就是tx,tm lock.
 
latch是一種保護oracle內部資料結構的機制,防止記憶體結構同時被多個process修改,它的存活期很短,
而且它不是運用queue機制,一個latch釋放然後一堆process上去搶,誰搶到誰就擁有這個latch,
通常我們比較熟悉的的latch有library cache latch,cache buffer chain latch...等.


ORACLE鎖有以下幾種模式:
0:none
1:null 空
2:Row-S 行共享(RS):共享表鎖,sub share 
3:Row-X 行獨佔(RX):用於行的修改,sub exclusive 
4:Share 共享鎖(S):阻止其他DML操作,share
5:S/Row-X 共享行獨佔(SRX):阻止其他事務操作,share/sub exclusive 
6:exclusive 獨佔(X):獨立訪問使用,exclusive

檢視鎖: select * from v$locked_object


oracle鎖的三種方式;
共享封鎖,獨佔封鎖,共享更新封鎖

oracle鎖的三種型別:
內部級封鎖
DDL級封鎖(字典/語法分析封鎖)
DML級封鎖
DML鎖有如下三種封鎖方式:
   (1)、共享封鎖方式(SHARE)
   (2)、獨佔封鎖方式(EXCLUSIVE)
   (3)、共享更新封鎖(SHARE UPDATE


stats$enqueuestat 表中獲得的對oracle調整有關的鎖:
Ci(cross-instance lock)交叉例項鎖
cu(cusor bind lock)遊標繫結鎖
jq job queue lock 作業佇列鎖:提交作業
st space management enqueue lock 空間管理佇列鎖
tm dml enqueue lock  dml佇列鎖:這是常規的表鎖(update insert delete)
tx transaction lock 事務鎖:修改時設定,commit或者rollback的時候結束。排隊機制
us user lock ,使用者鎖:當回話使用dbms_lock.request函式獲取鎖的時候,會設定這種鎖。(可以用來序列化)

鎖爭用的問題(待續)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-590953/,如需轉載,請註明出處,否則將追究法律責任。

相關文章