基于SQL Server 的数据库应用系统性能的优化-基础电子_第1页
基于SQL Server 的数据库应用系统性能的优化-基础电子_第2页
基于SQL Server 的数据库应用系统性能的优化-基础电子_第3页
基于SQL Server 的数据库应用系统性能的优化-基础电子_第4页
基于SQL Server 的数据库应用系统性能的优化-基础电子_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑基于SQLServer的数据库应用系统性能的优化-基础电子摘要:SQLServer数据库在实际的运用中,往往会出现数据量过大的情况,如果不采取有效措施,就会导致系统性能不稳定,出现连接超时、长时间等待和阻塞等情况。因此,我们从数据库的设计以及SQL语句等方面入手,论述了SQLServer数据库应用系统性能的优化。

0引言

由于SQLServers数据库管理系统具有较高的数据管理性能,因此被广泛应用于服务器和客户体系结构中。其系统的吞吐量、响应时间以及并行处理能力,对于SQL发生请求之后显示返回结果的速度,以及在屏幕上含有数据时切换不同屏幕的速度等,这些方面都是SQLServer数据库性能的表现。我们在这里主要论述了SQLServer数据库的这些性能要注意的问题以及相关的优化方法。

1优化SQLServer数据库的设计

1.1优化数据库事务

多个SQL语句组成了SQLServer数据库的事务的逻辑单元,数据库服务器执行着事务的控制和处理,应用程序则划分了数据库事务的起点和终点。在使用数据库时,应尽量缩短数据库的事务,事务短了,则其通过SQL语句占用获得的回滚空间和锁就可以得到尽快释放,从而降低SQLServer数据库系统在并发处理时的资源竞争。

1.2优化返回信息量

查询大量数据会大大增加数据服务器的负担,因此用户在进行自定义条件查询过的时候,如果表的数据量过大,则应该要设定一个条件,以避免系统返回过多的信息量,导致DMNS的性能下降。系统返回大量数据会增加网络通信量,从而造成网络的拥挤,而如果客户机的内存不足,返回信息量严重超载,则会造成严重的错误。

1.3优化访问次数

当应用程序要对类似或者相同的数据,例如代码表这些数据进行反复操作的时候,可以从数据库上性将数据检索并到客户机的缓存中,采取数据共享的技术对储存好的数据进行反复使用。或者原数据窗口有事先储存好的数据,可以直接加以利用,而不用再去检索服务器。通过减少对数据库服务器的访问,可以使其性能得到优化。

1.4优化屏幕速度

优化屏幕的速度,就是优化其显示和切换的速度,主要要注意以下几点:(1)减少屏幕窗口的使用功能,如果一个屏幕上有过多功能,则会导致其运行速度减慢;(2)在需要检索较大数量的数据时,利用数据窗口注意要有所限制,限制记录从数据库返回缓冲区的个数,应该在数据窗口即将填满数据的时候让用户看到屏幕并得到其控制权,而不是要等到数据全部都检索出来,之后再进行数据窗口的填充;(3)避免让用户等待空屏,要在显示数据窗口之后再通过服务器检索数据。

1.5优化数据链接库

ADO有着便于使用和远程数据访问的特点,其速度较快,占用的内存少,对磁盘造成的遗留痕迹小,而且其关键功能是支持服务器和客户端的建立以及基于Web的应用程序,通过远程数据的访问,可以将服务器的数据通过来回传输移动到Web网页或者客户端的应用程序中,用户再通过客户端来操作或者更新数据,再把数据传输回服务器。

1.6优化网络负载

网络是服务器和客户端的工作基础,而由于网络的宽带存在限制,往往也会影响到SQLServer数据库系统性能的优化。通过利用存储过程来减少对SQLServer数据库的大量查询,可以避免网络流量过大而造成的网络拥堵和堵塞,从而可以提高SQLServer数据库系统的吞吐量,加快其响应时间。一方面,客户只需传递一些参数来调用存储过程,而不用向SQLServer数据库服务器发送大量语句。而另一方面,通过利用服务器的处理优势来处理数据,改善了原始数据再进行处理的繁琐情况,通过减小结果的集合而实现了网络负载的优化。

1.7善用临时列表

在进行大量数据的统计处理时,客户机的运行速度会随着数据库数量的增加而减慢,当处理表的记录多达上几十万甚至几百万条的时候,运行速度减慢的效果会更加明显。而如果在编制程序时,善于利用临时列表的话,就可以大大的提高系统的运行速度和处理时间,从而减少甚至忽略因处理表记录过多对系统运行处理性能的影响。所谓的临时列表,是系统在运行时存放在临时数据库的文件,这些文件会在系统完成数据处理之后被自动删除。

2优化SQL的语句

2.1充分利用索引,减少全表扫描

优化SQL语句,实质上就是保证正确结果的前提下,通过对索引的充分利用,采用服务器可以识别的语句来进行索引,以减少对服务器的全表扫描并避免返回没有限定条件的信息。

例如下面的两条SQL语句:

语句一:select班级,姓名fromT1where姓名notin(select姓名fromT2);

语句二:select班级,姓名fromT1wherenotexists(select班级FROMT2whereT2.姓名=T1姓名);

在上述的语句一和语句二中,两者的的结果是一样的,但是由于语句一没有使用在T2表上建立的姓名索引,因此SQLServe在执行的时候就会扫描整个T2表。而语句二中的子查询因为使用了联合查询,所以SQLServe在执行的时候就只是扫描T2表的部分数据。通过利用姓名索引,使语句二比语句一的检索效率要高许多,通过语句的优化,也使SQLServe数据库的系统性能得到了优化。同时,还要避免在表达式中使用条件列。例如“where成绩='90‘”以及“where成绩/1000.8”这两个条件列。在这里,SQL的条件语句都有着恰当的索引,但是执行语句的速度却非常的慢,这是因为条件列中“where”字句对列的所有操作结果,都是SQLServe在执行语句时通过对每列的计算的来的,所以SQL要对全表进行扫描。而将上面两个条件列语句改成“where成绩like'90’”和“where成绩80”,则SQLServe执行语句的速度则会明显快很多。

再者,在SQL语句中,还要避免使用不相等或者NULL条件列,例如“where成绩isnull”和“where成绩≠80”,因为这样的话虽然在查询列例有索引,但这个索引却无法被使用。

还有的话,在使用like条件列时,要尽量避免赋值变量或者是以“%”作为开始,因为这种情况下索引也无法被使用,如“where姓名like'%Jam'”和“where班级likevar_班级”.

2.2避免使用in、notin语句

在SQL语句中,要避免用到in、notin的语句,而采用exists、notexists语句的效果要比使用in、notin语句的效果好得多。

2.3慎用联合查询以及查询次序

对于视图的查询,是可以将其分解,变成对数据表的直接数据查询。而在进行数据查询时,程序员首先要查询的往往是主表,而由于主表需要扫描整个表数据,因此应该将主表的数据量控制为的,主表的查询列范围也要比从表的查询列范围小。主表和从表之间的联合要结合数据量的大小以及索引条件来考虑。

3结语

SQLServer数据库系统系能的优化是一个复杂的系统工程,其贯穿了数据库系统的整个生命周期,从系统的开发、到系统的设计、到系统的维护,每个环节和每个步骤都要注意,一点小小的失误都会影响SQLServer数据库系统的终性能。因此要重视对SQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论