基于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 数据库在系统方案设计过程中的优化方案,主要从逻辑设计、主键、外键、物理设计、索引、锁等多个方面着手。   关键词: SQL Server;数据库;优化设计方案   性能调优不是一件简单的事,一般来说需要广泛的经验与知识,不单单是数据库的经验,还要对商业逻辑、系统架构设计、编写应用程序、操作系统、架设网络环境、使用各种监测与监控工具程序、安全与防毒等都有基本的了解,才能在复杂的系统中,找到症结所在。本从先从衡量性能的指?耍?然后对SQL Server数据库设计中的多个方面进行探讨。   1、衡量性能问题的关键指标   1.1 响应时间(ResponseTime)   一般指的是一条SQL语句执行后得出结果耗费的时间。而一般用户使用来说,比如BS结构,响应时间大家一般会认为是访问页面到页面呈现结束,这样的感官时间。这个时间就需要考虑更多的因素。比如网络、浏览器等等。曾经碰到的CASE页面打开速度超慢,但是数据库正常,后来发现是页面中潜入的一个很小的GIF影响了,所以要系统来分析。   而执行SQL语句获得的响应时间是最为纯粹的反馈,也是能够得到准备信息的步骤。在系统跟踪的话,可以用SQLprofile来跟踪响应的内容,分析语句的反馈时间,之后再来详细讲解。   1.2 吞吐量(Thougput)   反映系统到底有多繁忙的指标,了解此指标可以更为清晰的知晓系统的使用状况。性能监视器中可以用SQLBatchRequest/Sec,SQLTransactions/Sec等指标来获取。   1.3 基线(BaseLine)   反映系统日常状况的指标,如果知晓了系统的各种基线值。那么就清楚了底在哪里,顶在哪里。这样才能更容易去判断和解决问题。基线值需要依靠长期经验和数据获取的。   1.4 瓶颈(bottleneck)   系统一旦产生了瓶颈,我们就要去判断瓶颈,而瓶颈一般来说多会有关联性。比如内存不足可能导致IO过高,IO过高也可能导致CPU等待。所以准确的知道瓶颈在哪里,这是需要去判断的。使用性能监视器和分析功能可以快捷的帮助大家分析瓶颈。   数据库性能优化的基本原则就是:通过尽可能少的磁盘访问获得所需要的数据。 数据库的优化应该采取自顶向下的优化原则,从需求设计阶段到数据库运行阶段进行控制。在设计阶段:对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开销达到最小;数据库运行阶段:采取操作系统级、数据库级的一些优化措施来使系统性能最佳。   评价数据库的性能,需要在数据库调节前后比较其评价指标即响应时间和吞吐量之间的权衡、数据库的可用性、数据库的命中率以及内存的使用效率,以此来衡量调节措施的效果和指导调整的方向。   2数据库设计   2.1逻辑设计的规范化   数据库逻辑设计的规范化就是我们一般所说的范式,我们可以这样来简单理解范式:   第一规范:是关于消除重复数据组和保证原子性(数据是自包含和独立)的规范化信息,这是数据库设计的最低要求。 第二规范: 是进一步减少重复数据的出现(不一定是数据组),第二范式有以下两个规则:表必须符合第一范式的规则(规范化是一个类似于堆积模块的过程,如果没有前面的积木就不能堆第三块);每列必须依赖于整个键。大部分情况下,数据库设计都应该达到第二范式。 第三规范:这只是规范化方面的一个相对终点,第三范式有三个规则:表必须符合第二范式;任何列都不能依赖于非键列;不可以有派生的数据。 达到第三范式应该是系统中大部分表的要求,除非一些特殊作用的表。   更高的范式要求这里就不再作介绍了,个人认为,如果全部达到第二范式,大部分达到第三范式,系统会产生较少的列和较多的表,因而减少了数据冗余,也利于性能的提高。   2.2冗余   完全按照规范化设计的系统几乎是不可能的,除非系统特别的小,在规范化设计后,有计划地加入冗余是必要的。   冗余可以是冗余数据库、冗余表或者冗余字段,不同粒度的冗余可以起到不同的作用。   冗余可以是为了编程方便而增加,也可以是为了性能的提高而增加。从性能角度来说,冗余数据库可以分散数据库压力,冗余表可以分散数据量大的表的并发压力,也可以加快特殊查询的速度,冗余字段可以有效减少数据库表的连接,提高效率。   2.3主键的设计   主键是每行的唯一标识符,必须包含唯一的值(因此不能为

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档