Oracle9i中的性能优化方法和工具学习(一)

Oracle9i数据库优化的方法和目标

一.性能优化
    1.为了优化Oracle9i数据库的性能,应该
         a.定义问题
             a) 为了找出Oracle数据库系统中的潜在问题,需要定义系统的性能目标,并对最佳性能所需的资源有一定了解。可以通过对当前的统计信息与已确立的最优性能的基线统计信息进行比较来发现潜在的问题。
             b) 在确定系统使用期的峰值以后,可以安装监视工来为那些时期收集性能数据。收集到的基准数据应包含数据库、应用程序、操作系统、磁盘I/O以及网络的统计、
             c) 如果用户报告了一个系统性能问题,需要确定问题所在的范围、问题发生过程的时间帧以及造成问题的组件。
         b.检查应用程序设计
             a)通过检查运行在系统上出现性能问题的应用程序,总能够实现性能的改进。
             b) 要检查应用程序的设计规划,你应该分析模块和数据库中执行的SQL语句的性能。
         c.检查数据库软件和系统
            a) 当对指定资源的需求超出了它本身可用的资源时,会导致必要的会话等待,这时就会出现瓶颈。因此,要优化Oracle服务器性能,首先应该检查Oracle数据库软件中的瓶颈,然后也应该通过制定数据配置的计划来优化恢复次数和数据问。
            b) 在Oracle中,可以使用动态性能视图来得到造成瓶颈的资源相关信息,这里动态性能视图包括V$SYSTEM_EVENT和V$SESSION_WAIT两个视图。当然,你也可以使用STATSPACK报告或者使用Oracle企业管理器来查找瓶颈或者潜在的瓶颈。
            c) 如果已经证实Oracle数据库是正确配置的,但是主机却仍然出现资源缺乏的情况,这时你可以加入处理器内存、磁盘I/O以及网络带宽等机器资源。
    2.为了确保最佳性能,应该在以下阶段中取特定的优化步骤:
        a.开发阶段
            在开发过程中,早期的改进可以防止以后的问题。
            当开发新的系统时,应该首先优化设计,接下来是应用程序,然后是内存。在完成输入/输出(I/O)的优化后,你需要优化争用。最后一步是优化操作系统。
            在完成上述这些优化步骤后,如果仍没有达到优化目标,应该重复上面的过程。             
         b.产品阶段
             通过优化产品系统,可以在问题暴露给用户之前把它们解决。
             首先,需要使用STATSPACK报告或者Oracle企业管理器这样的工具来查找像等待事件这样明显的瓶颈或潜在的瓶颈。
             在确定所有等待事件的原因后,需要解决这些问题,如改变系统全局区(SGA)组件的大小。要检验这些改变是否已经提高了系统的性能,可以再次运行程序,然后使用同一工具来查找第一步中的瓶颈。
             如果仍没有达到优化目标,重复上面的过程。
             
 
二.优化过程
    1.为了避免性能问题,最好的优化方法是仔细地对系统和应用程序进行设计。
         当然,还应该定期的监视数据库以检测哪些影响性能和需要额外实例优化的问题。
    2.可以将优化目标形式化为服务级别协议。如协议可能声明:一个进程需要在一个许可的时间段内完成。
         在Oracle9i中,优化的首要目标是减少用户从查询中接收结果、更新数据库表或者生成报表所花费的时间,可以用来衡量为达到该目标所取得的进展的因素有:响应时间、吞吐量和负荷、恢复时间。
    3.除了提高响应时间以外,还应该尽量减少或者消除等待和瓶颈。另外,还应提高数据库的可用性,例如备份和恢复过程也许会妨碍数据库的可用性。因此,计划在系统使用较低的时期执行备份和恢复任务是非常重要的。
    4.因为过多的内存分页和交换对数据库和操作系统的性能有负面影响,因此内存使用是一个有效的优化方法。内存使用也会影响数据库的命中百分比。由于增长的实例命中百分比是一个可以衡量的优化目标,因此可以使用它作为基线来判断随着时间的流逝,性能是否在提高还是降低。
    5.收集和解释Oracle统计信息是优化过程非常重要的部分,因为这样可以对可测量的性能标准进行评估。当实例出现性能问题时,需要收集那个时期的所有统计信息。这使能够将当前数据与先前取得的基线数据进行比较。但必须保证要比较的统计信息是系统运行同等工作负载时的统计信息。

三.常见的优化问题
    1.常见的优化问题包括:
        a.低劣的会话管理
            低劣的会话管理通常与应用层相关。由于低劣的会话管理会使系统变慢,导致用户不得不等待一段很长的时间。同时它还会导致扩展能力受到限制
        b.低劣的游标使用
            低劣的游标使用通常由程序设计错误产生的,通常会导致扩展能力受到限制。举一个低游标使用的例子:只有Where语句不同的多条SQL语句将导致形成较小的共享池。在这种情况下你应该使用绑定变量。
            或者,如果将CURSOR_SHARING参数设置为SIMILAR或FORCE,相似的SQL语句会共享同一个单独的游标。
        c.低劣的数据库设计
            低劣的数据库设计通常由于过多的规范化所造成的。这种情况会要求你使用多个连接而不是单一的表来生成输出。
    2.在数据库安全性度量和性能之间,是存在一个平衡。一般来说,数据越安全,它就可能运行得越慢。
    3.要在性能优化目标和保护数据库的需要的安全之间进行平衡,首先需要确定所需的性能级别,如数据库系统每秒必须支持事务数量。然后再实施能够满足所需性能级别的保护措施。
    4.负面影响数据库性能的因素主要包括
        a.多控制文件
        b.组中的多个重做日志成员
        c.块检查数量
        d.并发用户和并发事务的数量
        e.频繁检查点
        f.备份数据文件
        g.归档

四.小结
    1.要优系统性能,首先需要设定性能目标,可以使用该性能目标来定义性能问题。然后需要检查数据库软件和系统的瓶颈及其他问题。如果已排除数据库配置原因所导致的问题,而问题还存在,需要检查应用程序设计。
    2.在Oracle9i中,最重要的性能优化步骤是仔细地进行系统和应用程序的设计。优化目标包括提高响应时间以减少用户等待时间、消除瓶颈、提高数据库存的可用性、提高内存和实例命中占比。
    3.常见的优化问题包括:低劣的会话管理、低劣的游标管理和数据库的关系设计。需要在数据库保护的需求和性能优化的目标之间进行平衡。

猜你喜欢

转载自bijian1013.iteye.com/blog/1934870
今日推荐