PLSQL程序优化和性能分析方法要点.docx

PLSQL程序优化和性能分析方法要点.docx

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编 编号 资料名称 作者 日期 出版单位 1. 前言 1.1 目的 性能测试是测试中比较重要的工作,性能测试应分为压力的测试和性能的测试,其中性 能问题中绝大部分都是由于程序编写的不合理、不规范造成的。本文档说明了程序中常见的 不优化的脚本编写,导致的性能问题,并且在也描述了怎样去跟踪和解决程序上的性能问题 的方法。 在最后一章里面描述了做一个白盒测试工具测试性能问题的设计思想。 1.2 文档说明 本文档只说明 PLSQL 编写的优化问题,不包括 ORACLE 本身的性能优化(内存 SGA、系统参数、表空间等)、操作系统的性能问题和硬件的性能问题。对于 PLSQL 程序优 化方面的内容有很多,本文档列出在我们实际工作中一些常见的情况。本文档难免有不正确 的地方,也需要大家给予指正。 本文档举例说明的问题语句不是实际程序中真正存在的,只是让大家能看起来更容易理 解,但这些语句也不代表在我们程序中其他部分语句不存在这些问题。 举例说明中的语句采用的是社保核心平台的数据字典,在举例描述中没有标明表名和字 段名的含义,还需单独参考。 1.3 词汇表 词汇名称 词汇含义 备注 1.4 参考资料 PLSQL 程序优化和性能测试方法 1 《ORACLE SQL 性能优化系列》 2 3 2. PLSQL 程序优化原则 2.1 导致性能问题的内在原因 导致系统性能出现问题从系统底层分析也就是如下几个原因: CPU 占用率过高,资源争用导致等待 内存使用率过高,内存不足需要磁盘虚拟内存 IO 占用率过高,磁盘访问需要等待 2.2 PLSQL 优化的核心思想 PLSQL 优化实际上就是避免出现“导致性能问题的内在原因”,实际上编写程序,以及 性能问题跟踪应该本着这个核心思想去考虑和解决问题。 ? PLSQL 程序占用 CPU 的情况 系统解析 SQL 语句执行,会消耗 CPU 的使用 运算(计算)会消耗 CPU 的使用 ? PLSQL 程序占用内存的情况 读写数据都需要访问内存 内存不足时,也会使用磁盘 ? PLSQL 程序增大 IO 的情况 读写数据都需要访问磁盘 IO 读取的数据越多,IO 就越大 大家都知道 CPU 现在都很高,计算速度非常快;访问内存的速度也很快;但磁盘的访 问相对前两个相比速度就差的非常大了,因此 PLSQL 性能优化的重点也就是减少 IO 的瓶颈, 换句话说就是尽量减少 IO 的访问。 性能的优先级 CPU-内存-IO,影响性能的因素依次递增。根据上面的分析,PLSQL 优化的核心思想为: 避免过多复杂的 SQL 脚本,减少系统的解析过程 避免过多的无用的计算,例如:死循环 避免浪费内存空间没有必要的 SQL 脚本,导致内存不足 内存中计算和访问速度很快 尽可能的减少磁盘的访问的数据量,该原则是 PLSQL 优化中重要思想。 尽可能的减少磁盘的访问的次数,该原则是 PLSQL 优化中重要思想。 下面的章节具体介绍常见影响性能的 SQL 语句情况。 2.3 ORACLE 优化器 ORACLE 的优化器: 第 2 页 / 共 27 页 PLSQL 程序优化和性能测试方法 a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对 init.ora 文件中 OPTIMIZER_MODE 参数的各种声明,如 RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在 SQL 句级或是会话 (session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行 analyze 命令,以 增加数据库中的对象统计信息(object statistics)的准确性. 如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行 过 analyze 命令有关. 如果 table 已经被 analyze 过, 优化器模式将自动成为 CBO , 反之, 数据库将采用 RULE 形式的优化器. 在缺省情况下,ORACLE 采用 CHOOSE 优化器,  为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用 CHOOSE 优化器,而直接采用基于规则或者基于成本的 优化器. 在 oracle10g 前默认的优化模式是 CHOOSE,10g 默认是 ALL_ROWS,我不建议大家去 改动 ORACLE 的默认优化模式。 2.4 PLSQL 优化 主要说明了在 SQL 编写上和 PLSQL 程序编写上可以优化的地方。 2.4.1 选择最有效率的表名顺序 只在基于规则的优化器 rule 中有效,目前我们 oracle 选择的优化器基本都不选

文档评论(0)

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

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

1亿VIP精品文档

相关文档