Latch 與 Lock 的區別
原文:oracle wait interface—a practical guide to performance diagnostics & tuning
|
Latch |
Lock |
目的 |
只有一個目的:保證對記憶體結構的排他性訪問(從oracle9i開始,cache buffers chain latch可以允許只讀共享訪問) |
兩個目的:如果鎖模式是相容的,允許多個程式共享相同的資源;如果鎖模型是不相容的,保證對共享資源的排它性訪問。 |
適用場景 |
只能應用於sga中的資料結構,保護記憶體物件。Latch隻影響單次操作,而和事務無關。 |
保護資料庫物件,諸如表,資料塊和狀態物件等。由應用程式驅動,控制對資料庫中資料和後設資料的訪問。 Lock是事務性的。 |
獲取方式 |
兩種模式:willing-to-wait和no-wait |
六種模式:null, row share, row exclusive, share, share row exclusive和exclusive |
範圍 |
資訊都儲存在記憶體中,並且只在本例項可見――latch是例項級別的 |
資訊儲存在資料庫中,並且該資料庫的所有例項都可見――lock是資料庫級的 |
複雜度 |
使用簡單機器指令比如:test-and-set, compare-and-swap或其他簡單的cpu指令實現。由於cpu指令平臺相關,所以latch在不同的平臺的具體實現不一樣。 輕量級的。 |
需要上下文切換(context switch),使用一系列指令實現。 重量級的。 |
持續事件 |
非常短暫(通常是微秒級的) |
通常在整個事務中都持有。 |
排隊機制 |
當一個程式獲取latch失敗,轉入睡眠狀態時,他的請求不需要按順序排隊(一個例外情況:latch wait list latch需要排隊)。 |
當一個程式獲取lock失敗,它的請求會進入一個佇列,除非指定nowait。 |
死鎖 |
Latch的實現方式不會產生死鎖(不排隊) |
Lock的排隊機制可能導致死鎖。死鎖發生時會產生相應的跟蹤檔案。 |
http://www.itpub.net/viewthread.php?tid=531500&highlight=latch%2Bfree
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-697353/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【 latch和lock的區別 】
- latch和lock的區別
- 【鎖】Latch、lock、 pin的區別
- Latch和Lock的區別(轉)
- Oracle中latch和lock的區別Oracle
- snapshot 和 view,lock 和 latch 的區別View
- synchronized與Lock的區別synchronized
- Oracle Latch & LockOracle
- synchronized與Lock的區別與使用詳解synchronized
- ORACLE LOCK,LATCH,PINOracle
- 【筆記】lock and latch筆記
- enqueue, latch的理解及區別ENQ
- Lock 和 synchronized的區別synchronized
- mutex,latch,lock,enqueue hash chains latch基礎概念MutexENQAI
- Lock、Synchronized鎖區別解析synchronized
- latch:library cache lock等待事件事件
- spin_lock、spin_lock_irq、spin_lock_irqsave區別【轉】
- 基礎才是重中之重~lock和monitor的區別
- 讀書筆記-高階owi與oracle效能調整-latch和lock筆記Oracle
- 共享池之六:shared pool latch/ library cache latch /lock pin 簡介
- ??與?:的區別
- Oracle KSL Latch 管理層 與 Latch管理Oracle
- 10.2出現SQL Memory Manager latch型別的latch freeSQL型別
- mongod命令的一些引數以及引數--pidfilepath與mongod.lock區別Go
- 【ASK_ORACLE】Library cache pin 與 library load lock的關係和區別Oracle
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- v$lock之alter table drop column與alter table set unused column區別系列五
- in與exist , not in與not exist 的區別
- 由最長SQL想到的Latch Free( Library Cache Pin/Lock)整理~~草稿SQL
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別