2022年Oracle数据库性能优化技术 .pdf

上传人:C****o 文档编号:39733806 上传时间:2022-09-07 格式:PDF 页数:5 大小:58.80KB
返回 下载 相关 举报
2022年Oracle数据库性能优化技术 .pdf_第1页
第1页 / 共5页
2022年Oracle数据库性能优化技术 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年Oracle数据库性能优化技术 .pdf》由会员分享,可在线阅读,更多相关《2022年Oracle数据库性能优化技术 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Oracle数据库性能优化技术一.引言随着网络应用和电子商务的不断发展,各个站点的访问量越来越大,数据库规模也随之不断的扩大,数据库系统的性能问题就越来越突出,因此,如何对数据库进行调优至关重要:如何使用有限的计算机系统资源为更多的用户服务?如何保证用户的响应速度和服务质量?这些问题都属于服务器性能优化的范畴。作为全球第一大数据库厂商,Oracle数据库在国内外获得了诸多成功应用,据统计,全球 93%的上市.COM公司、65 家财富全球100 强 企业不约而同地采用Oracle 数据库来开展电子商务。我国很多企业、政府单位及电子商务网站也采用了Oracle作为数据库服务器。Oracle数据库服

2、务器是高度可优化的软件产品,经常性的调整可以优化应用系统的性能,防止出现系统瓶颈。数据库性能优化的基本原则就是:通过尽可能少的磁盘访问获得所需要的数据。要评价数据库的性能,需要在数据库调节前后比较其评价指标:响应时间和吞吐量之间的权衡、数据库的可用性、数据库的命中率以及内存的使用效率,以此来衡量调节措施的效果和指导调整的方向。对 Oracle 数据库进行性能调整时,应当按照一定的顺序进行,因为系统在前面步骤中进行的调整可以避免后面的一些不必要调整或者代价很大的调整。一般来说可以从两个阶段入手:1、设计阶段:对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开

3、销达到最小;2、数据库运行阶段:采取操作系统级、数据库级的一些优化措施来使系统性能最佳二.在系统设计开发阶段调整数据库为了充分利用Oracle数据库的功能特性,在设计信息系统时,数据库设计人员需要根据业务情况(如访问量或客户端数量)和现有资源状况(如数据库服务器的配置)考虑系统结构和数据库的逻辑结构的设计:2.1 调整应用程序结构设计。即应用程序采用的是传统的C/S 两层体系结构,还是B/W/D 三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。2.2 恰当使用分区、索引及存档功能。如果某种业务的数据量增长非常快,可以考虑存放该业务的数据库表是否使用Oracle数据库的分区功能;对

4、于经常访问的数据库表是否需要建立索引;对于经常访问但是当业务流程完成后不再变动的数据可采用放入历史档案的方法来实现应用系统中访问尽可能少的数据量。2.3 恰当编写访问数据的SQL语句。良好的 SQL语句可以被数据库重复使用而减少分析时间;恰当的使用索引可使访问的数据块大大减少从而减少响应时间。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率决定了Oracle 数据库的性能。Oracle 公司推荐使用Oracle语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。2.4 调整硬盘I/O 名师资料总结-精

5、品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -磁盘 I/O 是系统性能的瓶颈,解决好磁盘I/O,可明显提高性能。通过查询V$FILESTAT 可以知道每个物理文件的使用频率(phyrds 表示每个数据文件读的次数,phywrts表示每个数据文件写的次数)SQLSELECT name,phyrds,phywrts FROM v$datafile df,v$filestat fs WHERE df.file#=fs.file#;对于使用频率较高的物理文件,可以采用以下策略:.将 I/O 尽可能平均分配在尽可能多的磁盘上。.为表和索引建立不同的表空间。.将数据文件与重做日志文件分离在不同的

6、磁盘上。.减少不经oracle SERVER 的磁盘 I/O。2.5 确定数据块大小和存储参数。由于数据库的块大小在数据库创建以后就不能在修改(除非重建数据库),因此为了减少数据链接和行迁移,又提高磁盘空间的利用率,在设计数据库时要确定合适的数据块大小和存储参数。通常我们是根据样例数据确定数据块大小,而根据业务现状和未来发展趋势确定存储参数。三.在数据库运行阶段调整数据库数据库运行阶段调整数据库包括两个方面:操作系统级的调整;数据库级的调整。3.1 操作系统级的调整实施操作系统级调整的主要目的是减少内存交换,减少分页,使SGA(System Globle Area)可留驻内存。3.1.1减少内

7、存交换内存交换(swapping)可能会造成很大的内存开销,应将它最小化。运行在Solaris Unix 操作系统上的Oracle 数据库,可利用vmstat或 sar 命令来检查交换,查看到系统级内存和硬盘I/O 的使用情况,调整unix 数据缓冲池的大小、每个进程所能使用的内存大小等参数。vmstat命令它报告 Solaris上的进程、虚拟内存、磁盘、分页和CPU的活动情况。下面命令将显示系统每 5 秒钟做的事情的概要:%vmstat 5 sar命令用于监控交换、分页、磁盘和CPU活动。下面命令用于每10 秒显示 10 次分页活动的概要:%sar-p 10 10 若系统内存交换较多,且需要

8、节省内存,可采用以下措施:1)避免运行不必要的系统daemon进程或应用程序进程;2)在不明显影响数据块命中率的前提下减少数据库缓冲区的数量,以释放一些内存;3)减少 UNIX 文件缓冲区的数量(特别是在使用裸设备时)。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -3.1.2控制分页少量的内存分页不会太显著地影响系统的性能,因为应用程序不必全部放在内存中。但是分页过多将会造成系统性能下降。为了检测过多的分页,可在快速响应或空闲期间运行测量,并与响应迟缓时的测量进行比较。可通过以下办法来解决:使用 vmstat或 sar-p监控分页;安装更多的内存;将一些工作移到另一系

9、统中;配置系统核心使用更少的内存;保持 SGA在单个共享内存段中。3.1.3使 SGA(System Globle Area)留驻内存SGA是对数据库数据进行快速访问的一个系统全局区,若SGA本身需要频繁地进行释放、分配,则不可能达到快速访问数据的目的,因此,要求SGA驻留内存。这时,我们可以重新配置 UNIX核心,调整一些操作系统参数以达到增加共享内存的目的。3.2 数据库级的调整每一个 Oracle实例都是由一组Oracle 后台进程和SGA的一个内存区组成的。这组后台进程会自动的读写数据库的数据文件,因此,数据库性能可以被这些因素所影响:SGA各部分的分配是否合理,使用效率是否正常;I/

10、O 和锁竞争是否较多。3.2.1 SGA的分配及使用效率系统全局区(SGA)是一个分配给ORACLE 包含 ORACLE 数据库实例控制信息的内存段。SGA的大小对系统性能的影响极大,其缺省参数设置只适用于配置很低的计算机,不适应收入系统现有设备的需要。这些参数若不作调整,会对系统资源造成巨大浪费。就收入系统的Alpha 1200而言,SGA的大小以160 兆左右为宜。初始化参数文件中的一些参数对SGA的大小有决定性的影响。参数DB BLOCK BUFFERS(SGA中存储区高速缓存的缓冲区数目),参数SHARED POOL SIZE(分配给共享SQL区的字节数),是SGA大小的主要影响者。D

11、B BLOCK BUFFERS 参数是 SGA大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O。每个缓冲区的大小等于参数DB BLOCK SIZE 的大小。ORACLE 数据库块以字节表示大小。Oracle SGA 区共享池部分由库高速缓存、字典高速缓存及其他一些用户和服务器会话信息组成,共享池是最大的消耗成分。调整SGA区各个结构的大小,可以极大地提高系统的性能。.调整 Library Cache 库高速缓存(Library Cache)中包含私用和共享SQL区和 PL/SQL 区。调整SGA的重要问题是确保库高速缓存足够大,以使ORACLE 能在共享池中保持分

12、析和执行语句,提高语句分析和执行效率,降低资源消耗。通过比较Library Cache的命中率来决定它的大小。查询V$LIBRARYCACHE 数据字典视图(其中,pins 表示高速缓存命中率,reloads表示高速缓存失败)SQL SELECT SUM(pins),SUM(reloads)FROM v$librarycache;如果 sum(reload)/sum(pins)0,说明 Library Cache的命中率比较合适,若大于1,则需要增加共享池(SHARED POOL SIZE)的大小(在初始化参数文件中)。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -.

13、调整数据字典高速缓存(Dictionary Cache)数据字典高速缓存包括了有关数据库的结构、用户、实体信息等。数据字典的命中率对系统有很大的影响。命中率的计算中,getmisses 表示失败次数,gets 表示成功次数。查询 V$ROWCACHE表:SQLSELECT(1-(SUM(getmisses)/(SUM(gets)+SUM(getmisses)*100 FROM v$rowcache;如果该值 90%,说明命中率合适。否则,应增大共享池的大小。.调整数据库缓冲区高速缓存Oracle 在运行期间向数据库高速缓存读写数据,高速缓存命中表示信息已在内存中,高速缓存失败意味着ORACLE

14、 必需进行磁盘I/O。保持高速缓存失败率最小的关键是确保高速缓存的大小。初始化参数DB BLOCK BUFFERS 控制数据库缓冲区高速缓存的大小。可通过查询V$SYSSTAT 命中率,以确定是否应当增加DB BLOCK BUFFERS 的值。SQLSELECT name,value FROM V$SYSSTAT WHERE name IN(dbblock gets,consistent gets,physical reads);通过查询结果命中率=1-physical reads/(dbblock gets+consistent gets)如果命中率 SELECT network,sum(b

15、usy)/sum(busy)+sum(idle)FROM v$dispatcher GROUP BY network;如果某种协议忙的比率超过50%,应增加MTS DISPATCHERS 的值。.减少多线程服务进程竞争首先查询V$SYSSTAT 表判定是否发生多线程服务进程竞争:SQLSELECT DECODE(totalq,0,No request,wait/totalq|hunderths of seconds)FROM v$sysstat WHERE type=common ;如果共享服务进程数量已达到初始化参数文件中MTS MAX SERVERS 指定的最大值,但应用运行时,平均请求等

16、待时间仍持续增长,那么,应加大MTS MAX SERVERS 的值。.减少重做日志缓冲区竞争通过查询V$SYSSTAT 表判定 redo log 文件缓冲区是否足够。SQLSELECT name,value FROM v$sysstat WHERE name=redo log space request;此处 value 的值应接近于0,否则,应增大初始化参数文件的LOG BUFFEQS 的值。.减少回退段竞争回退段对性能也有影响,根据事物大小情况来分配合适的回退段。首先判定回退段的数量能否满足系统运行的需要:查询 V$WAITSTAT 表与 V$SYSSTAT 表SQLSELECT clas

17、s,count FROM v$waitstat WHERE class IN(system undo header,system undo block,undo header ,undo block);SQLSELECT sum(value)FROM v$sysstat WHERE name IN(db block gets,consistent gets);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -如果任何一个class/sum(value)10%,那么考虑增加回退段。回退段的数量一般按如下规律设定:用户数回退段个数n16 4 1632SELECT class,

18、count FROM v$waitstat WHERE class=free list;SQLSELECT sum(value)FROM v$sysstat WHERE name IN(db block gets,consistent gets);如果 class/sum(value)1%,则应增加该表的Free List 的值。另外,在Oracle中,需要采用一些机制来保证数据库对象在使用期间的稳定性和数据的一致性,如使用锁存器(latch)、锁(lock)等。因此争用和这些机制相关的资源会影响数据库的性能。为了减少这种资源竞争,可以通过调整数据库的相关初始化参数(如db_block_lru

19、_latches、dml_locks)来减少资源的争用,优化数据库性能。四.一些常用的性能优化手段和工具Oracle 数据库系统提供了一些工具和脚本来获取数据库的性能指标和优化的方法。如使用 utlbstat.sql和 utlestat.sql脚本获取一段时间内数据库的内存、磁盘I/O 等的情况;使用动态性能视图和数据字典视图来获取命中率和系统等待事件等信息。当然,也可以使用Oracle Enterprise Manager图形化工具来监控。五.结束语Oracle 数据库的性能调整相当重要,但难度也较大。数据库管理员需要综合运用上面介绍的规律,在数据库建立时,就能根据应用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有很大的益处。只有认真分析Oracle 运行过程当中出现的各种性能问题,才能保证Oracle 数据库高效可靠地运行。还需要指出的是:数据库的性能调整是一个系统工程,涉及的方面很多,不能仅仅根据一个时间点的情况就断定数据库运行性能的好与坏。如何有效地进行调整,数据库管理员需要经过反反复复的过程。这些都需要在大量的实践工作中不断地积累经验,从而更好地进行数据库的调优。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁