Oracle Latch & Lock
QQ討論摘錄
三國之西蜀 11:11:19
latch和lock不同之處是lock是佇列機制
在路上 11:12:47
latch不是防止資料寫出到磁碟裡面嗎?
小熊 11:13:05
lock是佇列機制是因為其功能決定的。
三國之西蜀 11:13:59
是的
在路上 11:14:29
具體怎麼來實現的?
小熊 11:14:31
比如在獲取一個lock的時候,如果lock已經被其它程式獲取,程式就進行排隊以獲取這個LOCK。同時程式進入睡眠
小熊 11:15:37
既然是排隊,肯定是有輪到他的時候(不考慮超時問題),輪到了就叫醒這個程式,這個程式可以繼續處理
下里巴人(琦) 11:16:15
lock相對比latch時間要長 .
小熊 11:16:37
latch相對非常簡單,就是一個test / set的指令。
下里巴人(琦) 11:18:33
就是一個test / set的指令 , 解釋一下
小熊 11:19:36
這個latch就是一個標誌(令牌)。比如初始值為0,表示沒有程式獲取。有一個程式想使用共享記憶體時,test其值為0,就將其set為1。另一個程式也要使用時,發現已經被其它程式設為1了(test),所以不能獲取這個latch
小熊 11:20:16
最後一句話應該說為:因為這個標誌被其它程式設為了1,因此就不能訪問這個共享記憶體了
小熊 11:20:46
這個程式然後會進行spin狀態。
小熊 11:22:05
當然spin是在多CPU的情況下才會有的(我個人理解,沒有確認過)
小熊 11:23:43
spin就是空轉。就是類似於我們程式中一個迴圈。但在這個迴圈裡面什麼事情都不幹。
小熊 11:24:52
空轉的時候,實際上是程式佔著CPU什麼事情都不幹。
下里巴人(琦) 11:26:00
還要佔用cpu啊
小熊 11:26:26
因為latch是輕量級的,在多CPU的情況下,這個latch的佔有者程式很可能是用的其它CPU在跑。
小熊 11:27:10
因為latch是輕量級的,因此佔有那個程式很可能會很快就釋放了
下里巴人(琦) 11:27:47
哦
小熊 11:27:39
LATCH是針對共享記憶體的呀,記憶體操作一般都非常快。
小熊 11:28:27
spin完了之後,再去看看latch釋放沒有,沒有就spin。一直達到spin_count這個引數。還沒得到就進入睡眠了
小熊 11:29:14
因為進入睡眠,程式讓出CPU,OS對程式進行上下文切換,這個過程也是比較慢的。所以ORACLE選擇了空轉。 以避免進入睡眠狀態
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84868/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE LOCK,LATCH,PINOracle
- mutex,latch,lock,enqueue hash chains latch基礎概念MutexENQAI
- latch:library cache lock等待事件事件
- Oracle Latch 說明Oracle
- Systematic Latch Contention Troubleshooting in OracleOracle
- ORACLE LOCK MODE 1.2.3.4.5.6Oracle
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- oracle一次卡頓案例(六)-latch freeOracle
- 【BUFFER】Oracle buffer cache之 latch 學習記錄Oracle
- oracle常見異常等待——latch處理思路Oracle
- Oracle RAC Cache Fusion 系列十:Oracle RAC Enqueues And Lock Part 1OracleENQ
- 【TUNE_ORACLE】等待事件之“library cache lock”Oracle事件
- oracle ORA-01157: cannot identify/lock data file 64OracleIDE
- Oracle Enqueues Wait Events 三 enq: TX - row lock contentionOracleENQAI
- hiccup和Latch off
- oracle資料庫事務transaction鎖lock模式思考之一Oracle資料庫模式
- oracle資料庫事務transaction 不同的鎖lock型別Oracle資料庫型別
- [20190319]shared pool latch與library cache latch的簡單探究.txt
- [20210512]shared pool latch與library cache latch的簡單探究.txt
- oracle事務transaction鎖lock一點兒小思考或總結Oracle
- 【ASK_ORACLE】LOCK_SGA引數失效的解決辦法Oracle
- latch等待事件彙總事件
- Latch free等待事件(轉)事件
- Oracle 11g 密碼延遲認證與 library cache lock 等待Oracle密碼
- Latch free等待事件四(轉)事件
- Latch free等待事件三(轉)事件
- [20190416]process allocation latch.txt
- Latch的spin及sleep(zt)
- 【FPGA基礎】Latch基礎FPGA
- Latch free等待事件二(轉)事件
- Lock 鎖
- 當刪除oracle資料庫user時發生row cache lock 等待事件Oracle資料庫事件
- 【ASK_ORACLE】Library cache pin 與 library load lock的關係和區別Oracle
- mysql innodb lock鎖之record lock之一MySql
- MySQL latch爭用深入分析MySql
- [20190419]shared latch spin count.txt
- [20190418]exclusive latch spin count.txt
- DB BUFFER LRU 列表的latch等待
- V$LOCK(zt)