塊清除的理解
Thomas Kyte《Expert Oracle Database Architecture》學習記錄
塊清除(block cleanout)形成是因為oracle的locks資訊儲存在block頭部,當下一次訪問塊時,可能必須clean it out(不是每次都要,fast commit cleanout不要),並且消除事務資訊,這樣就會產生redo(修改事務資訊的redo)。
在與事務相關的提交列表中,Oracle會記錄已修改的塊list,每個list有20個塊,Oracle會根據需要分配多個這樣的list,直至達到某個臨界點。如果我們修改的塊加起來超過了塊緩衝區快取大小的10%,Oracle會停止為我們分配新的list。
下面把DB_CACHE_SIZE設定為一個很低的值4MB,這足以放下512個8KB的塊(塊大小是8KB)
SQL> create table t (x char(2000), y char(2000), z char(2000));
Table created.
SQL> set autotrace traceonly statistics;
SQL> insert into t select 'x', 'y', 'z' from all_objects where rownum <= 500;
500 rows created.
Statistics
----------------------------------------------------------
2431 recursive calls
4625 db block gets
5098 consistent gets
626 physical reads
3303100 redo size
666 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
40 sorts (memory)
0 sorts (disk)
500 rows processed
SQL> commit;
Commit complete.
SQL> select * from t;
500 rows selected.
Statistics
----------------------------------------------------------
29 recursive calls
1 db block gets
1104 consistent gets
518 physical reads
36528 redo size
13250 bytes sent via SQL*Net to client
763 bytes received via SQL*Net from client
35 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
500 rows processed
SQL> /
500 rows selected.
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
538 consistent gets
529 physical reads
0 redo size
13250 bytes sent via SQL*Net to client
763 bytes received via SQL*Net from client
35 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
500 rows processed
第二次select就不產生redo了。
如果執行一個大的INSERT(如上所述)、UPDATE或DELETE,這種塊清除行為的影響最大,它會影響資料庫中的許多塊(快取中10%以上的塊都會完成塊清除)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17997/viewspace-419060/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 塊延遲清除(delayed block cleanout) 理解OracleBloC
- oracle block cleanout塊清除_延遲塊清除OracleBloC
- oracle 塊清除Oracle
- Oracle Block Cleanouts 塊清除OracleBloC
- Oracle (block clean out) oracle的塊清除OracleBloC
- 關於延遲塊清除的原理是什麼?為什麼要進行塊清除
- 清除浮動的四種方式及其原理理解
- 菜鳥理解的區塊鏈區塊鏈
- oracle資料塊理解Oracle
- 使用10203事件來跟蹤oracle塊清除事件Oracle
- 理解區塊鏈的非對稱加密區塊鏈加密
- 透徹理解塊級元素的寬度
- 深入理解:overflow:hidden——溢位,坍塌,清除浮動
- 關於STM32的BSRR(埠位設定/清除暫存器) 和 BRR(埠位清除暫存器) 的理解(初學32)
- CSS深入理解:overflow:hidden——溢位,坍塌,清除浮動CSS
- zt_使用10203事件event跟蹤Oracle塊清除事件Oracle
- [20211105]索引分裂 塊清除 日誌增加.txt索引
- bfc 塊級格式化上下文自己的理解
- 深入理解 BigBird 的塊稀疏注意力
- [轉]關於java中的 sychronized 同步方法 與 同步塊的理解JavaZed
- cookie清除Cookie
- [20190124]bbed恢復資料遇到延遲塊清除的問題.txt
- css清除浮動的原理CSS
- 清除xhmlhttp快取的方法HTTP快取
- 讓你的 EditText 所有清除
- 清除行遷移的例子
- 新加坡的政府區塊鏈實驗可以實現監管理解區塊鏈
- oracle 全表掃描,索引範圍掃描與塊的理解Oracle索引
- [20211105]索引分裂塊清除日誌增加(唯一索引).txt索引
- 區塊鏈初學者指南——五歲孩子都能理解區塊鏈
- 深入理解ES6--1.塊級繫結
- 使用BBED幫助理解Oracle資料塊結構Oracle
- 如何清除 Elasticsearch 中的資料Elasticsearch
- 如何清除<input type="file">的值
- 清除last和history的記錄AST
- 清除oracle的recyclebin回收站Oracle
- 清除SVN儲存的密碼密碼
- 常見的5個區塊鏈應用開發錯誤理解區塊鏈