sqlserver性能调优第一步
相信不少的朋友,无论是做开发、架构的,还是DBA等,都经常听说“调优”这个词。说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼,不知道如何入手。当然,也有很多人对此不屑一顾,因为并不是每个人做的项目都对性能要求很高。
在主流的企业级开发和互联网应用中,数据库的重要性是不言而喻的,而数据库的性能对于整个系统的性能而言也是至关重要的,这里无庸赘述。
sqlserver的性能调优,其实是个很宽广的话题。坦白讲,想从概念到实践的完全讲清楚并掌握透彻,可能至少需要几本书的内容。本文只是一个最基本的概念总结,希望读者能对此有新的认识,在调优路上有所帮助。如果感兴趣的朋友很多,后续可能会分享一些实战经验和技巧。
这里提醒大家一句:不要轻易相信网上流传的那些“sql优化金句”、"sql优化偏方",自己多实践几遍,才是硬道理。
首先搞清楚,性能调优的目标
从最直观,最常见的角度来讲,主要包含如下两点:
优化响应时间
何为“优化响应时间” 呢?说的通俗点,就是经过调优后,执行查询、更新等操作的时候,数据库的反应速度更快,花费的时间更少。
比较常见的,以前执行某条sql查询语句,可能需要3秒钟,加了索引后,1秒钟不到就搞定了。加索引,这也是最典型最"廉价"的优化手段。
在做“优化响应时间”时,需要了解:用户环境,程序,环境,用户和数据等方面的知识。
优化吞吐量
说起“吞吐量”,那就要想到“并发”了。其实就是“同时处理请求”的能力。如何提高数据库"抗并发"的能力呢?首先要了解sqlserver是如何访问数据的,如何控制并发访问的(事务隔离级别,锁等),如何与底层操作系统进行交互的,还要了解“多线程、进程”等方面的知识。
比较常见的手段,通过降低事务隔离级别(一定程度地牺牲数据一致性等),这种“软手段”通常会起到很好的效果。其次,单台DB Server达到一定瓶颈后,可以通过“集群”等手段,实现读写请求的“负载均衡”,来达到“抗并发”的目的(降低单机的QPS和TPS),效果也是立竿见影的。
性能调优的方法论--迭代

基线
通俗点讲,就是用来计算或者比较的标准。通常以当前系统性能为基准,或者以匹配系统性能为基准。指各个组件发挥到最大。
成本
用来升级,更换等提升组件性能时的时间,金钱,劳力等等。
基线的定义,以用户期望值为基础,可能会涉及以下因素
以往的经验,应用程序的基准,业界的标准,以前版本的情况
基线的表示方式,包括:每秒完成的批处理(作业),每秒传输量,每秒数据量,磁盘扫描时间等等
分析影响性能的因素:
数据库设计(是否复合范式,是否合理归档、分区、分表等)
软件系统 (操作系统优化,数据库系统的配置,资源的规划和监控等)
硬件基础架构 (设备规格,硬件性能,负载均衡,容灾等)
Sql语句的写法、索引和统计信息,事务和锁,应用程序访问代码(连接过多、频繁开关等)
性能调优的顺序:

DETECT 方法
发现问题、探究原因、提供可能的解决方法、执行最有可能的解决方案、确认是否成功解决(如果没有,重复前面的步骤)、完成其余的工作
DETECT方法论 中的这些工作细分起来,会有很多,这里暂时不做过多描述。具体调优的步骤、性能调优工具的使用,有机会再分享。
本文其实是笔者3年前所写,难免有误,请谅解!
sqlserver性能调优第一步的更多相关文章
- linux系统性能调优第一步——性能分析(vmstat)
linux系统性能调优第一步--性能分析(vmstat) 分类: LINUX 性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对linux性能分析工具vmstat的用法和实践进行详细介 ...
- [Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析
本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...
- sqlserver性能调优中的逻辑读,物理读,预读是什么意思
表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...
- SQLServer性能调优3之索引(Index)的维护
前言 前一篇的文章介绍了通过建立索引来提高数据库的查询性能,这其实只是个开始.后续如果缺少适当的维护,你先前建立的索引甚至会成为拖累,成为数据库性能的下降的帮凶. 查找碎片 消除碎片可能是索引维护最常 ...
- SQLSERVER性能调优小技巧
平时做个记录,在工作过程中针对大数据查询的一些小技巧 -----------SELECT------------- 1.必要的冗余字段,减少关联查询 2.关键查询字段必须加索引 否则百万级以上你就别想 ...
- Spring / Hibernate 应用性能调优
来源:ImportNew - 陈晓舜 对大部分典型的Spring/Hibernate企业应用来说,应用的性能大部分由持久层的性能决定. 这篇文章会重温一下怎么去确认我们的应用是否是”数据库依赖(dat ...
- (转)SQL Server 性能调优(cpu)
摘自:http://www.cnblogs.com/Amaranthus/archive/2012/03/07/2383551.html 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu ...
- [转]SQL Server 性能调优(cpu)
研究cpu压力工具 perfom SQL跟踪 性能视图 cpu相关的wait event Signal wait time SOS_SCHEDULER_YIELD等待 CXPACKET等待 CME ...
- sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)
一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU, 内存,锁等,不管从哪个维度去解决,都能达到调优的效 ...
随机推荐
- JavaScript css-dom
HTML负责结构层,网页的结构层由HTML或者XHTML之类的标记语言负责构建 CSS负责表示层,描述页面内容应该如何呈现. JavaScript负责行为层,负责内容应该如何响应事件这一问题. 能利用 ...
- [大数据之Sqoop] —— Sqoop初探
Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中. Sqoop也是基于Mapreduce来做的数据导入. 关于 ...
- hbase 1.1.7在centor6.5安装过程
1.自己安装的最新版一直没成功,换成了1.1.7稳定版的.中间遇到的问题记录下 1) jdk 用的1.7版本的,安装过程省略. 2)下载hbase zip包:https://mirrors.tuna ...
- Spring学习记录(二)---容器和bean属性配置
下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...
- jsp登入oracle
<body> <% Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=null; ...
- xcode常见错误处理
问题:xcode 7编译错误:bitcode is not supported on versions of iOS prior to 6.0 解决:Build Options | Enable Bi ...
- HTTP的RST包与WinHttp延迟关闭TCP连接
一.RST包也常见于断开TCP连接 几个月前用wireshark抓HTTP包发现有的网络通信在结束的时候没有使用四次握手,而是直接使用RST包.如: 在TCP协议中RST表示复位,用来异常的关闭连接 ...
- 启动第一个 KVM 虚机 - 每天5分钟玩转 OpenStack(4)
本节演示如何使用 virt-manager 启动 KVM 虚机. 首先通过命令 virt-manager 启动图形界面 # virt-manager 点上面的图标创建虚机 给虚机命名为 kvm1,这里 ...
- 如何做优化,UITabelView才能更加顺滑 (转载)
这篇文章是前两周@叶孤城叶大在微信群里面的分享,一直到这两天才翻出来研究.很多实用的东西,不过由于水平有限,有些地方没能翻译好,还请大家指正. 我已经在iOS这个最好的移动平台上有几年的开发经验了.在 ...
- machine learning基础与实践系列
由于研究工作的需要,最近在看机器学习的一些基本的算法.选用的书是周志华的西瓜书--(<机器学习>周志华著)和<机器学习实战>,视频的话在看Coursera上Andrew Ng的 ...