大型Oracle数据库的性能分析与优化_第1页
大型Oracle数据库的性能分析与优化_第2页
大型Oracle数据库的性能分析与优化_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大型Oracle数据库的性能分析与优化本页仅作为文档封面,使用时可以删除This document is for reference only-rar21 year.March大型Oracle数据库的性能分析与优化一. 摘要随着网络应用和电子商务的不断发展,各个站点的访问量越来越大,如何使有限的计算 机系统资源为更多的用户服务如何保证用户的响应速度和服务质疑这些问题都属于服务器 性能优化的范畴。二. 关键字Oracle数据库,性能分析,性能优化三. 正文1、优化策略为了保证Oracle数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据 库的优化策略。优化策略一般包括服务器操作系统参

2、数调整、数据库参数调整、网络性能 调整、应用程序SQL语句分析及设计等几个方而。分析评价Oracle数据库性能主要有数据库吞吐量、数据库用户响应时间两项指标。数 据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即:数据库用户响应时间=系统服务时间+用户等待时间因此,获得满意的用户响应时间有两个途径:一是减少系统服务时间,即提高数据库 的吞吐量;二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率。2、数据库性能优化包括如下几个部分:1)凋整数据结构的设汁这一部分在开发信息系统之前完成,程序员需要考虑是否使用Oracle数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。

3、2)凋整应用程序结构设讣这一部分也是在开发信息系统之前完成的。程序员在这一步需要考虑应用程序使用什么样 的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database 的三层体系结构。3) 调整数拯库SQL语句应用程序的执行最终将归结为数据库中的SQL语句执行,因此 SQL语句的执行效率最终决左了 Oracle数拯库的性能。Oracle公司推荐使用Oracle语句优 化器(Oracle Optimizer)和行锁管理器(Row-Level Manager)来调整优化SQL语句。4) 调整服务器内存分配内存分配是在信息系统运行过程中优化配宜的。数

4、据库管理员根 拯数据库的运行状况不仅可以调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲 区和共享池的大小,而且还可以调整程序全局区(PGA区)的大小。5) 调整硬盘I/O这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表 空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。6) 调整操作系统参数例如:运行在Unix操作系统上的Oracle数据库,可以调整Unix数据 缓冲区的大小、每个进程所能使用的内存大小等参数。实际上,上述数据库优化措施之间是相互联系的。Oracle数据库性能恶化的表现基本上 都是用户响应时间比较长,需要用户长时间的等待。而性能恶化的原因却是多

5、种多样的, 有时是多个因素共同造成了性能恶化的结果,这就需要数据库管理员有比较全面的计算机 知识,能够敏感地察觉到影响数据库性能的主要原因所在。3、性能优化工具Oracle数据库常用的数据库性能优化工具有:1) Oracle数据库在线数据字典Oracle在线数据字典能够反映出Oracle的动态运行情况, 对于调整数据库性能是很有帮助的。2) 操作系统工具例如使用Unix操作系统的Vmstat、lostat等命令可以査看到系统级内存 和硬盘I/O的使用情况,这些工具能够帮助管理员弄淸楚系统瓶颈出现在什么地方。3) SQL语言跟踪工具SQL语言跟踪工具可以记录SQL语句的执行情况,管理员可以使用虚

6、 拟表来调整实例,并使用SQL语句跟踪文件调整应用程序性能。SQL语言跟踪工具将结果 输出成一个操作系统4) Oracle Enterprise Manager (OEM )这是一个图形的用户管理界面,用户可以使用它方 便地进行数据库管理而不必记住复杂的Oracle数据库管理的命令。5) SQL语言优化命令使用这个命令可以帮助程序员写出高效的程序。4、系统性能评估1)在线事务处理信息系统(OLTP)这种类型的信息系统一般需要有大量的Insert.Update操作,典型的系统包括民航机票发售系统、银行储蓄系统等。OLTP系统需要保证 数据库的并发性、可靠性和最终用户的速度,这类系统使用的Orac

7、le数据库需主要考虑以 下参数:数据库回滚段是否足够是否需要建立Oracle数据库索引、聚集、散列系统全局区(SGA)大小是否足够SQL语句是否高效2)数据仓库系统(Data Warehousing)这种信息系统的主要任务是从Oracle的海量数据 中进行查询,以得到数据之间的某些规律。5、ORACLE数据库优化设计方案1)数据库优化自由结构OFA数据库的逻借配巻对数据库性能有很大的影响,为此ORACLE公司对表空间设讣提岀了一 种优化结构OFA。使用这种结构进行设计会大大简化物理设计中的数据管理。优化自由结 构OFA,简单地讲就是在数据库中可以髙效自由地分布逻借数据对象,因此首先要对数据库中

8、 的逻辑对象根据他们的使用方式和物理结构对数据库的影响来进行分类,这种分类包括将系 统数据和用户数据分开、一般数据和索引数据分开、低活动表和高活动表分开等等。数据库逻辑设汁的结果应当符合下面的准则:把以同样方式使用的段类型存储在一起; 按照标准使用来设计系统;存在用于例外的分离区域:最小化表空间冲突;将数据字典分 离。2)合理设汁和管理表a. 利用表分区分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文 件里。这样,当对这个表进行査询时,只需要在表分区中进行扫描,而不必进行FTSfFull Table Scan,全表扫描),明显缩短了查询时间,另外处于不同磁盘的分区也

9、将对这个表的 数据传输分散在不同的磁盘I/O, 一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀 地分散开。b. 避免出现行连接和行迁移在建立表时,由于参数pctfree和pctused不正确的设巻,数据块中的数据会出现行链 接和行迁移,也就是同一行的数据不保存在同一的数据块中。如果在进行数拯査询时遇到 了这些数据,那么为了读岀这些数据,磁头必须重新訖位,这样势必会大大降低数据库执 行的速度。因此,在创建表时,就应该充分估计到将来可能岀现的数据变化,正确地设宜 这两个参数,尽量减少数据库中岀现行链接和行迁移。c. 控制碎片碎片(fragmentation)是对一组非邻接的数据库对象的描述。

10、碎片意味着在执行数据库的功能 时要耗费额外的资源(磁盘I/O,磁盘驱动的循环延迟,动态扩展,链接的块等),并浪费 大量磁盘空间。当两个或多个数据对象在相同的表空间中,会发生区间交叉。在动态增长 中,对象的区间之间不再相互邻接。为了消除区间交叉将静态的或只有小增长的表放置在 一个表空间中,而把动态增长的对象分别放在各自的表空间中。在create tablecreate index、create table space' create cluster 时,在 storage 子句中的参数的合理设Jit,可以减 少碎片的产生。d. 别名的使用别名是大型数据库的应用技巧,就是表名、列爼在查询中

11、以一个字母为别名,查询速度 要比建连接表快倍。e. 回滚段的交替使用由于数据库配置对应用表具有相对静止的数据字典和极髙的事务率特点。而且数据库的 系统索引段、数据段也具有相对静止,并发现在应用中最高的负荷是回滚段表空间。耙回 滚段左义为交替引用,这样就达到了循环分配事务对应的回滚段,可以使磁盘负荷很均匀 地分布。3) 索引Index的优化设计a. 管理组织索引索引可以大大加快数据库的查询速度,索引把表中的逻借值映射到安全的RowID,因 此索引能进行快速立位数据的物理地址。但是有些DBA发现,对一个大型表建立的索引, 并不能改善数据查询速度,反而会影响整个数据库的性能。这主要是和SGA的数据管

12、理方 式有关。ORACLE在进行数据块髙速缓存管理时,索引数据比普通数据具有更高的驻留权 限,在进行空间竞争时,ORACLE会先移岀普通数据。对一个建有索引的大型表的查询时, 索引数据可能会用完所有的数据块缓存空间,ORACLE不得不频繁地进行磁盘读写来获取数 据,因此在对一个大型表进行分区之后,可以根据相应的分区建立分区索引。如果对这样 大型表的数据查询比较频繁,或者干脆不建索引。另外,DBA创建索引时,应尽量保证该 索引最可能地被用于where子句中,如果对査询只简单地制肚一个索引,并不一立会加快 速度,因为索引必须指泄一个适合所需的访问路径。b. 聚簇的使用Oracle提供了另一种方法来

13、提高查询速度,就是聚簇(Cluster) o所谓聚簇,简单地 说就是把几个表放在一起,按一泄公共属性混合存放。聚簇根据共同码值将多个表的数据 存储在同一个Oracle块中,这时检索一组Oracle块就同时得到两个表的数据,这样就可以 减少需要存储的Oracle块,从而提高应用程序的性能。4) 使用最优的数据库连接和SQL优化方案a. 使用直接的OLE DB数据库连接方式通过ADO可以使用两种方式连接数据库,一种是传统的ODBC方式,一种是0LE DB方 式。ADO是建立在OLE DB技术上的,为了支持ODBC,必须建立相应的OLEDB到ODBC的 调用转换,而使用直接的0LE DB方式则不需转

14、换,从而提髙处理速度。b. 使用 Connection Pool 机制在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接 等待时间。解决的办法就是复用现有的Connection,也就是使用Connection Pool对象机 制。Connection Pool的原理是:IIS+ASP体系中维持了一个连接缓冲池,这样,当下一个用户 访问时,直接在连接缓冲池中取得一个数据库连接,而不需重新连接数据库,因此可以大 大地提髙系统的响应速度。c. 髙效地进行SQL语句设计通常情况下,可以采用下而的方法优化SQL对数据操作的表现:(1)减少对数据库的查询次数,即减少对系统资源的请

15、求,使用快照和显形图等分布式 数据库对象可以减少对数据库的査询次数。(2)尽量使用相同的或非常类似的SQL语句进行查询,这样不仅充分利用SQL共享池中 的已经分析的语法树,要查询的数据在SGA中命中的可能性也会大大增加。(3)限制动态SQL的使用,虽然动态SQL很好用,但是即使在SQL共享池中有一个完全 相同的査询值,动态SQL也会重新进行语法分析。(4)避免不带任何条件的SQL语句的执行。没有任何条件的SQL语句在执行时,通常要 进行FTS,数掳库先定位一个数据块,然后按顺序依次查找其它数据,对于大型表这将是 一个漫长的过程。(5)如果对有些表中的数据有约束,最好在建表的SQL语句用描述完整

16、性来实现,而不 是用SQL程序中实现。(6)可以通过取消自动提交模式,将SQL语句汇集一组执行后集中提交,程序还可以通 过显式地用COMMIT和ROLLBACL进行提交和回滚该事务。(7)检索大量数据时费时很长,设置行预取数则能改善系统的工作表现,设置一个最大 值,当SQL语句返回行超过该值,数值库暂时停止执行,除非用户发岀新的指令,开始组 织并显示数据,而不是让用户继续等待。四总结Oracle数据库的性能优化调整是一个系统工程,涉及的方而很多。数据库後理员需要综 合运用上而介绍的规律,认真分析Oracle在运行过程当中出现的种问题,以保证Oracle 数据库运行的高效率。还需要指出的是,上而给出的语句只是测得

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论