library cache lock和library cache pin理解

csbin發表於2013-03-06

library cache lock和library cache pin的作用(個人理解)

SQL語句執行時,會計算SQL語句的hash值,根據hash值去library cache中查詢是否有執行過的SQL,檢索的過程使用library cache latch進行保護。

如果沒有找到匹配的SQL,會先建立一個handle,獲得handle的鎖 library cache lock。

獲得lock後,再去申請library cache pin。在佔用pin的過程中,建立sql的執行計劃。

為什麼library cache lock和library cache pin同時存在?

相同的SQL語句,具有相同的hash值。如果SQL是在不同schema下執行,實際上是完全不同的SQL。在建立執行計劃時,如果使用同一個鎖,會造成很多不必要競爭。為了縮短佔用時間,使用library cache lock,完成軟解析。比較複雜的工作(建立執行計劃),就在library cache pin期間完成。這樣將競爭的時間縮短。提升系統效能。

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

相關文章