Oracle 什麼時候select會產生redo?
什麼情況下select會產生redo ?
1`)快速塊清除或者叫commit cleanout。事務提交的時候,oracle針對記憶體裡的塊 1)把資料塊ITL ENTRY裡flag的標記為U 2)設定commit scn在Scn/Fsc列。有了兩個標記就可以告訴全世界這個事務已經提交。但ITL ENTRY 的Lck標誌和每個資料行頭的lb(鎖定位資訊)並不會清除。Oracle 做commit cleanout並不會產生日誌,這個你可能會感到比較奇怪,修改了塊,但是卻沒產生日誌。其實這個產生日誌的過程在後面的完整的塊清除的時候才做。也就是我們下一次讀取到這個資料塊的時候。
2)延遲塊清除。事務提交的時候,事務修改的塊已經不在記憶體裡了,這個時候,Oracle不會再從磁碟把塊讀取到記憶體裡做塊清除,而是在下一次讀取資料塊的時候,做塊清除的動作。這個塊清除的動作會產生Redo。
需要注意直接路徑讀取由於繞過了buffer_cache,讀取過程直接在程式的私有PGA裡來完成,這個過程也會在程式私有的記憶體裡構造CR塊,雖然這個過程裡也會有延遲塊清除發生,但是不會產生Redo,而且不會把“髒”資料寫會到磁碟。這意味著,如果這個表一直被直接路徑讀取,將會有許多的浪費的延遲塊清除發生。11G針對大表的全表掃描,11G前並行掃描都會產生直接路徑的讀取。但是直接路徑讀取即使遇到了需要做延遲塊清除的塊也不會產生Redo。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-735469/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql什麼時候會發生file sortMySql
- 為什麼忘記commit也會造成select查詢的效能問題(SELECT產生Redo的情形)MIT
- 延遲塊清理介紹(select也會產生redo的原因)
- Oracle中undo 如何產生RedoOracle
- sqlldr載入會產生redo嗎?SQL
- oracle 9i臨時表產生過多redoOracle
- 什麼時候 AngularJS 會超越 jQueryAngularJSjQuery
- Oracle:select 或 inactive 會話語句產生鎖?Oracle會話
- select 表的時候如果別的會話TRUNCATE DROP PURGE表後會是什麼結果會話
- 什麼時候會傳送options請求
- MySQL什麼時候會使用內部臨時表?MySql
- 不懂下面struts頁面的集合是什麼時候產生的,請高手指教
- 舉例說明你什麼時候會用抽象類,什麼時候更願意使用介面?抽象
- 用Lomboz開發EJB的時候,為什麼在產生EJB classes的時候老是報告:java.lang.ClassNotFoundException:JavaException
- 人工智慧+建築,會產生什麼?人工智慧
- Oracle產生redo日誌量大小統計Oracle
- Http協議什麼時候發生options請求?HTTP協議
- shiro 什麼時候會進入 doGetAuthorizationInfo() ?
- C++中什麼時候用move,什麼時候用forward?C++Forward
- 程式設計師與產品之間應該如何配合,什麼時候技術為重,什麼時候產品為重?程式設計師
- Redo wastage產生的原因AST
- 什麼時候會用到透明加密表空間呢?加密
- oracle commit的時候究竟發生了什麼OracleMIT
- 什麼時候釋出
- 什麼時候呼叫layoutSubviewsView
- Oracle資料庫減少redo日誌產生方式Oracle資料庫
- Python會在什麼時候被其他語言取代Python
- 你是什麼時候”突然”學會程式設計的程式設計
- 什麼時候採用socket通訊,什麼時候採用http通訊HTTP
- oracle 索引什麼時候重建和重建方法討論Oracle索引
- 新版什麼時候釋出?
- 什麼時候該用vuex?Vue
- 到底什麼時候使用mqMQ
- 什麼時候該用MongoDB?MongoDB
- EJB2.0中什麼時候用local interface,什麼時候用remote interface (轉)REM
- oracle redo日誌產生量測試及比較1Oracle Redo
- 請問什麼時候物件分配會不在 TLAB 內分配物件
- 丁磊:那時候我們除了會寫軟體 什麼也不會做