科技资讯 SC I EN C E &TE C HN O LO G Y I NF O R MA T IO N 信 息 技 术
数据库作为系统的核心,其设计和应用对系统执行的效率和稳定性具有重大影响。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。本文主要从以下角度分析数据库性能优化技术。
1  ORACLE数据库的系统性能评估参数
D BA应该根据信息系统的类型注意考虑相关的数据库参数。
1.1在线事务处理信息系统(OLTP)
系统有频繁的Insert、Update操作,需要确保数据库的并发性、可靠性和最终用户的速度,考虑以下参数:数据库回滚段是否足够?建立索引、聚集、散列的必要性?系统全局区(SGA)大小是否合适?SQL语句是否高效?
1.2数据仓库系统(Data Warehousing)
主要任务是从O R A C L E的大量数据中进行查询,总结数据之间的相关规律。涉及以下参数:是否采用B*-索引或者bitmap索引?是否采用并行SQL查询?是否采用PL/ SQL函数编写存储过程?是否需要建立并行数据库提高数据库的查询效率?
2  ORACLE数据库优化、参数调整
2.1设计数据结构和应用程序需要注意考虑是否应用O R A C L E数据库的分区功能;哪些频繁访问的数据库表应该建立索引;根据所需要的数据库资源决定应用程序采用Client/Server还是Browser/Web/Database体系结构
2.2应用程序最终将通过SQL语句执行,SQL 语句的执行效率是O RA C LE数据库性能的决定因素
同一功能可以通过不同的S Q L语句来实现,但是不同的SQ L语句执行效率不一样。SQ L语句的调整需要注意以下几点。
(1)尽量使用索引,创建索引可以提高系统的性能。
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,加快数据的检索速度。
第三,加速表和表之间的连接,有利于实现数据的参考完整性。
第四,在使用分组和排序子句进行数据检索时,减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
(2)选择联合查询的联合次序。
程序员首先需要选择要查询的主表,因为主表需要对整个表数据进行扫描,所以主表应该数据量最小。
(3)子查询中尽量用where(NOT)exists 代替IN或NOT IN语句。
(4)尽量将视图查询转换为对数据表的直接查询以下几点。
(5)S HA RE D_P O OL_R E SE R VE D_S IZ E 参数,该参数在SG A共享池中开辟一个连续的内存空间,方便存放大的SQL程序包。
(6)DB MS_SH AR E D_PO OL程序能够将某些频繁使用的存储过程“锁”在SQL区中,方便随时利用,大大提高最终用户的响应时间。
3  服务器内存的调整
在信息系统运行时可以对内存进行优化配置,DB A根据数据库运行状况对数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小进行调整;包括调整程序全局区(PGA区)的大小。值得注意的是,SGA区不能太大,否则会占用操作系统使用的内存,造成虚拟内存的页面交换,影响系统运行。S GA的调整包括以下几点。
(1)共享池:包括共享SQL区和数据字典缓冲区,前者主要用于存放用户SQL命令,后者主要用于存放数据库运行的动态信息。DBA通过执行语句:select (sum(pins -reloads))/sum(pins)"Lib Cache" from v$librarycache;查询共享SQL区的使用率。如果使用率<90%,应该适当增加共享池的大小。通过执行语句:select(sum(gets-getmisses-usage-fixed))/sum(gets)"Row
O R A C L E数据库优化理论探讨
符浩
(重庆医科大学 重庆 400016)
摘 要:Oracle数据库是一种具有高可靠性、高安全性、高兼容性的大型关系数据库,得到广泛应用,要使Oracle数据库满足应用需求,有
效管理和利用数据,较好地为业务服务,对Oracle数据库优化显得尤为重要。
关键词:数据库 优化 ORACLE SQL
中图分类号:TP2文献标识码:A文章编号:1672-3791(2012)04(b)-0032-01
Cache"from v$rowcache;查询数据字典缓
冲区的使用率,同样,如果结果<90%,应该
适当增加共享池的大小。
(2)数据缓冲区。通过语句:S E L E C T
name,value FROM v$sysstat WHERE
name IN('db block gets','consistent gets',
'physical reads'); 查询数据缓冲区的使用
情况。使用命中率=1-(physical reads/(db
block gets+consistent gets))。如果结果<90%,
应该适当增加数据缓冲区的大小。
(3)日志缓冲区。执行语句:select name,
value from v$sysstat where name in ('redo
entries','redo log space requests');查看
日志缓冲区的使用。根据结果可以计算日
志缓冲区的申请失败率:申请失败率=re-
quests/entries,结果如果大于0,说明日志缓
冲区开设过小,应该增加日志缓冲区。
O RA C LE数据库性能恶化表现为响应
时间和等待时间过长。造成恶化的原因可能
是多个因素共同影响,要求DBA具备全面的
专业技术和知识,快速发现影响数据库性能
的原因。同时,可以利用优秀的数据库管理
工具优化数据库性能:包括ORACLE数据库
在线数据字典;操作系统工具;SQL语言跟踪
工具;ORACLE Enterprise Manager(OEM),
图形用户管理界面;EXPLAIN PLAN—SQL
语言优化命令,帮助程序员写出高效的SQL
语言。
总之,应该从实际应用的角度,不断开
发应用较为全面的OR AC LE数据库的优化
技术,争取消耗最低的成本,得到最大的收
益。字符串长度为0
参考文献
[1]魏亚楠,宋义秋.oracle数据库应用系统
的性能优化[J].制造业自动化,2010(8).
[2]王雷,曾蕴波,王璐.Oracle数据库的性
能调整与优化方法探析[J].航天器工
程,2008(6).
[3]钟小权,叶猛.Oracle数据库的SQL语句
优化[J].计算机与现代化,2011(3). . All Rights Reserved.
32

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。