物件有多少個資料塊緩衝在Data buffer中
物件有多少個資料塊緩衝在Da
為了詳細說明具體的情況,先建立一個測試表,並且插入一定的記錄進去。
Piner@10gR2>create table test(a int); Table created. Piner@10gR2>begin PL/SQL procedure successfully completed. Piner@10gR2>commit; Commit complete |
Piner@10gR2>set serveroutput on PL/SQL procedure successfully completed. |
Piner@10gR2>select f,b from ( F B 8 rows selected. |
可以看到,資料塊其實只佔用了8個塊,但是表合計佔用了16個資料塊,另外8個塊是什麼呢,它們是段頭,點陣圖塊等,是表中的額外開銷。至於這些塊的詳細資訊,在本書的表空間與資料分佈一章會有詳細介紹,現在只需要知道,該表有16個block,資料塊佔了8個。
注意:以上透過Rowid查詢使用了哪些資料塊,只適合沒有發生行遷移與行連結的情況下,如新建立的表,插入的小記錄是適合的。如果發生了行遷移與行連結,因為Rowid本身不發生變化,而資料塊的使用卻會發生變化。
那麼,現在分別查詢一下x$bh與v$bh,看看它們中間儲存了幾條記錄。
Piner@10gR2>select file#,dbablk,tch from x$bh where obj= FILE# DBABLK TCH 16 rows selected. Piner@10gR2>select file#,block#,status from v$bh where objd= FILE# BLOCK# STATUS 16 rows selected. |
可以看到,這兩個查詢都返回了16條記錄,從塊9到塊24,中間包含了資料塊所在的8個塊。至於為什麼從塊9開始,在本書的後面也會有解釋,因為本地管理的資料檔案頭部,有8個保留塊。
看x$bh,返回了塊的觸控(touch count)資訊,表示了一個塊的熱點程度,現在最熱的是資料塊11,它並不是資料塊,而是段頭,透過如下查詢也可以證明:
Piner@10gR2>select header_file,header_block from dba_segments 2 where owner='PINER' and segment_name='TEST'; HEADER_FILE HEADER_BLOCK |
看v$bh,返回了塊的狀態資訊,這裡是xcur,表示排斥狀態,被當前instance獨佔,也就是該塊正在被使用。常見的狀態還有scur,表示被instance共享;cr,表示一致性讀;free表示空閒狀態;read,表示正在從磁碟上讀取;write,表示正在被寫入。至於v$bh的這些狀態,也是從x$bh中透過decode函式根據欄位state解釋過來的,所以能看得更明白一些。
如果這個時候,手工清除一次Da
Piner@10gR2>alter system flush buffer_cache; System altered. Piner@10gR2>select file#,dbablk,tch from x$bh where obj= FILE# DBABLK TCH 16 rows selected. Piner@10gR2>select file#,block#,status from v$bh where objd= FILE# BLOCK# STATUS 16 rows selected. |
可以看到,x$bh中的塊的tch都恢復到0了,而v$bh中的狀態也都變成free了,但是記錄數並沒有發生變化,也就是說,資料塊雖然被刷到磁碟上去了,資料塊的記錄指標只不過是簡單地被清空而已。
源 http://holyane.blog.163.com/blog/static/4192717220099161104576/
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21340813/viewspace-1028127/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- InnoDB 中的緩衝池(Buffer Pool)
- MySQL中讀頁緩衝區buffer poolMySql
- Node.js Buffer(緩衝區)Node.js
- Java NIO 之 Buffer(緩衝區)Java
- 你真的會用PostGIS中的buffer緩衝嗎?
- Java-NIO之Buffer(緩衝區)Java
- 8、Node.js Buffer(緩衝區)Node.js
- PSRAM在資料緩衝應用中可以取代SRAM或SDRAM
- Wgpu圖文詳解(03)緩衝區BufferGPU
- Node.js 中的緩衝區(Buffer)究竟是什麼?Node.js
- 為什麼node.js要引入buffer?淺析緩衝區bufferNode.js
- JavaScript WebGL 幀緩衝區物件JavaScriptWeb物件
- Nio再學習之NIO的buffer緩衝區
- OpenGL Android課程七:介紹Vertex Buffer Objects(頂點緩衝區物件,簡稱:VBOs)AndroidObject物件
- Libevent應用 (三) 資料緩衝
- Golang併發程式設計有緩衝通道和無緩衝通道(channel)Golang程式設計
- node事件迴圈 EventEmitter 非同步I/O Buffer緩衝區 模組事件MIT非同步
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- Java中縮放緩衝影像Java
- tf.data.Dataset.shuffle(buffer_size)中buffer_size的理解
- 緩衝管理
- 聊聊 MySQL 網路緩衝區、net_buffer_length、max_allowed_packet 那些事MySql
- 前端筆記之JavaScript(十二)緩衝公式&檢測裝置&Data日期前端筆記JavaScript公式
- 輸出緩衝
- [java]利用IO流中的位元組流和緩衝流寫一個複製資料夾的小程式Java
- stdio流緩衝區
- 雙緩衝學習
- 無緩衝阻塞 chan
- 緩衝位元組流#
- MySQL InnoDB緩衝池MySql
- Java NIO:緩衝區Java
- JavaScript 緩衝運動JavaScript
- Java™ 教程(緩衝流)Java
- 開關電源緩衝吸收電路:拓撲吸收、RC吸收、RCD吸收、鉗位吸收、無損吸收、LD緩衝、LR緩衝、飽和電感緩衝、濾波緩衝、振鈴_rc吸收和rcd吸收
- laravel chunk 分塊後 第二塊資料是物件Laravel物件
- MySQL Join原理分析(緩衝塊巢狀與索引巢狀迴圈)MySql巢狀索引
- TensorFlow中結構化資料工具Protocol BufferProtocol
- js 在陣列物件中匹配到指定的資料JS陣列物件
- Go 緩衝通道(bufchan)用法Go