数据库应用系统论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库应用系统论文
摘要:随着数据库的应用不断扩大,企业级数据库的应用已经成为企业资料存储和查询的重要方式。数据库的性能和设计优化对于数据结构的简化和查询过程的优化具有重
要意义。本文论述了sql数据库优化的重要意义,详细分析了sql数据库优化的策略。
关键词:数据库应用系统;性能;设计;优化
the performance design optimization strategies
of database application system
lin shubin
(agricultural school of zhangzhou
city,zhangzhou363000,china)
abstract:with the expanding database applications,enterprise-class database applications have become an important data storage and query method.database performance and design optimization for the data structure to simplify and optimize the query process is important.this article discusses the importance of sql databases optimization,detailed analysis of the sql database optimization strategy.
keywords:database applications
system;performance;design;
optimization
在一个基于数据库的应用系统的运行过程中,影响系统效率的原因是多方面的,对于目前常用的三层(n层)web
结构应用架构来说,如果系统运行效果不理想,需要判断性能损失来自于操作系统、web层应用系统或者数据库,单独测试以确定瓶颈所在。
一、优化sql数据库的意义
如果脱离web层应用组件测试仍然存在性能问题,需要进一步跟踪数据库应用,判断开销主要来源于sql还是
pl/sql,然后再进一步做性能分析。在数据库方面的原因,可能来源于数据库结构设计是否合理,磁盘空间和表空间的规划是否合理,sga区设置是否合理,数据库参数设置是否合理,以及sql语句的编写质量等。一般来说,数据库的结构设计、空间规划及参数调整、甚至是项目结构调整通常根据系统的需求而定,主要由系统分析员和数据库管理员来共同完成。实际上,不同的sql实现方式之间的效率差异可能会非常大,尤其是在大数据量复杂数据库环境下表现尤为明显,对于千万级别数据量的数据库,执行一条关联几个大表的select语句可能会消耗几十分钟,sql语句的低效直接导
致系统性能低下。高效的sql语句来自于满足sql语句的优化原则,使用充分的连接条件,优化的where子句,以及适当的索引设计。可以利用一些工具,例如执行计划及跟踪文件等,帮助调试sql语句以获得最优效果。下面先了解在构造sql语句时应当遵循的一般优化原则。
二、sql优化策略
(一)在sql语句中,查询所有列时尽量不使用“*”’符号
我们在查询某个表的所有列时,经常使用select*from table这种方式,注意“*”,符号的确是sql语法许可的查询所有列的方式,但是这种查询方式,数据库服务器需要额外地去查询数据字典,把“*”符号转换为表的所有列,再将查询结果返回给用户。这个额外地查询数据字典的动作是会消耗系统时间的,所以建议在写sql语句时,把实际列名写出,即使包含全部列,也就是使用select deptno,dname,loc from dept而不用select*from dept。
(二)编写sql时使用相同的编码风格
sql语句被发送到服务器进程后,要经过语句解析、语句执行以及返回结果几个步骤。在语句解析阶段,首先判断在共享的sga区中是否能找到完全相同的sql语句,如果找到就省去解析步骤,直接使用现有的执行计划,否则再去执
行解析步骤。所谓完全相同是指sql中的字段位置、大小写、空格个数等完全等价,sql中所指的对象必须完全相同。
(三)使用truncate语句替代delete
如果要删除表的全部记录,可以使用不带where子句的delete语句实现。但truncatetable速度更快,并占用更少的系统资源和事务日志资源。delete属于dml语句,每次删除一行,同时在事务日志中记录删除动作,在undosegment 中保存删除的信息,以备操作撤销,而truncate语句只在事务日志中记录所释放的数据页,不保留任何所删除的数据,所以速度比delete更快。执行delete语句后,表所占用的空间是不释放的,而truncate语句释放表所占用的全部空间。所以truncate是执行删除全部表记录时效率比较高的操作。
(四)在确保业务逻辑的前提下及时commlt提交事务
因为业务逻辑的要求,经常需要在事务中执行一系列dml语句,建议在保证业务逻辑一致的前提下,尽可能的多用commit提交事务,这样可以及时结束事务,释放事务所占用的资源,例如回滚段中的空间占用、dml语句造成的锁、重做日志缓存区的空间以及oracle server为维护事务的内部开销。
(五)exists和in
在编写sql语句时,经常需要在子查询中获取一个值列表,在主查询中使用in去比较列数据是否在值列表中,这种方式实现sql比较简单和结构清晰。oracleserver采用的是先对子查询中的表做全表扫描,获得查询结果,然后再执行主查询。而exist则是首先执行主查询,再运行子查询直到找到第一个匹配项。在大多数sql调优的观点中,建议在业务密集的sql当中尽量不采用i_n操作符,而使用exist 替代in,效率会提高。具体在选择in或exist操作时,要根据主表和子表的数据量大小来具体考虑。如果两个表数据量相差悬殊,exist适合外表小而内表大的情况,n适合外表大而内表小的情况。
三、结束语
数据库是数据资料管理、存储与处理的重要技术,数据库系统的性能是决定信息资源使用效率的根本,如果在保证数据查询准确的同时提高数据查询的速度,是影响数据库系统应用效率的重要因素,只有完成性能优化才能保证数据库的高效利用,达到更高的资源应用要求、产生更高的价值。
参考文献:
[1]张君枫.oracle数据库性能调整与优化[j].电脑知识与技术,2008,29
[2]朱建东,翁正平,柳庆武.oracle数据库在属性数据