oracle的單例項併發控制:Latch(二)

Nalternative發表於2011-05-04
         Latch是oracle使用的另一種併發控制機制,Latch是一種“低階”鎖,這種鎖主要用於保護資料結構。

         oracle的記憶體使用都是以GB為單位的,在這麼大的空間中尋找一個資料,必須要以高效的方式組織記憶體才能保證效率。oracle採用的雜湊演算法來組織記憶體的。
        在遍歷連結串列的過程中,連結串列這個資料結構本身也可能被其他程式併發修改,因此對連結串列資料結構也需要進行併發控制,這中控制就是使用的Latch。

latch和lock對比:
        Latch和Lock的作用是相同的,都是為了保護資源,防止併發訪問造成的破壞。但是Latch的實現機制和Lock有很大差異:
        1、Latch請求、獲得、釋放等操作是原子操作,使用時間非常短;
         2、程式請求Latch卻不能得到時,程式不會釋放cpu資源,而是不斷嘗試請求,只有嘗試一定次數之後還不能獲得時,才釋放cpu,這就是Latch的Spin機制。這時的表現就是cpu利用率非常高,但是吞吐量卻很低。
        3、Latch使用的是搶佔機制,Lock使用的是排隊機制。

 

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

相關文章