基于sql和表设计的oracle数据库开发审计研究

基于sql和表设计的oracle数据库开发审计研究

ID:31427706

大小:111.50 KB

页数:9页

时间:2019-01-09

基于sql和表设计的oracle数据库开发审计研究_第1页
基于sql和表设计的oracle数据库开发审计研究_第2页
基于sql和表设计的oracle数据库开发审计研究_第3页
基于sql和表设计的oracle数据库开发审计研究_第4页
基于sql和表设计的oracle数据库开发审计研究_第5页
资源描述:

《基于sql和表设计的oracle数据库开发审计研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于SQL和表设计的Oracle数据库开发审计研究  摘要:企业级信息系统的数据库表设计和SQL语句优化,对提高信息系统性能和稳定性、可靠性有着重要意义。基于数据库表设计和SQL语句优化技术,提出了一套数据库开发审计标准,根据标准对一个企业级信息系统进行了多次数据库开发审计,发现了系统潜在的性能隐患,采取相应措施,改善了信息系统性能。  关键词:SQL优化;企业级信息系统;表设计;索引优化;数据库开发审计  DOIDOI:10.11907/rjdk.162063  中图分类号:TP391  文献标识码:A文章编号:1672-7800(2016)012-0136-03  0引言  随着

2、计算机技术和网络技术的普及,数据库技术得到了长足发展,成为现代计算机应用与信息系统的核心技术。随着信息系统用户规模和应用范围的不断扩展,数据库性能问题越来越突出,越来越难以优化,需要在信息系统开发及试运行阶段进行库表设计、索引优化和SQL优化来解决系统性能瓶颈,以确保数据库和信息系统稳定、高效运行。  Oracle数据库是当前市场占有率最高、使用范围最广的关系型数据库。对于使用关系型数据库的信息系统而言,SQL语句的好坏直接影响系统性能。例如:某公司Call9center系统坐席登录非常慢,严重影响了日常工作,原因是SQL选错执行计划,走全表扫描导致[1];某房地产开发商ERP系统因

3、为一条全表扫描的SQL语句,导致在业务繁忙时段引起大量的读写等待事件,最终数据库失去响应;某政府系统因为一个SQL语句的索引设计不当导致大量的IO读,引起数据库性能缓慢,最终信息系统失去响应。从上述事例可以看出,一条性能低下的SQL语句就可以拖垮整个系统,甚至导致数据库服务器失去响应或整个数据库挂起。  基于Oracle数据库建设经验,本文研究了数据库的表设计和SQL语句优化,提出了数据库开发审计标准,以指导大型信息系统在开发及试运行阶段的性能优化工作。在实践过程中发现了多处信息系统性能隐患,完善了审计标准。  1数据库性能指标  业界通用的Oracle数据库性能评价指标主要有系统吞

4、吐量、用户平均响应时间、磁盘IO、数据库AWR报告中的AAS/CPU_Count(DBtime/Elapsed)比值4个指标。  (1)系统吞吐量。系统吞吐量指单位时间内数据库完成的SQL语句数目,以每秒的事务量(TPS)表示。  (2)用户平均响应时间。响应时间指用户从提交SQL语句开始到获得结果集的第一行所需要的时间,是应用作出反应的时间,以毫秒或秒表示。  (3)磁盘IO。数据库中发生的每个动作几乎都将产生某种类型的IO活动,该活动可以是逻辑的(在内存中),也可以是物理的(在磁盘上)。通过降低不必要的IO开销,可增加用户任务获得的吞吐量,缩短用户“9响应时间”。其中,磁盘IO操

5、作是数据库性能最重要的方面,是计算机最大的开销。因此,通过减少不必要的磁盘IO,可大大提高系统性能。  (4)AAS/CPU_Count比值。DBTime为某一时段时间数据库使用的CPU时间的总和,平均活动会话AverageActiveSession(AAS)=DBTime/elaspsedtime(历时),通过AAS指标可以衡量数据库的繁忙程度。每一个CPU时间由操作系统分成CPU时间片,CPU时间片以轮询模式分配给线程或进程,计算在最小单位CPU片段内整个系统允许的最大CPU个数。通过比较AAS值与CPU可以衡量数据库繁忙程度。  AAS/CPU_Count≈0非常空闲;  AA

6、S/CPU_Count<=0.5没堵塞;  AAS/CPU_Count≈1部分进程已达100%,应用开始出现缓慢;  AAS/CPU_Count>或>>1出现性能问题或堵死、挂死状态。  2数据库开发审计  基于Oracle数据库的开发审计主要对SQL语句和表设计两个维度进行分析。  2.1SQL语句分析  较大的表使用全表扫描的SQL会导致过多的逻辑读,降低SQL的执行效率,引起latch:cachebufferchain、directpathread等异常等待事件,最终导致数据库主机CPU、IO使用率过高,数据库繁忙。  高耗时的SQL会引起数据库的大部分资源(IO、CPU等)被

7、少数几条SQL占用,引起数据库繁忙,大大降低系统的吞吐量。  SELECT9*语句虽然获取了表中的所有列数据,但实际情况却可能只需要其中一列或少许列,其它列数据对应用功能是多余的,导致数据库采用最大的可能来满足应用需求。如果应用代码能够明确写明编程意图,列出具体要获取哪些字段值,就可以提高数据库的处理能力。如果所需的列在索引里已存在,Oracle就只要查询索引即可返回结果,不需要查询表数据本身,这样可极大提高SQL的执行效率,大幅降低对IO的请求,减少信息

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。