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性能诊断艺术。

时间: 2024-08-26 18:33:58

ORACLE 系统统计数据和CPU开销模型的相关文章

Oracle系统统计信息

Oracle系统统计信息 系统统计信息主要描述了与系统硬件相关的某些特性,例如cpu和io系统的性能和利用率等.这些信息对于查询优化器来说是非常重要的,在选择执行计划的过程中,oracle优化器会利用系统统计信息来评估执行计划的成本,因此,准确无误的系统统计信息可以帮助优化器做出正确的选择. 我们可以通过DBMS_STATS.GATHER_SYSTEM_STATS过程来收集系统统计信息,收集的方式有两种:负载统计(WORKLOAD STATISTICS)在具有真实系统负载的数据库系统上,收集某一

oracle 优化统计数据之直方图(histograms)

直方图是一种按数据出现的频率来进行分类存储的方法.在oracle中直方图是用来描述表中列数据的分布情况.每一个sql在被执行前都要经过优化这一步骤那么在优化器给出一个最优执行计划之优化器应该要知道sql语句中所引用的底层对象的详细信息. 直方图描述的对象包括列中不同值的数量和它们出现的频率.现在存储每一个不同值和它出现的频率是不可行的,特别是对于大表来说列中有上万个不同值,oracle使用直方图来存储关于列中数据分布的有用信息而且oracle的CBO使用直方图信息来计算出一个最优的执行计划. C

通信-NS3仿真中统计数据包的丢包率、端到端延迟以及协议开销等相关问题?谢谢啦!!只有1C币了。。

问题描述 NS3仿真中统计数据包的丢包率.端到端延迟以及协议开销等相关问题?谢谢啦!!只有1C币了.. NS3仿真中如何实现对mesh通信中数据包的丢包率.端到端延迟以及协议开销等的统计? 最好有源码的,谢谢啦!! 只有1C币了.. 解决方案 只有一个C币不是问题,CSDN支持充值的! 这种通信统计如果 NS3 系统没有提供这样的功能,就只能自己写一个测试系统,发送测试数据.

《R语言数据分析》——1.5 从其他统计系统导入数据

1.5 从其他统计系统导入数据 在最近一些学术项目中,我的任务是在R中实现一些金融模型.我要分析的样本数据是Stata的.dta文件.对于工作在学校的咨询工程师,在没接触过Stata的前提下,要理解其他统计软件所用的二进制文件格式可能有些困难,但sta文件的说明可从http://www.stata.com/help.cgi?dta获得,一些Core R团队的成员也在foreign包中加入了支持.dta的函数read.dta. 尽管如此,装载(写入)Stata--或者类似SPSS.SAS.Weka

ORACLE数据库的统计数据及其生成方式

oracle|数据|数据库|统计 ORACLE数据库的PL/SQL语句执行的优化器,有基于代价的优化器(CBO)和基于规则的优化器(RBO).RBO的优化方式,依赖于一套严格的语法规则,只要按照规则写出的语句,不管数据表和索引的内容是否发生变化,不会影响PL/SQL语句的"执行计划".CBO自ORACLE 7版被引入,ORACLE自7版以来采用的许多新技术都是只基于CBO的,如星型连接排列查询,哈希连接查询,反向索引,索引表,分区表和并行查询等.CBO计算各种可能"执行计划&

oracle sql语句统计数据写法

问题描述 oracle sql语句统计数据写法 有3张表,A表活动B表活动地区C表地区商家 A表关联B表,B表关联C表都是一对多,现在需返回活动名称,活动地区数,地区商家数 解决方案 SELECT A.活动名称COUNT(1)SUM(SELECT COUNT(1) FROM C WHERE A=B AND B=C) FROM A INNER JOIN B ON A=B GROUP BY A.活动名称 解决方案二: SELECT T1.活动 AS 活动名称 COUNT(T2.地区) AS 活动地区

求oracle sql语句统计数据

问题描述 求oracle sql语句统计数据 求oracle sql语句统计数据 要统计出勤率.迟到次数.旷工次数 签到表(ManualSign) 字段: SignId:签到表的ID ,UserId:用户ID ,SignTime:签到时间 ,SignDesc:签到备注 ,SignTag:签到标记(签到.签退) 样例记录:13, 'jiyaoqi', to_date('2015-08-18 08:00:00' ,'yyyy-MM-dd hh24:mi:ss'), '测试一下', 1 工作时间表(W

基于云计算的统计数据网络直报系统的探索

基于云计算的统计数据网络直报系统的探索 辛金国  王渊 文章阐述了当前统计数据的特点,分析了现阶段网络直报系统的不足之处,结合云计算的理论基础,分析了构建基于云计算平台的网络直报系统的可行性.根据政府统计部门的实际需求,提出了基于云计算网络直报系统的架构及其应用场景. 基于云计算的统计数据网络直报系统的探索

Oracle自动性能统计

Oracle自动性能统计   高效诊断性能问题,需要提供完整可用的统计信息,好比医生给病人看病的望闻问切,才能够正确的确诊,然后再开出相应的药方.Oracle数据库为系统.会话以及单独的sql语句生成多种类型的累积统计信息.本文主要描述Oracle性能统计涉及到的相关概念及统计对象,以更好的利用统计信息为性能调整奠定基础. 一.性能统计信息的几个术语 增量值(delta)   性能统计信息依赖于delta值的累计,即增量值.增量值反映了在某个特定时段某个特定事件的趋势,或者说波动的幅度.通过对比