Latch是Oracle提供的輕量級鎖資源,他用於快速,短時間的鎖定資源,防止多個併發進程同時修改訪問某個共享資源,他只工作在內存中, 我們可以不大準確的說,內存中資源的鎖叫latch,數據庫對象(表,索引等)的鎖叫Lock。比如數據緩存中的某個塊要被讀取,我們會獲得這個塊的 latch,這個過程叫做pin,另外一個進程恰好要修改這個塊,他也要pin這個塊,此時他必須等待,當前一個進程釋放latch後才能pin住,然後 修改,如果多個進程同時請求的話,他們之間將出現競爭,沒有一個入隊機制,一旦前面進程釋放所定,後面的進程就蜂擁而上,沒有先來後到的概念,這個和 Lock是有本質區別的,這一切都發生的非常快,因爲Latch的特點是快而短暫,當然這個只是大致過程,細節部分在後面討論 先來看下Latch和Lock的區別, 1. Latch是對內存數據結構提供互斥訪問的一種機制,而Lock是以不同的模式來套取共享資源對象,各個模式間存在着兼容或排斥,從這點看出,Latch 的訪問,包括查詢也是互斥的,任何時候,只能有一個進程能pin住內存的某一塊,幸好這個過程是相當的短暫,否則系統性能將沒的保障,現在從9I開始,允 許多個進程同時查詢相同的內存塊,但性能並沒有想象中的好。 2. Latch只作用於內存中,他只能被當前實例訪問,而L ock作用於數據庫對象,在RAC體系中實例間允許Lock檢測與訪問 3. Latch是瞬間的佔用,釋放,Lock的釋放需要等到事務正確的結束,他佔用的時間長短由事務大小決定 4. Latch是非入隊的,而Lock是入隊的 5. Latch不存在死鎖,而Lock中存在(死鎖在Oracle中是非常少見的)
Latch和Lock的區別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Oracle基於Linux 7下的安裝
love壁虎
2019-02-24 12:55:05
JavaBean操作
yi_sixian
2019-02-23 14:05:20
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
MongoDB索引優化詳解
geekpy
2019-02-24 14:20:06
Sql server中一些Select檢索高級用法
wbzjacky
2019-02-24 13:12:37
如何釋放已刪除的InnoDB磁盤空間
lvrenX
2019-02-24 13:04:33
將frm,myi,myd文件打包成sql文件
jason1982
2019-02-24 12:57:22
某熊的技術之路指北 ☯
王下邀月熊_Chevalier
2019-02-23 16:23:03
安裝SQL數據庫之一些常見故障
179390988
2019-02-23 14:05:54
安裝SQL數據庫之補丁安裝常見問題
179390988
2019-02-23 14:05:54
PL/SQL 取幾段查詢結果的交集, 查詢費用報表的條件(R12.1.1)所對應的費用報表規則
tkchw4
2019-02-23 14:05:35
oracle em啓動
huchazsu
2019-02-23 14:01:49
oracle 啓動歸檔模式
huchazsu
2019-02-23 14:01:14