Oracle 10R2 研究--db_file_multiblock_read_count对成本的影响
??? 當研究oracle的查找方式中發現,在全表掃描和索引掃描時,會用到db_file_multiblock_read_count來一次讀取多個IO。也看了一些關于db_file_multiblock_read_count的文章,為加深自己的理解,特做個試驗研究。
?以下是reference對它的解釋:
?? 參數類型: Integer
?? 默認值: 這個值對應最大的I/O大小,但是它是平臺依賴的。
?? 修改方法:ALTER SESSION, ALTER SYSTEM
?? 值范圍:依賴于操作系統
?? 這個參數的意思是,在Table scan中,一次連續讀(sequential read)能獲取的最大塊數。當然這個值,不能超過操作系統和硬件的I/O極限。如果超過了,Oracle則會使用實際最大值。一般在OLTP系統中,這個值是4~16
???? 執行語句:?
select?count(DISTINCT?AMOR_VAL)?from?COST_LEDG_H??? 列AMOR_VAL沒有建立任何索引,同時COST_LEDG_H有大約3百萬行數據。
?? 執行:
alter?session?set?db_file_multiblock_read_count=4? 統計結果:
|?Id??|?Operation??????????|?Name????????|?Rows??|?Bytes?|?Cost?(%CPU)|?Time--------------------------------------------------------------------------------
|???0?|?SELECT?STATEMENT???|?????????????|?????1?|?????2?|??5352???(4)|?00:01:05
????13784??consistent?gets
? 執行: alter?session?set?db_file_multiblock_read_count=8;
? 統計結果:
|?Id??|?Operation??????????|?Name????????|?Rows??|?Bytes?|?Cost?(%CPU)|?Time--------------------------------------------------------------------------------
|???0?|?SELECT?STATEMENT???|?????????????|?????1?|?????2?|??3914???(5)|?00:00:47
?13784??consistent?gets
? 執行
alter?session?set?db_file_multiblock_read_count=16;? 統計結果:
|?Id??|?Operation??????????|?Name????????|?Rows??|?Bytes?|?Cost?(%CPU)|?Time|???0?|?SELECT?STATEMENT???|?????????????|?????1?|?????2?|??3194???(6)|?00:00:39
?
?13784? consistent gets
?
?? 通過以上的例子發現,我們將?db_file_multiblock_read_count?改成4,8,16后,雖然查詢的IO次數沒變,但查詢的時間從65s,47s,39s的減少,
效果顯著,同時Cost也限制減少。
?? 總結:較大的db_file_multiblock_read_count 可以獲得較好的性能提升。
轉載于:https://www.cnblogs.com/zping/archive/2008/10/14/1311128.html
總結
以上是生活随笔為你收集整理的Oracle 10R2 研究--db_file_multiblock_read_count对成本的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感谢Adobe,用上了Silverlig
- 下一篇: 钱德沛教授:云计算和网格计算差别何在?