ORACLE 系统统计数据和CPU开销模型

简介: 原创 转载请注明出处 学习感悟        10G以后默认都是使用CPU开销模型,除非在SQL语句级别指定NO_CPU_COSTING,也就是说除了IO_COST以外,还需要计算CPU_COST,而系统的统计数据就是影响COST计算的一些基数。

原创 转载请注明出处

学习感悟

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

相关文章
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
在YMP校验过程中,从yashandb同步至Oracle的数据出现timestamp(0)字段不一致问题。原因是yashandb的timestamp(x)存储为固定6位小数,而Oracle的timestamp(0)无小数位,同步时会截断yashandb的6位小数,导致数据差异。受影响版本:yashandb 23.2.7.101、YMP 23.3.1.3、YDS联调版本。此问题会导致YMP校验数据内容不一致。
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
10月前
|
存储 缓存 程序员
软考软件评测师——计算机组成与体系结构(CPU指令系统)
本内容详细解析了计算机中央处理器(CPU)的核心架构及其关键组件的工作原理。首先介绍了CPU的四大核心模块:运算单元、控制单元、寄存器阵列和内部总线,并阐述其在数据处理中的核心职责。接着深入探讨了算术逻辑部件(ALU)的功能与专用寄存器的作用,以及通用寄存器对性能提升的意义。随后分析了控制单元的指令处理流程及特殊寄存器的功能。此外,还解析了寄存器系统的分类与设计特点,并对比了不同内存访问模式的特点与应用场景。最后,通过历年真题巩固相关知识点,帮助理解CPU各组件的协同工作及优化策略。
|
机器学习/深度学习 存储
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
873 15
YOLOv11改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
Windows
【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
在Azure App Service中,CPU占比可在App Service Plan级别查看整个实例的资源使用情况。具体应用中仅能查看CPU时间,需通过公式【CPU Time / (CPU核数 * 60)】估算占比。CPU百分比适用于可横向扩展的计划(Basic、Standard、Premium),而CPU时间适用于Free或Shared计划。然而,CPU Percentage包含所有应用及系统占用的CPU,高CPU指标可能由系统而非应用请求引起。详细分析每个进程的CPU占用需抓取Windows Performance Trace数据。
315 40
|
Oracle 关系型数据库 Linux
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
1551 8
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
某客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有版本。问题源于操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常原因为系统调用 fork() 失败。经验总结:优化日志记录,提供更多异常信息。

推荐镜像

更多
下一篇
开通oss服务