大型ORACLE数据库优化设计方案
2、使用Connection Pool机制
在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接等待时间。解决的办法就是复用现有的Connection,也就是使用Connection Pool对象机制。
Connection Pool的原理是:IIS+ASP体系中维持了一个连接缓冲池,这样,当下一个用户访问时,直接在连接缓冲池中取得一个数据库连接,而不需重新连接数据库,因此可以大大地提高系统的响应速度。
3、高效地进行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语句调用而带来的网络拥挤。
总之,对所有的性能问题,没有一个统一的解决方法,但ORACLE提供了丰富的选择环境,可以从ORACLE数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发,进行统筹考虑。提高系统性能需要一种系统的整体的方法,在对数据库进行优化时,应对应用程序、I/O子系统和操作系统(OS)进行相应的优化。优化是有目的地更改系统的一个或多个组件,使其满足一个或多个目标的过程。对Oracle来说,优化是进行有目的的调整组件级以改善性能,即增加吞吐量,减少响应时间。如果DBA能从上述九个方面综合考虑优化方案,相信多数ORACLE应用可以做到按最优的方式来存取数据。
参 考 文 献
1、[美]Joe Greene,Advanced Information Systems,Inc.et al. Oracle 8 服务器技术精粹 [M].清华大学出版社,1999
2、瓮正科 王新英 Oracle 8.X For Windows NT 实用教程[M].清华大学出版社,1999
3、Kevin Loney. Oracle8i 数据库管理员手册[M].机械工业出版社,2000
4、周渝斌 基于ORACLE8i的大型数据库技术讲座之一数据库优化篇[J].电脑编程技巧与维护,2002,(4):5—9
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论