oracle中update的細節
今天一天比較忙,不過好歹完成了一個知識點的整理oracle的更新資料的原理和其中的latch鎖。
前段時間提到oracle的關於update原理,個人查閱資料,oracle中關於update 資料塊時的具體步驟大家可以參考下,如果覺得有問題可以自己嘗試dump下資料塊來看看。
1 首先檢視buffer cache中是否存在資料塊,如果存在則取出不存在oracle則要資料檔案中讀取資料塊資訊
2 檢視該資料塊的latch鎖,如果沒有則oracle選擇等待。
3 oracle更新該資料塊,並把相應的原資料塊映象寫入undo。
4 commit時oracle釋放該table的lock鎖資源,並釋放回滾段資訊,更新scn。
因為資料檔案中頭部存在scn,控制檔案也存在scn,關於資料的每行也存在scn資訊,透過select ora_rowscn from dual也可以查到關於此table的scn。
其中上面講到的latch鎖是oracle關於資料庫記憶體中的鎖,而且此latch鎖獲取是瞬間的獲取和釋放,必須存在orac記憶體中的鎖,所以我們無法像oracle中table一樣而可以很直觀的檢視到oracle的lock。
latch是非佇列的,等於一旦記憶體中資料塊latch釋放新的latch都會提出需求,此時oracle把關於此資料塊的記憶體latch賦予哪個session了?雖然oracle的latch獲取和釋放非常快,但是個人覺得latch也應該有一個管理的方案,由於latch裡面的具體的細節暫時還沒有明確文件和具體方案資訊。瞭解latch的可以幫俺看看。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1053348/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中的for update 和 for update nowaitOracleAI
- oracle並行的小細節Oracle並行
- Oracle中select ... for update的用法Oracle
- 微軟公佈Windows Update服務在一月份發生中斷的細節微軟Windows
- 【JOB】Oracle中JOB的建立方法以及一個細節的探究Oracle
- TCP 中的兩個細節點TCP
- Python中list的切片細節Python
- 簡單對比MySQL和Oracle中的一個sql解析細節MySqlOracle
- Oracle SQL細節總結(一)OracleSQL
- 筆記——Android 中的小細節筆記Android
- Oracle細節及難點總結Oracle
- PHP7中需要記住的細節PHP
- Oracle兩個使用細節知識點Oracle
- oracle中要謹慎使用update交叉更新!Oracle
- Java 異常處理中的種種細節!Java
- 詳解APP介面設計中的微妙細節APP
- 那些蘋果、谷歌、微軟系統中的魔鬼細節蘋果谷歌微軟
- 認識oracle的update更新Oracle
- 介面中這些細節你知道嗎?
- Oracle中select for update ...一些區別Oracle
- Oracle中 Update和insert結合語法Oracle
- 淺談UITableView內Cell的選中細節過程UIView
- 不要忽視Web程式設計中的小細節Web程式設計
- 網頁設計中那些不容忽視的細節網頁
- 慢慢細談Android 面試的細節Android面試
- 工作細節
- 小細節
- oracle select for updateOracle
- JavaWeb—Servlet基礎(細節版,相當細節)JavaWebServlet
- 掌握 Swift 的字串細節Swift字串
- Layer的實現細節
- MybatisPlus中的update操作MyBatis
- Node 中如何引入一個模組及其細節
- Oracle資料庫中Insert、Update、Delete操作速度Oracle資料庫delete
- 聊聊自學大資料flume中容易被人忽略的細節大資料
- Android CardView 開發過程中要注意的細節AndroidView
- 細節解析 JavaScript 中 bind 函式的模擬實現JavaScript函式
- (轉)資料庫oracle for update of和for update區別資料庫Oracle