浅议SQL Server数据库应用程序性能优化.docVIP

浅议SQL Server数据库应用程序性能优化.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅议SQL Server数据库应用程序性能优化

浅议SQL Server数据库应用程序性能优化摘要:在开发以SQL Server数据库为中心的应用程序时,为了开发出性能较高的应用程序,应从数据库设计、存储过程、事务和批处理等因素考虑对数据库应用程序性能进行优化。 中图分类号:TP311文献标识码:A 文章编号:1009-9166(2008)10-0088-01 SQL Server是Microsoft研制开发的一个大型Client/Server方式的数据库管理系统。在开发以SQL Server数据库为中心的应用程序时,为开发出性能较高的应用程序,应从数据库设计、存储过程、事务和批处理等因素考虑对数据库应用程序性能的影响。 一、优化SQL Server数据库设计 在基于SQLServer数据库的应用系统中对数据库设计时,通常根据3类范式对数据进行规范化。目的是为了在表中消除冗余数据,也就减少了数据库中的总数据量,相应地提高系统查询性能。在SQLServer中,数据按页存放,每一页含有一个页头和若干数据行,数据行的大小由行中所含字段数目和数据类型确定,行的大小对性能有较大影响,小数据行的好处是每页可存放较多行,这样在高速缓存中能存放更多行,减少从磁盘取数据的I/O时间。在数据行中,有定长列和变长列之分,变长列比定长列开销大。在SQLServer中,含有空值的列作为变长列处理,因此,从性能角度考虑,对每列应指定NOTNULL并建立默认值。数据库对象以页为单位存储于磁盘上,页间以指针构成页链,普通表将页连成一串,对表的分区是为了表创建多个页链,采用表分区技术,可获得以下结果:(1)对查询和拷贝操作,可由多个线路并发操作各自分区,提高执行速度;(2)对插入操作,分区为插入提供多个插入点,减少页互锁竞争,加快事务执行度。在数据库设计时,要合理有效使用销。数据库锁是为解决不同用户同时对数据库中同一数据进行更新操作时可能带来数据不一致性而采用的控制技术,但锁的运用同时降低系统处理效率,若运用不当,甚至发生死锁的。在设计时,须采用以下相应措施:(1)各事务按同一顺序存取共享资源以免产生死锁;(2)使用短事务。需要互斥锁的事务,应避免用户干预事务上锁;(3)减少数据页和索引页中行数量,减少竞争机会,提高系统性能;(4)使用存储过程减少锁冲突。 二、事务和批处理对应用程序性能的影响 适当使用Transact―SQL的主要目的是减少服务器与客户端间传输的数据量。减少传输数据量通常可缩短完成逻辑任务或事务所需时间。长时间运行事务对单个用户可能很好,但扩展到多个用户则表现很差。为支持事务一致性,数据库须自开始在事务内获取对共享资源的锁后,一直将该锁控制到事务提交为止。如其他用户需访问同一资源,须等待。随着个别事务变长,等待锁的队列和其他用户也变长,系统吞吐量随之减少。长事务还增加死锁可能性,当两个或更多用户同时等待互相控制的锁时会发生死锁。可用于缩短事务持续时间的技术包括:(1)在应用程序的要求内尽快提交事务更改。应用程序常将大的批处理作业作为单个工作单元(事务)执行。(2)利用SQL Server语句批处理,是一种一次将多个Transact―SQL语句从客户端发送到SQL Server的方法,减少到服务器的网络往返次数。(3)对重复操作使用参数数组。例如:开放式数据库连接(ODBC)SQLParamOptions函数允许将单个Transact―SQL语句的多个参数集以一个批处理形式发送到服务器,也可减少往返次数。可使用SQL事件探查器监视、筛选和捕获所有从客户端应用程序发送到SQLServer的调用。通常可揭示因对服务器的不必要调用而导致的意外应用程序开销。探查器还显示可将当前单独发送到服务器的语句放入批处理中的机会。3、有效的使用存储过程。如何充分利用网络资源、减少网络通信量是提高应用查询性能的一个重要因素,而存储过程的使用,是减少网络通信量、加快执行速度的必要环节。(1)存储过程的使用。存储过程是个被命名的存储在服务上的Transact―SQL语句集合。在第1次执行时对其进行编译,存储过程驻留在内存中,省去重新分析、重新优化和重新编译。另外,存储过程封装重复工作的一种方法,是一种模块化的程序设计,存储过程支持用户声名的变量,条件执行和其它有用的编程功能。在Client/Server的应用程序中,使用存储过程可以方便地进行程序设计,减少程序员的工作量。(2)存储过程对应用程序性能的影响。所有设计优良的SQLServer应用程序都应使用存储过程。不论是否将应用程序的业务逻辑写入存储过程都应如此。甚至连没有业务逻辑组件的标准Transact―SQL语句,在用参数打包成存储过程后也能获得性能收益。编译进存储过程的Transact―SQL语句在执行时可省去大量处理。存储

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档