下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于sqlserver性能调优的经验之谈

作者:课课家教育     来源: http://www.kokojia.com点击数:694发布时间: 2016-08-12 14:26:54

标签: sqlserver性能调优数据库

Web开发

  调优,简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。“调优”这个字眼,无论你是做开发、架构的,还是DBA的,对此都不感到陌生。调优是很多技术人员关注并为之苦恼的问题,也有很多人以为调优只是个无关重要的问题,因为每个人接触到的项目都不同,每个人做项目时对性能的要求也不一样。

  数据库的重要性在主流的企业级开发和互联网应用中,是不言而喻的,数据库的性能对于整个系统的性能来说同样至关重要。

关于sqlserver性能调优的经验之谈_sqlserver_性能调优_课课家

  sqlserver的性能调优是个很宽广的话题。若要从概念到实践的知识完全掌握透彻,说起来可能至少有几本书这么厚。本文只是一个概念级的总结,希望读者能对此有新的认识,在调优路上有所帮助。

  一、性能调优的目标

  首先搞清楚,性能调优的目标。从最直观、最常见的角度来讲,主要包含如下两点:

  1.优化响应时间

  “优化响应时间”,就是经过调优后,执行查询、更新等操作时,数据库的反应速度更快,花费的时间更少。

  比较常见的,以前执行某条sql查询语句,可能需要3秒钟,加了索引后,1秒钟不到就搞定了。加索引,这也是最典型最“廉价”的优化手段。

  在做“优化响应时间”时,需要了解用户环境、程序、环境、用户和数据等方面的知识。

  2.优化吞吐量

  吞吐量是指对网络、设备、端口、虚电路等,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。说到“吞吐量”,就不得不想到“并发”。“并发”,即“同时处理请求”的能力。要提高数据库的“抗并发”能力,首先就要了解sqlserver访问数据的方式、控制并发访问的(事务隔离级别,锁等)、与底层操作系统的交互,还要了解“多线程、进程”等方面的知识。

  比较常见的手段,通过降低事务隔离级别(一定程度地牺牲数据一致性等),这种“软手段”通常会起到很好的效果。另外,单台DB Server达到一定瓶颈后,可以通过“集群”等方式,实现请求的“负载均衡”,以达到“抗并发”,效果可谓立竿见影。

  二、性能调优的方法论——迭代

  1.基线

  a)基线是用来比较的,是用来计算或者比较的标准;b)以当前系统性能为基准,或以匹配的系统性能为基准;c)指各个组件可以发挥到的最大性能。

  2.成本

  用来升级、更换或提升组件性能基线的时间、金钱、劳力等。

  3.优化

  让每个组件发挥到最大。

  基线的定义,以用户期望值为基础,可能会涉及以下因素:以往的经验,应用程序的基准,业界的标准,以前版本的情况。

  基线的表示方式,包括:每秒完成的批处理(作业),每秒传输量,每秒数据量,磁盘扫描时间等。

  三、影响性能的因素

  影响性能的因素有:

  1.数据库设计(是否符合范式、是否合理归档、分区、分表等);

  2.软件系统(操作系统优化、数据库系统的配置、资源的规划和监控等);

  3.硬件基础架构(设备规格、硬件性能、负载均衡、容灾等);

  4.Sql语句的写法、索引和统计信息、事务和锁、应用程序访问代码(链接过多、频繁开关等)。

  四、性能调优的顺序

  从左往右,从技术难度、成本、实效等方面去考虑。

  DETECT方法

  发现问题、探究原因、提供可能的解决方法、执行最有可能的解决方案、确认是否成功解决(如果没有,重复前面的步骤)、完成其余的工作。

  DETECT方法论中的工作细分起来非常繁琐,如果要了解更多相关内容的,请关注课课家技术论坛的内容更新,将为大家介绍更多有关的sqlserver的知识。

赞(15)
踩(1)
分享到:
华为认证网络工程师 HCIE直播课视频教程