[Oracle] 淺談Lock與Latch
首先談談它們的共同點吧:它們本質上都是一種對資源的獨占鎖定,都是由并發(fā)引起(如果數據庫只有一個session,就談不上鎖定)。
接著著重談談它們的不同點:
首先,它們的目的不一樣,enqueue (即Lock,Oracle官方文檔混合使用這兩個名詞,在等待事件里,可以看到大量的enqueue,其實就是lock)是為了解決業(yè)務層面的數據爭用,而latch是為了解決內存資源的爭用。
其次,它們的運行方式不一樣,enqueue采用排隊方式,先到先得,而latch的競爭近乎無序,以一種隨機的方式,先到不一定先得,得靠搶,而且它還以一種時間片輪訓的方式,不會一直霸占,即時還沒運行完,時間片一到也。
第三,會話持有的時長不一樣,enqueue根據業(yè)務情況,可能會持有較長時間,而latch通常非常短。第四,引起的原因不一樣,enqueue太多通常是業(yè)務設計的問題,而latch過多,一般是數據庫層面的問題(如未使用綁定變量、表或索引熱塊等)。
相關文章
Oracle百分比分析函數RATIO_TO_REPORT() OVER()實例詳解
本文通過實例代碼給大家介紹了oracle百分比分析函數RATIO_TO_REPORT() OVER(),代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08
Oracle?ORA-00904:標識符無效解決方法(太坑了!!)
最近執(zhí)行sql時oracle報錯ORA-00904:標識符無效,所以這篇文章主要給大家介紹了關于Oracle?ORA-00904:標識符無效解決方法的相關資料,需要的朋友可以參考下2022-10-10

