您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页浅谈ORACLE数据库优化设计

浅谈ORACLE数据库优化设计

来源:爱玩科技网
科技信息 浅谈ORACLE数据库优化设计 莱芜职业技术学院信息工程系 闰爱涛 [摘要]本文从ORACLE数据库管理系统的系统结构和工作机理分析,结合数据库设计理论以及ORACLE数据库运行管理,从六 优化设计 个不同方面较全面地阐述了ORACLE数据库的优化设计。 [关键词]ORACLE数据库ORACLE属于大型的DBMS,它有自己一套的数据管理和运行 机制。从ORACLE数据库管理系统的系统结构和工作机理分析,结合 数据库设计理论以及ORACLE数据库运行管理,从以下几个方面总结 了ORACLE数据库的优化设计。 数据库优化自由结构OFA 优化自由结构OFA(Optimal lfexible Architecture),简单地讲就是在 一、果对这样大型表的数据查询比较频繁,或者干脆不建索引。另外,DBA 创建索引时,应尽量保证该索引最可能地被用于where子句中,如果对 查询只简单地制定一个索引,并不一定会加快速度,因为索引必须指定 个适合所需的访问路径。 2、优化设置索引 优化设置的索引,充分利用才能加快数据库的访问速度。ORA— 一数据库中可以高效自由地分布逻辑数据对象。因此首先要对数据库中 的逻辑对象根据他们的使用方式和物理结构对数据库的影响来进行分 类I这种分类包括将系统数据和用户数据分开、一般数据和索引数据分 开、低活动表和高活动表分开等。 数据库逻辑设计的结果应当符合下面的准则: (1)把以同样方式使用的段类型存储在一起; (2)按照标准使用来设计系统; (3)存在用于例外的分离区域; (4)最小化表空间冲突; (5)将数据字典分离。 二、充分利用系统全局区域SGA SGA(System Global Area)是ORACLE数据库的心脏,正确的SGA大 小对数据库的性能至关重要。SGA包括以下几个部分: (1)数据块缓冲区是SGA中的一块高速缓存,占整个数据库大小的 1%一2%,用来存储从数据库中读取的数据块(表、索引、簇等),因此采 用LRU f]east recently used)的方法进行空间管理。 (2)字典缓冲区。该缓冲区内的信息包括用户账号数据、数据文件 名、段名、盘区位置、表说明和权限,它也采用LRU方式管理。 (3)重做日志缓冲区。该缓冲区保存为数据库恢复过程中用于前 滚操作。 (4)SQL共享池。保存执行计划和运行数据库的SQL语句的语法 分析树,也采用LRU算法管理。如果设置过小,语句将被连续不断地再 装入到库缓存,影响系统性能。 对以上这些内存缓冲区的合理设置,可以大大加快数据查询速度, 一个足够大的内存区可以把绝大多数数据存储在内存中,只有那些不 怎么频繁使用的数据,才从磁盘读取,这样就可以大大提高内存区的命 中率。 三、合理设计和管理表 1、利用表分区 分区将数据在物理上分隔开,不同分区的数据可以制定保存在处 于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在 表分区中进行扫描,而不必进行FTS(Full Table Scan,全表扫描),明显缩 短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分 散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/0 竞争均匀地分散开。 2、控制碎片 碎片(fragmentation)是对一组非邻接的数据库对象的描述。碎片意 味着在执行数据库的功能时要耗费额外的资源,并浪费大量磁盘空 间。当两个或多个数据对象在相同的表空间中,会发生区间交叉。在 动态增长中,对象的区间之间不再相互邻接。为了消除区间交叉将静 态的或只有小增长的表放置在一个表空问中,而把动态增长的对象分 别放在各自的表空间中。在createtable、createindex、createtablespaee、 create clusterlt ̄,在storage子句中的参数的合理设置,可以减少碎片的 产生。 四、索引index的优化设计 1、管理组织索引 ORACLE在进行数据块高速缓存管理时,索引数据比普通数据具 有更高的驻留权限,在进行空间竞争时,ORACLE会先移出普通数据。 对一个建有索引的大型表的查询时,索引数据可能会用完所有的数据 块缓存空间,ORACLE不得不频繁地进行磁盘读写来获取数据,因此在 对一个大型表进行分区之后,可以根据相应的分区建立分区索引。如 CLE要使用一个索引,有一些最基本的条件: (1)where子名中的这个字段,必须是复合索引的第一个字段; (2)where子名中的这个字段,不应该参与任何形式的计算。 五、使用最优的数据库连接和SQL优化方案 通常情况下,可以采用下面的方法优化SQL) ̄数据操作的表现: (1)减少对数据库的查询次数,即减少对系统资源的请求,使用快 照和显形图等分布式数据库对象可以减少对数据库的查询次数。 (2)尽量使用相同的或非常类似的SQL语句进行查询,这样不仅充 分利用SQL共享池中的已经分析的语法树,要查询的数据在SGA中命 中的可能性也会大大增加。 (3)动态SQL的使用,虽然动态SQL很好用,但是即使在SQL 共享池中有一个完全相同的查询值,动态SQL也会重新进行语法分析。 (4)避免不带任何条件的SQL语句的执行。没有任何条件的SQL 语句在执行时,通常要进行FTS,数据库先定位一个数据块,然后按顺 序依次查找其它数据,对于大型表这将是一个漫长的过程。 (5)如果对有些表中的数据有约束,最好在建表的SQL语句用描述 完整性来实现,而不是用SQL程序实现。 (6)可以通过取消自动提交模式,将SQL语句汇集一组执行后集中 提交,程序还可以通过显式地用COMMIT和ROLLBACL进行提交和回 滚该事务。 (7)检索大量数据时费时很长,设置行预取数则能改善系统的工作 表现,设置一个最大值,当SQL语句返回行超过该值,数值库暂时停止 执行,除非用户发出新的指令,开始组织并显示数据,而不是让用户继 续等待。 六、充分利用数据的后台处理方案减少网络流量 、 1、合理创建临时表或视图 所谓创建临时表或视图,就是根据需要在数据库基础上创建新表 或视图,对于多表关联后再查询信息的可建新表,对于单表查询的可创 建视图,这样可充分利用数据库的容量大、可扩充性强等特点,所有条 件的判断、数值计算统计均可在数据库服务器后台统一处理后追加到 临时表中,形成数据结果的过程可用数据库的过程或函数来实现。 2、数据库打包技术的充分利用 利用数据库描述语言编写数据库的过程或函数,然后把过程或函 数打成包在数据库后台统一运行包即可。 3、数据复制、快照、视图,远程过程调用技术的运用 数据复制,即将数据一次复制到本地,这样以后的查询就使用本地 数据,但是只适合那些变化不大的数据。使用快照也可以在分布式数 据库之间动态复制数据,定义快照的自动刷新时间或手工刷新,以保证 数据的引用参照完整性。调用远程过程也会大大减少因频繁的SQL语 句调用而带来的网络拥挤。 结束语 总之,优化是进行有目的的调整组件以及改善性能,即增加吞吐 量,减少响应时间。如果DBA能从上述六个方面综合考虑优化,相信 多数ORACLE应用运行可以更加高效。 参考文献 [1]格林威尔著.oracle精髓[M].龚波等译机械工业出版社,20(}9.1 [2]谭怀远著.Oraclel0g性能分析与优化思路[M].电子工业出版 社.2010.8 [3]盖国强著.Oracle数据库性能优化[M].人民邮电出版社,2005.6 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务