ORACLE数据库性能优化(转)
论Oracle数据库的性能优化问题

马 红 云
( 中国民用航 空大连 空中交通管理站 辽宁大连 1 1 6 0 3 3 )
摘要 : Or a c l e 数 据库作 为 目前适 用性 最好 的关 系数据库 引擎之 一, 能够 支持 各种业 务形式 、 处理各 种复 杂事务 , 得 到极 为广泛 的应 用。
1对数据库服务器 内存分配的调整
由于对服务器 内存参数 的调整对o r a c l e 的性能影响显著 , 它成 为O r a c l e  ̄据库性能调 优的首选对象。 服务器 内存参数 的调整主要 是对数据库系统全局 区的调整 , 系统全局 区包括共享池、 数据缓冲 区、 日志缓冲区 。 其 中最主要的是对数据缓冲区和共享池 的参数调
3 . 2表 的分 区和 并行 技 术
如果必须要在数据库运行特别耗时的操作。 应尽量地把这样的 操作分解 , 严格 限制操作所涉及的记录数 , 并设法使操作并行 , 充分 地提高 执行效率 。 ( 1 ) 使用分区 分区技术有两个潜在的好处: 提高查询性能和提 高数据 库可用性 。 数据库查询 时, 优化器知道那些分区包含查询所 要的数据 。 而其它分 区数据将不会被读取 , 从而查询 任务将更快完 成。 许 多 管 理 工 作 可 在 只 一个 分 区上 进 行 , 而 不 影 响 其它 分 区 的数 据。 例 如 可 以选 择 只 删 除一 个 表 分 区 中 的数 据 。 可对 表 分 区进 行 再 分割 , 把一个表分区迁移到不同的表 空间上 。 可只对 一个表分 区进 行分析 统计 。 表分区的这 些特性 。 ( 2 ) 使用并行 。 Or a c l e 数据库 中几乎 所有的操作都 支持 并行 特 性, 包括查询、 插入 、 和数据加载。 并行选项可 以使多个处理器 同时 处理一条命令 , 在创建库数据库对象 时可以设定 并行参数 , 也可在 查询语句 中重新设 。
浅谈ORACLE数据库的性能优化

内存是 O A L R C E数据库体系结构中最为重要 的部分之一 , 也是影 响 数据库性能 的第一个 因素 。在 O A L 数据 库中 , R C E 服务器 内存直接影响 数据库 的运行 速度 ,按照系统对 内存 的使用方法 , R C 数据库 的内 O AL E 存 可 以分 为 系统 全局 区 ( G ) S A ,程序全 局 区 ( G ) P A 、排序 区 (O T SR
12 利用初始化 参数调整 内存 .
A mn t t , d i s a r 以下简称 D A 来 讲 , ir o B ) 如何监 控 、 调整 服务 器 和数据库 性 能, 防止出现数据瓶颈 , 使数据库保持最佳性能 , 限的计算 机系统资 让有 源为更多 的用户服务 ,就显得尤 为重 要 ,也是 D A 日 B 常维护 的基本内 容。 数据库性能调整设计数据库软 、 件的方方 面面 , 硬 笔者根据工作实践 仅对其 中一些方法进行探讨 。
在 O C E的初始化文件 I ISDO A中有些初始 化参 数可 以调 A R L NT I .R 整 O C E的 内存使 用情况 。参 数 D — L C _ I E与数据块 大小有 A R L BBO KS Z 关 , S A大小和数据库性 能的决定 因素 , 是 G 每个缓 冲区的大小等于该参 数 的大小 。通过调整该参数可以提高系统的命 中率 , 有效减少 I / O冲突 。 在 数据库安装过程 中就要对该参数进行设 置 , 一般大型的企业级应用 系
地对 数据 库进 行性 能优 化 ] 。因此 ,对 于数据 库 管理 员 ( aaB s D t ae
及用户全局区( S RG O A R A 3 U E L B LA E ) 个部分 , 其中库缓 冲区含有 S L Q 语句的分析码 、 执行计划 ; 数据 字典缓 冲区含有从数据字典 中得到 的表 、 列定义、 权限; 用户全局 区包含用户的 M S T 会话信息 。
浅谈ORACLE数据库性能的优化

线字典能够反映出 O C E 动态运行 睛况 。可 以得知 A R L O C E 数据库使用的 C U 时 间, A R L P 操作系统用户状态
( 下转第 5页 )
④调整数据库参数。 应用程序的执行最终将归结为
数据库 中 S QL 语 句执 行 。数据 库操作 的重要部分 由
维普资讯
系统服务时间 + 用户等 待时间。因此 ,获得满意 的
用户响应 时间有两条途径 :一是减少系统服务时间,即
提高数据库吞吐量:二是减少用户等待 时间,即减少访 问同一数据库 资源 的冲突 。
@S L语句跟踪工具。S L语言跟踪工具可以记 Q Q
录 S QL 语句的执行情况 。在 O C E 会话开始时 。 A R L
字典缓冲区组成。 共享 S QL 区是存放用户 S QL命令的 区域 。数据字 典缓冲 区是存放数据库运行动态信息的。
③E L I P A s L语句优化命令。 Ⅺ AN L N- O 作为一 个程序开发者 。需要决定一个查询执行计划的效率 ,使
用 E P A L N 语句就可 得到一条 查询 的执 行计 X L NPA
行过程 中优化配置的。根据数据库的运行状况 。不仅可 调整数据库系统的全局 区 (GA)的大小。还可以调整 S 程序全局区的大小。其 中 S A 主要 由数据缓冲区、 日 G
S L语句跟踪文件调整应用程序的性能。 Q
34种Oracle性能优化的方法

34种Oracle性能优化的方法1、选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.2、WHERE子句中的连接顺序:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.3、SELECT子句中避免使用‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间4、减少访问数据库的次数:ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等;5、在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE 参数, 可以增加每次数据库访问的检索数据量 ,建议值为2006、使用DECODE函数来减少处理时间:使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.7、整合简单,无关联的数据库访问:如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)8、删除重复记录:最高效的删除重复记录方法 ( 因为使用了ROWID)例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);9、用TRUNCATE替代DELETE:当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)10、尽量多使用COMMIT:只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:COMMIT所释放的资源:a. 回滚段上用于恢复数据的信息.b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACLE为管理上述3种资源中的内部花费11、用Where子句替换HAVING子句:避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. (非oracle中)on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。
浅谈Oracle数据库SQL性能优化

浅谈Oracle数据库SQL性能优化摘要:随着计算机信息网络技术的不断发展,数据库系统取得很大突破。
面临网络化时代的进步,人们对网络信息的需求的也变得逐渐走向多元化。
网络信息数据库存取技术逐渐被广泛运用,数据库系统规模也越来越大。
目前Oracle 就是被广泛应用的一种数据库,其信息存储量能满足人们日益增长的需求,但为了能够保证其能够流畅稳定安全地运行,应当对其进行一定的优化措施。
关键词:Oracle数据库;SQL优化随着数据库技术功能逐步增加,应用范围逐渐扩展,效果也是日渐明显。
随着网络信息吞吐量的逐步增加,数据库系统在对数据进行处理时算法变得十分繁琐。
数据库系统如果长时间的超负荷工作就会变得反应迟钝影响效率,甚至可能导致死锁。
由于天天都将会有大量的SQL语句访问Oracl数据库系统,系统需要很多时间来处理这些访问,而SQL语句直接影响到Oracl数据库系统性能,所以运用对SQL语句优化的方法来提升ORACLE数据库的性能显得十分必要。
1、对SQL进行优化的必要性数据库系统作为数据管理的主要组成部分主要作用是存储供相关人员查阅大量信息,实现网络资源共享。
查询操作在数据库系统的各种操作中居于首位,直接关系到数据库系统的运行状态。
假如数据查询操作量过大,会给系统带来很大的负担,系统反应速度变慢,严重者可能就会引起系统瘫痪。
因此,为了保证数据库系统的高效正常运行,必须对SQL语句进行优化[1]。
图1.1SQL语句优化2、SQL优化的目标往往由于SQL的结构设计的问题,很可能使得正常运行的一个数据库系统出现性能问题。
所以必须对SQL语句进行必要的调整,达到有效提升数据库系统性能的目的。
对SQL结构的优化本质就是简化繁琐的数据结构,常规方法一般就是对SQL语法进行一些调整,基本方法是把程序中繁琐的SQL语句结构简化,保持服务器的搜索数据能力处于最佳运行状态,有效降低程序中表扫描的时间,促使所以功能得以充分发挥,尽量使服务器的处理器时间和输入输出时间保持平衡。
Oracle数据库性能调整优化

在最 佳 的性 能状 态 下 , 信 息 系统 开 发设 计 之 前 就 在 应该 考虑 数据库 的优 化 策 略 , 设 计 阶段 进 行 数 据 在 库性 能优 化 的成本 最 低 , 收益 最 大 。优化 策 略 一 般 包括 服 务 器操 作 系统 参数 调 整 、 rc Oal 据 库 参数 e数 调整 、 网络性 能 调 整 、 用 程 序 S L语 句 分 析 及设 应 Q 计等 几个方 面 , 中应 用 程序 的分 析 与设 计 是 在信 其 息系 统开发 之前 完成 的 。 …
绍 了数 据 库 性 能 优 化 目标 , 析 了 影 响 数 据 库性 能 的 因 素 , S L查 询 语 句 的优 化 、 r l 在 分 配 以 及 磁 盘 IO 分 对 Q O a e内 c /
等数据库优化技术进行 了详细 的介绍 。 关键词 :rc ; Oal 数据库 ; 能 ; e 性 优化
中 图分 类 号 :P 1 T 31 文件 标 识 码 : A
T ea jsme t n pi z t no eoa l d tb s efr n e h dut n d o t ai ft r c aa aep ro ma c a mi o h e
Q U D oxaL e, O i —u I a—i,Uw iH U Xa h i o
p o e si mu h mo e c mp e a eo e t e r q i me t ft e d t b s e o ma c sg t n ih r rc s s c r o l x t n b f r ,h e u r h e n aa a e p r r n e i et g hg e . o h f i
2 优 化 目标
优化是 数据 库设 计 中“ 计划 ” “ 计 ” “ 视 ” 、设 、监
Oracle数据库性能优化与案例分析
Oracle数据库性能优化与案例分析
性能优化探讨
• 原因:为什么? • 慢(响应时间) • 慢(吞吐量)
性能优化探讨
• 目的:为了什么? • 快(响应时间) • 快(吞吐量)
性能优化之案例分析
• 案例之方法论 • 案例之登录访问 • 案例之资源 • 案例之锁
性能优化方法论发展
• 登录输入指标测量 • Logons:= EndSnap. logons cumulative– StartSnap. logons
cumulative。 • Logons Per Second:= Logons / TimeInterval
案例之登录访问
登录输出指标测量:
Logon Response Time:= Network Response Time * 10 + Native TCP Logon :=Network Response Time * 10 + Listener Response Time + Native IPC Logon Time 。
案例之登录访问
• 例:
•
某医院HIS业务系统的账户登录操作异常缓慢,部分情况下
甚至会出现长时间的卡壳情况,业务影响主要发生在每天早上
的上班时刻。
案例之登录访问
优化过程: • 账户登录过程一般涉及到在账户表格以及对应日志表格上的冲
突,比如Buffer busy waits或者TX lock。AWR未体现该特征。 • AWR报告显示connection management call elapsed time时间偏长
成功率:98% 高 失败率:2% 低
失败人数:500*2%=10
第09章Oracle的性能优化
9.2 SQL语句的优化
9.2.1 SQL语句的优化规则 9.2.2 SQL语句优化的具体方法
9.2.1 SQL语句的优化规则
(1)去掉不必要的大表、全表扫描。不必要的大表、全表 扫描会造成不必要的输入输出,而且还会拖垮整个数据库;
(2)检查优化索引的使用 这对于提高查询速度来说非常重 要;
(3)检查子查询,考虑SQL子查询是否可以用简单连接的 方式进行重新书写;
系统的服务器,可以使用sar –u命令查看CPU的使用率;NT 操作系统的服务器,可以使用NT的性能管理器来查看CPU 的使用率。
出现CPU资源不足的情况是很多的:SQL语句的重解析、 低效率的SQL语句、锁冲突都会引起CPU资源不足。
2.查看SQL语句的解析情况 (1)数据库管理员可以执行下述语句来查看SQL语句的解析 情况:
9.3 Oracle运行环境的优化
9.3.1 内存结构的调整 9.3.2 物理I/O的调整 9.3.3 CPU的优化调整 9.3.4 网络配置的优化 9.3.5 Oracle碎片整理 9.3.6 Oracle系统参数的调整
9.3.1 内存结构的调整
内存参数的调整主要是指Oracle数据库的系统全局区 (SGA)的调整。SGA主要由三部分构成:共享池、数 据缓冲区、日志缓冲区。
2.数据缓冲区 数据库管理员可以通过下述语句,来查看数据库数据缓冲区
的使用情况。
SELECT name, FROM v$sysstat WHERE name IN ('db block gets','consistent gets','physical reads');
根据查询出来的结果可以计算出数据缓冲区的使用命中率:
论Oracle数据库的性能优化问题
论Oracle数据库的性能优化问题Oracle数据库是一款流行的企业级数据库软件,但其性能优化问题也是不可避免的。
在实际应用中,如果Oracle数据库出现性能问题,将有严重的影响和损失。
因此,本文将讨论如何优化Oracle数据库的性能问题。
首先,针对Oracle数据库的性能瓶颈,可以通过调整数据库参数来提高性能。
Oracle数据库有很多参数可以配置,例如,缓存区大小、连接数、内存分配等。
通过针对不同的应用场景调整不同的参数配置,可以最大化地利用数据库的性能。
其次,针对SQL的性能问题,可以通过改进SQL语句来提高性能。
SQL优化是一项复杂的工作,但可以通过分析SQL执行计划来发现性能瓶颈,例如,缺乏索引、大表连接、高开销的子查询等。
并可以通过添加索引、优化查询语句等方式来提高数据库的性能。
除此之外,还可以通过加强硬件设备等方面来提升数据库性能。
例如,扩展数据库服务器的内存和硬盘容量,可以提高数据库的读写速度。
而使用高速网络设备如IB网络和10/100G以太网设备等,也可提高数据库的数据传输速度。
此外,Oracle数据库的性能优化也需要管理进程的支持与配合。
例如,数据库管理员需要监控数据库服务器硬件和软件性能,例如Oracle数据库的内部锁、等待事件、I/O活动等等。
在监控到性能问题后,需要在业务空档期进行优化,如调整SQL语句、更改数据库参数等。
总之,提高Oracle数据库的性能需要全面考虑软硬件配置、SQL语句等多个方面的因素。
通过合理的参数配置、SQL优化和硬件支持等方式,可以优化数据库的性能,提高应用的稳定性和响应速度。
Oracle的性能优化
千里之行,始于足下。
Oracle的性能优化
Oracle的性能优化是提高数据库系统性能和响应速度的关键步骤,可以通
过如下几个方面进行优化:
1. 数据库设计和规范化:合理的数据库设计和良好的规范化可以减少数据冗余,提高查询效率,避免数据冲突和不一致。
2. 索引优化:在频繁查询的字段上创建适当的索引,可以加快查询速度。
但是,索引不宜过多,因为它们会增加数据修改和插入的时间。
3. 查询优化:优化查询语句的执行计划,使用正确的连接方法(如内连接、外连接),避免全表扫描。
4. 硬件升级:增加内存、硬盘和处理器等硬件资源,可以显著提高
Oracle数据库的性能。
5. 优化配置参数:根据数据库的特点和应用的需求,调整数据库的配置参数,例如SGA大小、PGA大小、日志文件大小等,以提高性能。
6. 数据库优化:使用合适的数据库特性,如分区表、分区索引、物化视图等,优化数据库的存储和查询效率。
7. 监控和调优:持续监控数据库的性能指标,如CPU利用率、内存使用率、磁盘IO等,并及时进行适当的调优操作。
第1页/共2页
锲而不舍,金石可镂。
总体来说,Oracle的性能优化需要综合考虑数据库设计、硬件配置、查询优化和系统监控等多个方面,通过不断的调整和优化,提高数据库的性能和响应速度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE数据库性能优化(转)Technorati 标签: oracle字体: 小中大| 打印发表于: 2004-10-27 13:54 作者: tangshan_ph 来源: CNOUG博客首页可以通过调整数据库应用程序、数据库和操作系统来增强ORACLE的性能。
适当的调整ORACLE 可以针对特定的应用程序和硬件配置获得较好的性能。
性能调整要考虑响应时间、吞吐量、限制这三个因素。
依赖于应用的不同特性,对这三个因素的要求也不尽相同。
对于OLTP来说,要求有较高的响应时间,而对于OLAP来说,对吞吐量有较高的要求。
系统的响应时间可分为服务时间和等待时间,对于响应时间性能调整来说,就是缩短服务时间和等待时间。
对于吞吐量性能调整来说,就是利用同样的资源做更多的事情(缩短服务时间)、较快的完成工作(缩短等待时间)。
象CPU、内存、I/O能力、网络带宽等资源对减少服务时间和等待时间有很大影响。
增加资源可能会获得较高的吞吐量和较快的响应时间。
系统性能以来于:λλ可用资源的数量λλ请求资源的客户的数量λλ等待资源的时间λλ占用资源的时间通常,应用程序的开发和设计对性能的影响最大,一旦应用程序被付诸实施,数据库管理员只能在系统设计的限制之下进行基本的调整。
性能调整包含了10个步骤。
在此主要讨论象CPU、内存、I/O能力、网络带宽等资源对性能的影响,并如何配置资源来提高系统的性能。
首先要了解系统的运行情况,有几种工具可以用来获取表示系统性能的数据。
能表示系统性能的数据源有以下几种:λλ数据卷λλ在线数据字典λλ操作系统工具λλ动态性能表λλ SQL跟踪工具λλ报警日志λλ应用程序输出λλ用户λλ初始化参数文件λλ程序文本λλ设计(分析)字典λλ可比较数据而能获得这些数据的可用工具主要有以下几种:λλ动态性能视图:Oracle利用一组动态性能视图来监控数据库。
这些视图名以"V$"开始。
SYS 用户拥有这些视图。
λλ Oracle与SNMP(Simple Network Management Protocol)支持:SNMP使用户可以写自己的工具和应用程序。
λλ解释计划(EXPLAIN PLAN):EXPLAIN PLAN是一个SQL语句,它能列出查询优化器选择的存取路径。
λλ SQL跟踪工具和TKPROF:SQL跟踪工具以文本方式记录下语句在每个阶段的资源消耗,分析,执行,获取结果,提交或回滚。
λλ TKPROF汇总SQL跟踪工具所产生的文件,有选择的包含在EXPLAIN PLAN的输出里。
λλ脚本:Oracle支持许多PL/SQL包,它们可用于对数据库实例进行调整。
例如:UTLBSTAT.SQL UTLESTAT, SQLUTLCHAIN.SQL, UTLDTREE.SQL, 和UTLLOCKT.SQL。
λλ应用程序注册:可以在数据库中记录下应用程序的名字和它执行的操作,这样管理员就可以根据模块来跟踪性能。
应用程序的名字和活动记录在V$SESSION 和V$SQLAREA视图内。
λλ Oracle企业管理器:它是一个用于管理Oracle环境的工具集。
包括:λλOracle Performance Manager :它获取、计算和显示数据库的性能数据,通过它可以监控数据库,来从而有效地使用内存,最小化磁盘I/O,避免资源竞争。
λλ Oracle TopSessions :用于监控每个会话的活动。
λλ Oracle Trace :在Oracle Performance Manager和Oracle TopSessions采用抽样技术定期的从数据库动态性能视图中收集数据,而Oracle Trace则根据预定义的事件来收集性能数据。
λλ Oracle Tablespace Manager :如果你怀疑数据库的性能问题来自表空间,可以使用该工具检测和矫正这些问题。
λλOracle Expert:它提供自动的性能调整。
由Oracle Performance Manager, Oracle TopSessions, and Oracle Trace检测出的问题可以在Oracle Expert中进行分析。
λλ Oracle并行服务器管理(OPSM):OPSM是一个用于Oracle并行服务器的全面的管理方案,它通过开放的client-server体系来管理异构环境中的多个数据库实例。
(一)(一)优化CPU资源确定CPU有关的问题:首先需要确定CPU是否足够大,在此方面主要通过以下三个方面来考虑:λλ在空闲期间的CPU的利用率λλ在高峰期间的CPU的利用率λλ平均的CPU的利用率如果怀疑CPU是系统性能的瓶颈,可以通过如下方法来确定:λλ检查系统的CPU使用率:ORACLE只统计ORACLE会话对CPU的使用情况,而系统中的任何进程都使用CPU,所以调整其他应用程序也有可能改善ORACLE的CPU性能。
在UNIX系统中可以通过sar –u命令来获得有关CPU 使用情况的信息,一般情况下,如果CPU 的空闲时间或I/O等待时间接近于0,说明CPU是瓶颈。
在WINDOWS NT 中,可以通过性能监视器来获得有关CPU 使用情况的信息。
内存管理:Paging and Swapping。
通过UNIX的sar 或vm stat命令,以及WINDOWS NT 中的性能监视器来分析发生分页和交换的原因。
I/O管理:Thrashing:确保工作量适宜于内存的大小,避免过多的页交换。
如果CPU花费时间片的很大部分来确保程序可运行,则可能只有50%的时间用于实际工作。
Client/Server Round Trips:一些隐含的消息发送会加重CPU的负担,应用程序经常产生一些消息在网络中来回传递。
进程管理:Scheduling and Switching:操作系统可能会花费很多时间用于切换进程,检查是否启动了大量的进程。
Context Switching:进程的上下文切换同样会耗费大量的CPU时间。
λλ检查ORACLE使用CPU的使用率:有两个动态性能视图可以用于检查ORCALE的进程信息。
V$SYSSTAT:显示所有会话的ORACLE CPU的使用。
V$SESSTAT:显示每个会话的ORACLE CPU的使用。
主要在如下几个方面考察ORACLE CPU的使用:λλ重新分析SQL语句:低效率的SQL共享引起语句的重新分析。
SELECT * FROM V$SYSSTATWHERE NAME IN('parse tim e cpu', 'parse time elapsed', 'parse count (hard)');SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREAORDER BY PARSE_CALLS;λλ效率低的SQL语句:低效率的SQL语句会消耗大量的CPU时间。
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA;λλ读一致性:通过回滚段实现读一致性可能会需要大量的CPU时间,可通过增加回滚段的数量来解决。
解决办法:在已经达到CPU的最大限制和无法通过调整CPU来优化性能时,则必须考虑重新设计应用。
可以考虑迁移到不同的应用体系结构上,以获得适宜的CPU使用率。
λλ从单层结构迁移到两层结构:将一台机器上的客户和服务器分离。
λλ多层,使用较小的客户机:可以将一台机器上的多个客户分离到各个较小的客户机上。
λλ两层到三层:使用事务处理器λλ利用ORACLE的并行服务器(二)(二)优化内存分配对于在内存中的数据的访问要快于对磁盘的访问,所以内存优化的目的就是提高内存命中率。
通常在优化完应用和SQL语句后,才开始优化内存分配。
内存的分配决定了磁盘I/O的数量。
如何解决内存分配问题:λλ优化操作系统的内存需求:主要通过以下方法解决,减少内存页交换;确保SGA在内存中;为每个用户分配足够的内存(可能只有一些操作系统支持)。
λλ优化Redo日志缓冲区:LOG_BUFFER参数用于控制Redo日志缓冲区,对于磁盘速度慢,CPU快的计算机,Redo日志缓冲区的使用可能会发生冲突。
可适当增大Redo日志缓冲区的大小。
一般Redo日志缓冲区只占SGA中很小的一部分,适当的增加即可提高很大的吞吐量。
λλ优化私有的SQL 和PL/SQL区:该优化主要有两部分工作,一个是区分不必要的重新分析调用,另一个是减少不必要的重新分析调用。
可以通过SQL跟踪工具、检查V$SQLAREA视图来区分不必要的重新分析调用;可以通过HOLD_CURSOR =yes 、RELEASE_CURSOR =no 、MAXOPENCURSORS = desired value这三个属性来减少不必要的重新分析调用。
λλ优化共享池:SGA的共享池部分由库高速缓存、字典高速缓存和某些用户和服务器会话信息组成。
λλ库高速缓存包含分析和执行SQL语句。
每个SQL语句的SGA共享部分为相应共享池中的内存量,在此共享池中包含语句的分析树和执行计划。
执行SGA优化的一个重要问题就是确保库高速缓存足够大,以使ORACLE能在高速缓存中保持分析和执行计划。
可以通过系统性能监视器或者v$librarycache视图查看库高速缓存的性能。
λλ字典高速缓存包含了有关数据库的数据字典信息、文件空间的可用性和对象权限。
通过命中率可以发现此字典高速缓存是否失效,可以通过系统性能监视器或者V$ROWCACHE视图查看相关数据。
如果需要可通过SHARED_POOL_SIZE参数来增加缓冲池大小。
λλ优化排序缓冲区:如果都大量的排序动作,需要增加排序缓冲区的大小。
可以通过SORT_AREA_SIZE参数实现。
(三)(三)优化I/O操作I/O优化被安排在内存优化之后,通过内存的优化,可以是I/O冲突减少,在此情况下,可以通过一些调整以使I/O性能进一步提高。
对于新系统,应自顶向下分析I/O需求,确定所需要的资源。
而对于已存在的系统应采用自底向上的方法:1.1.了解系统的磁盘数量。
2.2.了解ORACLE使用的磁盘数量。
3.3.了解应用系统的I/O类型。
4.4.了解I/O操作是针对文件系统还是原始设备。
5.5.了解对象在磁盘上的分布。
可以通过如下方法检查I/O问题:λλ检查系统I/O的使用:可以使用操作系统提供的工具来监视整个系统对磁盘文件的访问,可以将大量访问磁盘的应用与ORACLE的相关文件分别存放。
在UNIX系统中可以通过sar –d 来获得有关数据。
在WINDOWS NT 中可通过性能监视器查看。