程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle] 淺談Lock與Latch

Oracle] 淺談Lock與Latch

編輯:關於Oracle數據庫
    以下是對Oracle中Lock與Latch的相同點以及不同點進行了詳細的分析介紹,需要的朋友參考下  

    首先談談它們的共同點吧:它們本質上都是一種對資源的獨占鎖定,都是由並發引起(如果數據庫只有一個session,就談不上鎖定)。

    接著著重談談它們的不同點:

    首先,它們的目的不一樣,enqueue (即Lock,Oracle官方文檔混合使用這兩個名詞,在等待事件裡,可以看到大量的enqueue,其實就是lock)是為了解決業務層面的數據爭用,而latch是為了解決內存資源的爭用。

    其次,它們的運行方式不一樣,enqueue采用排隊方式,先到先得,而latch的競爭近乎無序,以一種隨機的方式,先到不一定先得,得靠搶,而且它還以一種時間片輪訓的方式,不會一直霸占,即時還沒運行完,時間片一到也。

    第三,會話持有的時長不一樣,enqueue根據業務情況,可能會持有較長時間,而latch通常非常短。第四,引起的原因不一樣,enqueue太多通常是業務設計的問題,而latch過多,一般是數據庫層面的問題(如未使用綁定變量、表或索引熱塊等)。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved