[让Oracle跑得更快.Oracle.10g性能分析与优化思路].doc

[让Oracle跑得更快.Oracle.10g性能分析与优化思路].doc

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[让Oracle跑得更快.Oracle.10g性能分析与优化思路]

在线事务(OLTP) 在线分析(OLAP) 在Oracle数据库中,凡是分配了存储空间的,都称为段,所有段并不一定指的是表,也可能是表的一个分区, 还可能是索引、大对象(LOB),或者IOT(索引表),物化视图等。 第1章 引起数据库性能问题的因素 系统设计包含: 软件的设计; --软件系统架构的设计; --软件代码的编写; 数据库的设计; --数据库的类型选择; --根据数据库类型的所有数据库对象的设计; 硬件的设计。 --存储结构的设计; --硬件的性能选择; --冗余设计。 1.1 软件设计对数据库的影响 1.1.1 软件架构设计对数据库性能的影响 对于并发操作比较大的系统,在数据库之前建一个缓冲用户请求的中间件服务。 1.1.2 软件代码的编写对数据库性能的影响 通常指的是应用程序代码中对数据库操作的代码部分对数据库产生的影响。 具体来讲就是SQL语句或是PL/SQL包。 SQL语句造成的影响: SQL语句本身在逻辑上就是效率低下的 SQL语句没有绑定变量 性能低下的SQL语句: 使用Hint、不合适的外连接,谓词的隐含转换,优化器的选择、多表关联、数据的访问方式 (索引还是全表扫描)以及表关联方式的选择(Hah Join,Nested Loops) 人为地在SQL代码中加入Hint来约束SQL的执行计划 SELECT /*+ index(t1 ind_t1) */ col1,col2 FROM t1 WHERE col1..... AND col1.....; 不必要的外连接操作 CREATE TABLE t1 AS SELECT ROWNUM a,ROWNUM+100 b FROM dba_users WHERE ROWNUM10; CREATE TABLE t2 AS SELECT DECODE(MOD(ROWNUM,2),0,ROWNUM) c,ROWNUM+1000 d FROM dba_users WHERE ROWNUM10; SELECT a,b,c,d FROM t1,t2 WHERE t1.a=t2.c(+); SELECT a,b,c,d FROM t1,t2 WHERE t1.a=t2.c(+) AND t2.d1000; SELECT a,b,c,d FROM t1,t2 WHERE t1.a=t2.c AND t2.d1000; CBO下优化器模式的选择 通常对于一种功能单一的数据库来讲,在实例级设置一个优化器模式就可以了。 对于OLAP系统,可以把优化器模式设置成all_rows。 对于一些分页操作比较多的网站类数据库,设置成first_rows会更好一些。 --可以通过Hint的方式来讲优化模式转换成FIRST_ROWS SELECT * FROM (SELECT /*+ first_rows(10) */ a.*,ROWNUM rnum FROM (SELECT /*+ first_rows(10) */ ID,NAME FROM t1 ORDER BY ID) a WHERE ROWNUM=10) WHERE ROWNUM=1; 没有绑定变量的SQL 对OLTP系统影响较大。 PL/SQL包 存储过程是经过成功编译后存放在数据库中的代码,执行起来的效率要比程序代码中PL/SQL包的效率高很多, 因为它不再需要做语法和语义的分析。 语法的分析:指的是数据库对代码进行检查,看它是否存在语法上的错误; 语义的分析:是查看语句执行的对象是否存在,比如需要操作的表、列等,以及是否有执行这些操作的权限。 1.2 数据库的设计 通常,可以把业务分为两类: 在线事务处理系统(OLTP) 强调数据库的内存效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作。 在线分析系统(OLAP)或者DSS(决策支持系统) 强调数据分析,强调SQL执行时长,强调I/O,强调分区等。 1.2.1 OLTP数据库 1.用户并发数 2.数据库内存设计 内存数据库,比如Oracle的Times Ten 内存的设计通常是通过调整Oracle和内存相关的初始化参数来实现的。包括SGA的大小(Data Buffer、Shared Pool)、 PGA大小(排序区,Hash区等)。 OLTP系统是一个数据库变化非常频繁、SQL语句提交非常频繁的系统。 对于数据块来说,应尽可能让数据块保存在内存当中。 对于SQL来说,尽可能使用变量绑定技术来达到SQL的重用,减少物理I/O和重复的SQL解析, 能极大地改善数据块的性能。 方法:先给这些参数设定一个经验值,然后通过搭建测试环境对数据块进行测试,通过一些 性能报告(比如AWR或者Staspack报告)作为依据,不断地调整这些参数值,以达到

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档