Librarycache內部機制詳解

來源:互聯網
上載者:User

Library cache是Shared pool的一部分,它幾乎是Oracle記憶體結構中最複雜的一部分,主要存放shared curosr(SQL)和PLSQL對象(function,procedure,trigger)的資訊,以及這些對象所依賴的table,index,view等對象的資訊。

Library cache需要解決三個問題:

1.快速定位的問題:Library cache中對象眾多,Oracle如何管理這些對象,以便服務進程可以迅速找到他們需要的資訊。比如某個服務進程需要迅速定位某個SQL是否存在於Library cache中。

2.關係依賴的問題:Library cache中的對象存在複雜的依賴關係,當某個objec失效時,可以迅速將依賴其的對象也置為失效狀態。比如某個表發生了結構變化,依賴其的SQL語句需要重新解析。

3.並發控制的問題:Library cache中必須有一個並發控制的機構,比如鎖機制,來管理大量共用對象的並發訪問和修改的問題,比如某個SQL在重新編譯的同時,其所依賴的對象不能被修改。

Library cache結構:

Oracle利用hash table結構來解決library cache中快速定位的問題,hash table就是很多hash bucket組成的數組:

原理與buffer cache中定位block的方式相同,將對象資訊(比如SQL)hash定位到某個hash bucket中,然後順序掃描bucket中的 List,實現快速定位對象的目的。

Library cache handle是對象的一個指標,其中的namespace屬性工作表示其指向的對象的類型:比如CRSR(Cursor),TABL(Table),INDX(Index) ,PROD(Procedure),TRIG(Trigger)等等。

  • 1
  • 2
  • 3
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.