欢迎来到天天文库
浏览记录
ID:22794859
大小:176.01 KB
页数:34页
时间:2018-10-31
《oracle数据库分析型应用的调优策略》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.调优的目标1.1分析型应用的特点分析型应用、批量处理应用、数据仓库应用说的都是相似的一类应用,它们与联机类应用(OLTP)相比,有如下的区别:OLAP/批量系统/数据仓库OLTP少量用户很多用户大事务小事务每个事务调用大量SQL每个事务调用少量SQL总的时间是关键响应时间是关键集中批量访问数据随机选择性访问数据更新操作较少,插入操作较多更新与插入操作都很频繁加工处理只要最终结果,不关心中间过程要准确保留每一步操作状态1.2分析型应用的调优目标分析型应用系统的调优目标就是在有限的资源环境下,在要求的时间窗口内,能够正确、稳定、及时的完成批量处理任务和业务目标。一个经过优化的分
2、析型应用系统应该具有以下特征:1)能够充分调动利用系统资源,使系统资源的利用率稳定在较高的水平。如果系统资源利用率始终较低,可能是处理逻辑的某处有瓶颈,需要找出结症,采取必要的手段,如改单次循环操作为批量操作、改串行操作为并行操作,甚至调整处理逻辑,以提高系统利用率。2)系统的最大等待时间应该在I/O操作上,且各种资源的使用率比较均衡。如果最大等待时间消耗在其它资源上,而I/O相对空闲,一般需要调整应用,加大对I/O资源的利用。3)每次完成任务的时间窗口比较稳定,且能随着数据量的增加呈线性变化,而不是报错。1.调优的层次和方向1.1系统级调优即对系统资源一级的调优,可由管理DB
3、A或厂商支持完成,通过分析应用运行中的资源使用状况,找出ORACLE资源配置方面的问题,一般是通过调整系统和数据库参数达到优化,如加大OS和ORACLE每次读取的数据块参数等;也能够通过分析ORACLE的等待事件等各种统计信息,找出问题SQL,提出SQL优化建议。系统级调优偶尔能达到较好的效果,但经过初次诊断优化之后,如果仍有性能问题,很难再进一步优化。这一级调优是纯技术的,也是最表层的,完全不需要理解业务。1.2语句级调优当经过最初的系统级诊断找出问题SQL之后,可以在SQL级对应用进行调优。这主要也是利用SQL和PLSQL编程技术,对个别语句进行优化改造,并不动及应用的整体
4、处理逻辑,因此也属于技术级别的调优,不一定要求熟悉业务,通常由管理DBA来完成。这种调优对个别语句的优化效果通常较大,但不一定能够突破应用设计上的瓶颈(如果有),因此如果应用设计逻辑有问题,这一级调优也很难达到最终目标。1.1应用设计级调化一个应用系统经过分析、设计、实现,达到业务目标,最后的系统性能相差巨大,最有可能就是应用程序设计的问题。这一层的调优是对应用处理逻辑进行重新优化设计,需要完全业务需求和加工逻辑。如果系统性能问题的确出现在设计层,经过这一层优化之后,一般能达到戏剧性的性能提高,但难度和限制条件也较大。1.2数据库设计级调优一般数据库设计人员都比较熟悉关系型数据
5、库,纯性能问题一般不大,但数据库设计(包括逻辑模型设计和物理存储设计等)如果出自非常业余的人士,性能问题也可能出现这一层。这一层的调优在技术是可能的,但限制条件和涉及面最大,一般难以实现。另外在创建数据库时,要尤其注意DB_BLOCK_SIZE这个参数,默认值是8K,对分析型应用应该设为16K或32K,这个参数是数据库的最基础参数之一,在数据库创建之后不能再更改。1.3通用的关键几招数据库逻辑模型设计在使用关系结构的基础上以清晰易懂、访问流畅为关键。物理模型设计以结构简洁、含义明确、存取快速、高效利用资源为目标。本招对现有系统调优意义不大。减少使用游标循环,将游标中的处理逻辑提
6、取到SQL语句层通过使用多子查询关联等技术批量完成处理;如果用一条SQL语句完成处理比较困难,可以考虑分成几步,使用临时表存放过程数据,最后生成目标数据,再清空临时表。这种方法能够充分利用和发挥资源优势,通过增大数据吞吐量而提高速度。如果资源有限,满足不了一个大SQL语句的运行,有时还需要将它拆成几个较小的语句分步完成。如果处理逻辑复杂而必须使用游标,尽量将循环中对表的访问转为在游标定义层通过表连接进行访问,以极大程序的减少对表的访问次数。同理,要尽量设法将循环中调用的函数(特别是函数中又访问表)提取到游标定义层完成其功能。在数据量巨大的分析型数据库中,UPDATE速度难以难受
7、,要尽量设法UPDATE语句转为使用INSERT语句完成其处理目的。结合数据分区设计并行处理,充分利用资源获得效率。使用NOLOGGING操作,减少写日志文件的压力。使用BULK批操作(如批量FETCH、INSERT等)替换单条记录操作。调优一个长时间没反应的存储过程,先单独分析调试其中的SQL,找出瓶颈,重点优化。同理,对一个很大很慢的SQL,先分别调试其中的子句,找出结症,重点突破。对具体的SQL调优,尝试多种SQL方法,反复分析其执行计划,注重实验,以实际结果为准。1.调优技术概述从上
此文档下载收益归作者所有