数据库软件开发 软件开发中如何高效使用数据库

摘要:应用软件系统中的存储和数据处理是由数据库系统来完成的,但是随着系统规模的不断扩大,系统性能也会随之出现了瓶颈,那就要求在软件开发中要高效地使用数据库。随着逐渐加快的计算机系统硬件水平,CPU的运算速度、计算机储存量、运行速度等也都有所增加,人们通常会使用更换硬件设备的方式来提升性能,但是同时却也极容易忽视系统内部的问题,而且系统性能的故障大多数来源于应用软件原本的设计。本文结合Oracle数据库,以数据处理过程为切入点进行系统分析,重点阐述在应用软件开发过程中如何编写高效SQL语句。

数据库软件开发 软件开发中如何高效使用数据库
  关键词:优化 Oracle 数据库
  中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2016)11-0147-01
  一个应用软件系统通常与网络系统、应用软件系统、计算机系统以及数据库系统相关联。若要对客户进行良好的服务,就需要上述系统协调一致地进行高效的工作,客户对系统的体验基本上决定了其满意度,包括系统界面友好、操作简易、可靠安全、效率极高等。如果数据库系统的并发数不高,上面叙述的用户体验基本都能够得以实现,但是因为数据库系统并发数连续上升,导致系统的整体性能可能慢慢下降,那么这时数据库系统将为制约应用软件性能做出大量贡献,成为主要控制因素。
  1 数据库系统运作响应时间分析
  当前常用应用软件的体系结构主要有两种,分别是C/S结构和B/S结构,尤其在B/S结构情况下,信息传递过程是这个顺序的:提交操作请求→服务器进行内部处理→访问数据库系统→对数据进行处理→返回处理结果给服务器→整理处理结果并返回给用户。
  用户执行一项操作的响应时长是以上六步执行时长的总和。
  其中网络传输时间约为57.1%,数据库处理时间约为14.2%,应用服务器处理时间占28.5%。其中数据库系统与数据库的系统内部处理时间和应用服务器的网络传输时间才是与数据库系统相关的操作时间。
  2 如何缩短数据库系统操作响应时长
  根据以上分析得出,网络传输和数据库系统内部处理占用了数据库系统响应时长的一大部分,下面我们对以上原因进行具体分析说明。
  2.1 网络传输时间
  批处理方式。传输的数据量和传输次数决定了数据在应用服务器以及数据库系统之间的传输数据的时间,在传输数据的大小明确时,传输的时间就根据其传输次数决定。由于一次数据的传输就包括准备发送数据、接收端将响应数据返回的时间、数据在网络中传输的时长、接收数据的时间。例如向数据库表中不间断的插入10000条记录,我们经常用到一下两种方式,一是逐条插入,二是批量插入。批处理方式能有效减少网络传输的时长,它不仅可以将数据存储在数据库中,也可以在收到的数据中读取数据,以上说明如果数据量过大时,批处理方式能有效提升工作效率。
  2.2 数据库处理
  数据库的必备功能为存储和读取数据信息,而CPU的运算时间和读写数据时间决定了数据库在处理数据时所消耗的时间。在一个SQL语句执行过程中,要通过解析语句、绑定变量、执行和获得数据这四个步骤,这些步骤的完成速度同SQL语句的编写有着很大的关系。用软解析的方法减少数据库分析SQL时长,数据库获取每一个SQL语句时,如果为第一次操作,则应通过解析,检查验证表、验证列存在与否、语法存在与否、验证用户有没有有权限执行此操作,之后能获取可以执行的计划,那么这个过程就是硬解析。硬解析的步骤通过多量递归SQL调用,对资源浪费率较高,数据库为了达到增加效率的目的将SQL语句的分析信息保存在共享的内存结构里;第二次就行这一SQL语句操作时,能够通过共享的内存里获取这一SQL语句的分析信息,这个过程是软解析。软解析比硬解析的步骤少且简便,有效的减少了时间。操作10000次查询,10000次硬解析,又操作10000次查询,只有首次为硬解析,剩下的皆为软解析,统计信息也表明只解析了1次。硬解析10000次,累计时长10.45秒,之后只有1次为硬解析,耗用的时长几乎为0。
  物理读和逻辑读统称为数据库的读操作,逻辑读是指在内存中获得数据,物理读是说在磁盘里读将数据进行读取。在计算机的储存结构里,内存读写速度要比磁盘读写快得多,为了减少读操作响应时长,应尽量的降低读操作次数,如果可以,也要尽量减少磁盘读,读可以减但是不能完全避免。减少读的有效方法可以是用索引结构定位数据。以下两个数据皆来源于同个数据库表中的10000行记录,10000行数据的统计信息是在有索引的情况下读取,表中显示的查询统计信息均也是在有索引的情况下。解析上面的数据,能够了解Fetch行里query列的数据量,在没有索引的时候查询为扫描全表,10000行数据总和就是数据680000块,换句话来讲,想获取有用的数据,需要对每行的68块数据进行扫描;在有索引的情况下,读10000行数据的结果就是30020块数据,1000行数据才扫描了3.002块,首先,我们要找到索引得到数据的ROWID,其次,根据ROWID的读数据行,来使全表扫描的过程发生变化。让缓存的储存量增加,使用缓存读取过的数据,当以后需要时,可以直接从内存里获取数据。数据库的写操作是通过后台进程完成的,系统为了提升性能,大部分会先写日志文件,再按照触发条件对数据文件进行攥写。和SQL攥写有一些关系的是日志文件的写操作,提交语句会使日志文件的写操作直接发生,每操SQL文本的一点点的不一样都会致使硬解析统性能会受频繁的物理写的影响而导致巨幅降低,解决的办法就可以是批量操作后再进行提交操作,例如为表格添加10000数据,可以插入1 000行再提交1次,不用再插入1行就进行1次提交。
  3 结语
  以上观点在解析软件系统里数据库系统的操作响应时长问题的基础上,结合实际论述软件开发步骤里可以优化数据库性能的具体方式。以上方式在实际项目里进行了实施,大幅度的提升了系统性能。
  参考文献
  [1]蒋海鸥,李浩,金海.未公开的Oracle数据库秘密[M].人民邮电出版社,2011.
  [2]吴越胜,张耀辉.Oracle9i数据库性能调整与优化[M].清华大学出版社,2005.
  [3]盖国强,冯春培,叶梁,冯大辉.Oracle数据库性能优化[M].人民邮电出版社,2005.
百度搜索“爱华网”,专业资料、生活学习,尽在爱华网!  

爱华网本文地址 » http://www.aihuau.com/a/389551/54789379406.html

更多阅读

Web开发中最致命的8个小错误 – 码农网 java码农网

本文是码农网原创翻译,转载请看清文末的转载要求,谢谢合作!现在,有越来越多所谓的“教程”来帮助我们提高网站的易用性。本文收集了一些在Web开发中容易出错和被忽略的小问题,并且提供了参考的解决方案,以便于帮助Web开发者更好的完善网站

CodeMeter实现软件云中授权 codemeter是什么

在刚刚结束的2014CodeMeter全球软件加密技术研讨会(武汉站)中,威步CEO Oliver Winzenried先生与来自地理信息、设计类软件、制造业工厂、企业管理软件等行业的软件工程师面对面的交流,就软件加密及软件授权方面进行了热烈讨论。

关于iOS开发中的16进制字符与中文字符 ios 二进制转字符串

前一段时间开发中要求将中文字符转16进制存储,然后再读取16进制字符串转回中文显示。中文字符转16进制其实比较容易,问题出在怎么将字符串转回中文,作为菜鸟只能靠大量的国内外大侠的帖子找答案了~~于是痛苦的旅程开始鸟~关于中文16

声明:《数据库软件开发 软件开发中如何高效使用数据库》为网友时光倒影分享!如侵犯到您的合法权益请联系我们删除