ORACLE 系統統計資料和CPU開銷模型
原創 轉載請註明出處
學習感悟
10G以後預設都是使用CPU開銷模型,除非在SQL語句級別指定NO_CPU_COSTING,也就是說除了IO_COST以外,還需要計算CPU_COST,而系統的統計資料就是影響COST計算的一些基數。
系統統計資訊一般是存放在aux_stats$裡面如下:
select * FROM AUX_STATS$;
SNAME PNAME PVAL1 PVAL2
------------------------------ ------------------------------ ---------- --------------------------------------------------------------------------------
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 01-06-2010 23:25
SYSSTATS_INFO DSTOP 01-06-2010 23:55
SYSSTATS_INFO FLAGS 0
SYSSTATS_MAIN CPUSPEEDNW 864.957
SYSSTATS_MAIN IOSEEKTIM 19.887
SYSSTATS_MAIN IOTFRSPEED 10580.471
SYSSTATS_MAIN SREADTIM 0.512
SYSSTATS_MAIN MREADTIM 0.606
SYSSTATS_MAIN CPUSPEED 1011
SYSSTATS_MAIN MBRC 11
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
SYSSTATS_INFO表示是一些基本資訊。
SYSSTATS_MAIN CPUSPEEDNW 864.957
SYSSTATS_MAIN IOSEEKTIM 19.887
SYSSTATS_MAIN IOTFRSPEED 10580.471
表示的是非工作量統計資訊(noworkload statistics)
SYSSTATS_MAIN SREADTIM 0.512
SYSSTATS_MAIN MREADTIM 0.606
SYSSTATS_MAIN CPUSPEED 1011
SYSSTATS_MAIN MBRC 11
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
表示的是工作量統計資訊(workload statistics)
所謂noworkload statistics和workload statistics簡單的說就是前者是模擬負載得出的資訊,後者是在應用系統真正負載的高的時候得到的真實資訊
收集noworkload statistics使用命令,(其實在10G預設情況下有一組noworkload statistics資訊,但是我看了好像很不準確,所以自己收集了下)。
execute dbms_stats.gather_system_stats(gathering_mode => 'noworkload');
收集workload statistics使用命令如下
1、啟動
execute dbms_stats.gather_system_stats(gathering_mode => 'start');
2、經過一段時間的負載
3、停止
execute dbms_stats.gather_system_stats(gathering_mode => 'stop');
透過計算差值會得出workload statistics
接下來是說明這些資料到底有何用
在noworkload statistics下
多塊讀的IO_COST=blocks/1.6765*db_file_multiblock_read_count^0.6581
而cost=io_cost+cpu_cost/cpuspeednw*(ioseektim+db_block_size/iotfrspeed)*1000
而在workload statistic下
多塊讀的IO_COST=blocks/mbrc*mreadtim/sreadtim
而COST=IO_COST+cpu_cost/cpuspeed*sreadtim*1000
可以看到在noworkload statistics和workload statistic下計算COST的公式是不一樣的,所以系統統計資訊實際會影響計算COST的值。
當然最好收集workload statistic,如果不收集起碼要更新noworkload statistics,讓系統統計資訊更加準確。
這裡所有的=其實為約等於,所有公式來源於ORACLE效能診斷藝術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-624917/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 圖資料庫 Nebula Graph 的資料模型和系統架構設計資料庫模型架構
- 【統計資訊】Oracle統計資訊Oracle
- 【TUNE_ORACLE】檢視系統CPU和IO情況SQL參考OracleSQL
- 庫存系統:倉庫層、排程層、銷售層的庫存資料模型設計模型
- Oracle統計資訊的收集和維護Oracle
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- Hadoop高階資料分析 使用Hadoop生態系統設計和構建大資料系統Hadoop大資料
- 讀資料工程之道:設計和構建健壯的資料系統14源系統
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- linux和windows作業系統下完全刪除oracle資料庫LinuxWindows作業系統Oracle資料庫
- Oracle收集統計資訊Oracle
- 競拍系統設計和核心資料結構資料結構
- 讀資料工程之道:設計和構建健壯的資料系統18資料儲存系統(上)
- 讀資料工程之道:設計和構建健壯的資料系統19資料儲存系統 (下)
- 支付系統設計:支付系統的賬戶模型模型
- 【統計資訊】Oracle常用的收集統計資訊方式Oracle
- wc命令——Linux系統高效資料統計工具Linux
- 10┃音視訊直播系統之 WebRTC 中的資料統計和繪製統計圖形Web
- MySQL資料庫審計系統MySql資料庫
- 資料庫系統設計概述資料庫
- 促銷系統的設計
- 系統管理指南:Oracle Solaris Containers-資源管理和 Oracle Solaris ZonesOracleAI
- 如何從資料、模型和訓練角度提升閱讀理解系統效能?模型
- Oracle 統計資訊介紹Oracle
- 修改oracle 的統計資訊Oracle
- 分散式系統:系統模型分散式模型
- Android onSaveInstanceState()、onRestoreInstanceState()儲存和恢復被系統銷燬的資料AndroidREST
- 教育大資料之資料開發系統大資料
- 系統程式設計 - I/O模型程式設計模型
- 作業系統篇-cpu作業系統
- 超大型Oracle資料庫應用系統的設計方法(下)UVOracle資料庫
- 資料庫:系統設計的核心資料庫
- 資料庫系統設計:分割槽資料庫
- 系統表和資料字典檢視
- 標題:電商後臺管理系統——資料統計
- 讀資料工程之道:設計和構建健壯的資料系統12開源軟體
- Oracle 檢查當前資料庫CPU和PSU補丁資訊Oracle資料庫
- oracle 11g 系統審計功能Oracle
- 公安大資料分析系統開發,情報研判系統搭建大資料