oracle cost計算方式
--------------資料庫版本
SQL> select * from v$version where rownum=1;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
---------------表資訊
表塊數-------64157
_db_file_optimizer_read_count=16--------------真正計算cost的時候是按照這個塊來計算,非db_file_multiblock_read_count
db_file_multiblock_read_count=16
-----------系統統計資訊(noworkload統計資訊)
SQL> select
2 pname, pval1
3 from
4 sys.aux_stats$;
PNAME PVAL1
------------------------------ ----------
CPUSPEEDNW 833.212
IOSEEKTIM 10
IOTFRSPEED 4096
------------cost計算公式,cost=io_cost+cup_cost
io_cost=(總塊數/mbrc)*(mreadtim/sreadtim)
這裡的mbrc即為_db_file_optimizer_read_count的值。
sreadtim=ioseektim + db_block_size/iotrfrspeed=10+8192/4096=12
mreadtim=ioseektim+(db_file_multiblock_read_count* db_block_size)/iotrfrspeed==12+(16*8192)/4096=42
其中cpucycles的值根據plan_table中的cpu_cost來獲得
cpu_cost=cpucycles/(cpuspeed*sreadtim)
-------------執行一個查詢
SQL> select count(*) from wxh_tbd;
COUNT(*)
----------
448497
執行計劃
----------------------------------------------------------
Plan hash value: 853361775
----------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 14088 (1)| 00:02:50 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| WXH_TBD | 448K|14088 (1)| 00:02:50 |
----------------------------------------------------------------------
我們看看這個cost是如何計算出來的。
io_cost=(總塊數/mbrc)*(mreadtim/sreadtim)
=(64157/16)*(42/12)=14036
cpu_cost=cpucycles/(cpuspeed*sreadtim)=524164776/(833.212*12*1000)=52.4241106
總cost=14036+52=14088
跟oracle計算出來的是一致的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22907091/viewspace-707809/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle cost計算(轉自itpub網友)Oracle
- oracle實驗記錄 (計算hash join cost)Oracle
- in list查詢計算cost
- oracle實驗記錄 (oracle b*tree index訪問Cost計算(1))OracleIndex
- oracle實驗記錄 (FTS的cost與基數計算)Oracle
- oracle實驗記錄 (全表掃描COST計算方法)Oracle
- 等頻直方圖,計算COST直方圖
- OPTIMIZER_INDEX_COST_ADJ與成本計算Index
- 計算表掃描中執行計劃的COST
- 【轉】OPTIMIZER_INDEX_COST_ADJ與成本計算Index
- oracle基於cbo成本計算方式說明Oracle
- noworkload下全表掃描cost的計算
- Oracle 監聽投毒COST解決Oracle
- CBO Cost Formulas基於成本優化器的成本計算公式大全ORM優化公式
- 周權重指數計算方式
- Oracle平行計算Oracle
- Oracle date計算Oracle
- 大文字平行計算實現方式
- 計算機編碼方式雜談計算機
- Cost Control: Inside the Oracle OptimizerIDEOracle
- Oracle 成本計算公式Oracle公式
- 雲端計算支援 IT 安全的12種方式
- 雲端計算的7種變化方式
- 【oracle】日期加減計算Oracle
- 【資料結構】30、hashmap=》hash 計算方式資料結構HashMap
- 【MOS】Limitations of the Oracle Cost Based Optimizer (文件 ID 212809.1)MITOracle
- oracle實驗記錄(並行操作與FTS COST)Oracle並行
- Oracle標準成本計算和平均成本計算比較Oracle
- 程式設計師計算私活薪資的正確方式程式設計師
- 執行計劃中cost, card的含義
- 【統計資訊】Oracle常用的收集統計資訊方式Oracle
- Flutter最佳入門方式——寫一個計算器Flutter
- 身份證號碼校驗位的計算方式
- MySQL中TPS和QPS的計算方式MySql
- oracle實驗記錄 (predicate對cpu cost的影響)Oracle
- [計組] 計算機編碼方式:原碼、反碼、補碼計算機
- cost量化分析
- 表連線cost