Latch是Oracle提供的輕量級鎖資源,他用于快速,短時間的鎖定資源,防止多個并發(fā)進(jìn)程同時修改訪問某個共享資源,他只工作在內(nèi)存中, 我們可以不大準(zhǔn)確的說,內(nèi)存中資源的鎖叫l(wèi)atch,數(shù)據(jù)庫對象(表,索引等)的鎖叫Lock。比如數(shù)據(jù)緩存中的某個塊要被讀取,我們會獲得這個塊的 latch,這個過程叫做pin,另外一個進(jìn)程恰好要修改這個塊,他也要pin這個塊,此時他必須等待,當(dāng)前一個進(jìn)程釋放latch后才能pin住,然后 修改,如果多個進(jìn)程同時請求的話,他們之間將出現(xiàn)競爭,沒有一個入隊機制,一旦前面進(jìn)程釋放所定,后面的進(jìn)程就蜂擁而上,沒有先來后到的概念,這個和 Lock是有本質(zhì)區(qū)別的,這一切都發(fā)生的非???,因為Latch的特點是快而短暫,當(dāng)然這個只是大致過程,細(xì)節(jié)部分在后面討論 先來看下Latch和Lock的區(qū)別, 1. Latch是對內(nèi)存數(shù)據(jù)結(jié)構(gòu)提供互斥訪問的一種機制,而Lock是以不同的模式來套取共享資源對象,各個模式間存在著兼容或排斥,從這點看出,Latch 的訪問,包括查詢也是互斥的,任何時候,只能有一個進(jìn)程能pin住內(nèi)存的某一塊,幸好這個過程是相當(dāng)?shù)亩虝海駝t系統(tǒng)性能將沒的保障,現(xiàn)在從9I開始,允 許多個進(jìn)程同時查詢相同的內(nèi)存塊,但性能并沒有想象中的好。 2. Latch只作用于內(nèi)存中,他只能被當(dāng)前實例訪問,而L ock作用于數(shù)據(jù)庫對象,在RAC體系中實例間允許Lock檢測與訪問 3. Latch是瞬間的占用,釋放,Lock的釋放需要等到事務(wù)正確的結(jié)束,他占用的時間長短由事務(wù)大小決定 4. Latch是非入隊的,而Lock是入隊的 5. Latch不存在死鎖,而Lock中存在(死鎖在Oracle中是非常少見的)
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比沙市網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式沙市網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋沙市地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。