跟踪Oracle9i 的CPU和I/O使用代价

当Oracle每一次新版本的发布,这一数据库就会变得更加的受关注,尤其是它的外部环境。Oracle在Oracle服务器上设置了很多基于CPU个数的重要的初始化参数,并且Oracle现在已经更加地意识到CPU运行循环周期和I/O操作的使用代价。

 
基于成本的SQL优化器(CBO)已经被提高到考虑外部的影响,尤其是当为一个SQL查询处理最佳执行的时候。因为数据库并非运行在一个不受其他因素影响的环境中,CBO将会成为影响每一次SQL操作的外部磁盘I/O代价和CPU运行周期代价的因素。这一重要的功能使得CBO成为全球多数成熟软件产品中的其中一个。CBO的工作就是为任何SQL操作选择一个最佳的执行计划。

根据Oracle文档,对于I/O和CPU的使用代价评价如下:

使用代价 =  (#SRds * sreadtim + #MRds * mreadtim + #CPUCycles
         -------------------------------------------------
                          cpuspeed )
         -------------------------------------------------
                          sreadtim

这里:

#SRDs – 单块读入的数目

#MRDs – 多块读入的数目
#CPUCycles – CPU运行周期的数目

sreadtim  - 单块读入的时间
mreadtim – 多块读入的时间
cpuspeed  -  每一秒的CPU运行次数

请注意外部使用代价受到磁盘读定的估计使用代价以及与每一次内部操作相联系的估计CPU代价的影响。Oracle保存有关SQL处理的许多成分代价的详细信息,并使用这些平均的代价来影响基于成本的SQL优化器的选择。以下是一些范例:

杂乱信号连接的代价──Oracle知道一个杂乱连接所消耗的RAM内存的平均数量。
分类──Oracle为了执行分类和集中操作而保持跟踪RAM。
列表扫描代价──Oracle保存关于执行一个多块读入需要时间的信息。
索引块访问代价──Oraclet知道引出一个单一的块所需要的平均时间。
请注意这些使用代价的评价依据是不同的,这主要取决于你对Oracle优化器的选择。如果你具有一个带有first_rows优化器模式的OLTP系统,CBO就能够更快地返回行操作。另一方面,如果你使用的是数据仓库的first_rows优化器模式,CBO将会被这些外部因素严重影响,因为first_rows模式被设计以减少资源消耗。

为了能够完整地理解Oracle的外部使用代价,让我们深入查阅这些新的外部影响和Oracle CBO如何使用外部使用代价。

CPU代价

现在CBO已经能够估计每一操作需要的机器运行周期的数量级,并影响执行计划计算的代价。与Oracle查询有关的CPU使用代价取决于当前的服务器载入情况。CPU代价通常并不是很重要,除非是整个Oracle程序使用过多的CPU资源。

IO代价

CBO可以估计每一操作的物理块读入的数量级。I/O代价与物理数据块读入成正比。然而,CBO不具备缓冲目录的优先权利,也不能区别一个逻辑读入和一个物理读入。因为这些缺点,CBO无法识别数据块是否已经读入RAM数据缓冲器。

并非完全的完美

注意到这些使用代价也是读入数量的功能,并与读入次数有关,也注意到外部代价并没有考虑到位于RAM数据缓冲器的数据块的数量,但新的CBO发布版本应该考虑到这一因素。

这里我们可以看到Oracle都使用了评测执行计划的CPU和I/O代价评估。相比于我们处理一些类似查询而言,这一评估会变得更加复杂,因为类似查询可以被许多并发的程序处理。

在我文章的下一栏中,我将会讲到CBO如何被统计数量所影响。为了能够做出最好的执行计划,CBO必须充分使用与查询有关的所有数据项目信息,因为你必须控制如何分配统计数量,这对CBO的调整是一个关键的方面。

时间: 2025-01-20 20:08:20

跟踪Oracle9i 的CPU和I/O使用代价的相关文章

CPU和GPU双低效,摩尔定律之后一万倍 ——写于TPU版AlphaGo重出江湖之际

2008年,<三体2:黑暗森林>里写到: 真的很难,你冬眠后不久,就有六个新一代超级计算机大型研究项目同时开始,其中三个是传统结构的,一个是非冯结构的,另外两个分别是量子和生物分子计算机研究项目.但两年后,这六个项目的首席科学家都对我说,我们要的计算能力根本不可能实现.量子计算机项目是最先中断的,现有的物理理论无法提供足够的支持,研究撞到了智子的墙壁上.紧接着生物分子计算机项目也下马了,他们说这只是一个幻想.最后停止的是非冯结构计算机,这种结构其实是对人类大脑的模拟,他们说我们这只蛋还没有形成

阿里内核月报2014年5月-06月

The initial kGraft submission 长久以来,重启操作系统来安装一个内核补丁一直是一个烦人的事情.很多时候,重启系统的时机会受到其他条件的限制.此外,用户则更希望能够在不重启系统的情况下完成内核补丁的安装工作.2008年为了迎合这一需求Ksplice诞生了.但它并没有被合并进主线内核,甚至在Oracle收购其后便消失在Linux开源社区的视线内了.最近其他一些解决方案陆续提交到了Linux内核社区,kGraft便是其中之一. kGraft是由SUSE的Jiri Kosin

iOS开发那些事--性能优化–内存泄露问题的解决

内存泄漏问题的解决 内存泄漏(Memory Leaks)是当一个对象或变量在使用完成后没有释放掉,这个对象一直占有着这块内存,直到应用停止.如果这种对象过多内存就会耗尽,其它的应用就无法运行.这个问题在C++.C和Objective-C的MRR中是比较普遍的问题. 在Objective-C中释放对象的内存是发送release和autorelease消息,它们都是可以将引用计数减1,当为引用计数为0时候,release消息会使对象立刻释放,autorelease消息会使对象放入内存释放池中延迟释放

第四章——SQLServer2008-2012资源及性能监控(2) .

原文:第四章--SQLServer2008-2012资源及性能监控(2) . 本文接着上文继续,讲述如何监控CPU的使用情况 前言: CPU是服务器中最重要的资源.在数据库服务器中,CPU的使用情况应该时刻监控以便SQLServer一直处于最佳状态. 本文将会使用可靠性和性能监视器来获取CPU相关的使用统计信息 可靠性和性能监视器是过去性能监视器工具的加强版.同时拥有性能监视器的全部功能. 性能计数器提供对各种系统活动的统计功能.可以找到有数百种性能计数器来针对Windows操作系统或者第三方应

SQL查询性能分析

原文:SQL查询性能分析 原文出处:http://blog.csdn.net/dba_huangzj/article/details/7623926 SQL查询性能的好坏直接影响到整个数据库的价值,对此,必须郑重对待. SQL Server提供了多种工具,下面做一个简单的介绍:   一.SQL Profiler工具 SQL Profiler可用于: l  图形化监视SQLServer查询: l  在后台收集查询信息: l  分析性能: l  诊断像死锁这样的问题: l  调试Transact-S

sql 全文索引入门与实例

全文索引为在字符串数据中进行复杂的词搜索提供有效支持.全文索引存储关于重要词和这些词在特定列中的位置的信息.全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行.     全文索引包含在全文目录中.每个数据库教程可以包含一个或多个全文目录.一个目录不能属于多个数据库,而每个目录可以包含一个或多个表的全文索引.一个表只能有一个全文索引,因此每个有全文索引的表只属于一个全文目录.     全文目录和索引不存储在它们所属的数据库中.目录和索引由 Microsoft 搜索服务分开管理.     全

Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

Instruments是动态分析工具它与Xcode集成在一起可以在Xcode中通过菜单Product→Profile启动.启动如图所示Instruments有很多跟踪模板可以动态分析和跟踪内存.CPU和文件系统. 每个跟踪模板都有不同的用途其中Leaks可以检测内存泄漏点Allocations跟踪模板可以查看内存的使用情况.下面我们通过一个实例介绍一些Instruments工具的使用我们来人为制造一个内存泄漏我们在HelloWorldScene.cpp中修改代码 bool HelloWorld:

关于网络连接的和高效率的数据中心

现如今,数据中心作为企业组织机构内的战略资产已经承担起了新的.更突出的作用.随着容量需求的增加,以及支持"永远在线"的数字业务的压力迫使数据中心必须积极的适应和发展,并且需要以日益加快的速度对这些需求进行响应.云服务.移动性.物联网.大数据--所有这些新兴技术和其他相关的趋势正在给现代数据中心带来巨大的压力.为了跟上市场需求的发展,今天的数据中心物理基础设施较之十年前要变得更加复杂,更具相互关联性,且更加是以性能驱动的. 为了帮助管理这种不断变化的环境,新的思维方式和基础设施不断涌现.

【OS】AIX之topas命令详解

[OS]AIX之topas命令详解 AIX基本命令topas简介 Posted on 2015 年 11 月 11 日 by xiaoyu 由于最近工作需要涉及到AIX主机.存储层面,就对这方面的内容做个简要的笔记,以供后续参考. topas命令利用System Performance Measurement Interface(SPMI) API获得有关信息,使系统开销保持最小程度,topas命令用于监控各种系统资源,比如cpu使用情况.内存和换页空间.磁盘性能.网络性能以及NFS统计信息等