sqlserver性能调优方法论与常用工具
早期的文章中,曾经提到过性能调优中的DETECT方法论,这里先简单回顾一下DETECT方法论。
Discover the problem :发现问题
Explore the conditions:探究原因
Track down possible approaches:提供可能解决的方式
Execute the most likely approach:执行最好可能的解决方式
Check of success :确认是否成功(如果没有成功,反复执行上面的步骤)
Tie up loose ends :完成剩余工作
首先看 Discover ,发现问题
是否已经简洁的描述了整个问题?
用户当前的基线在哪里?
用户期望的是什么?
并不是所以的问题都可以解决的
再看Explore,探究原因
取得证据
SqlProfiler跟踪 /Sql Trace DMV 和 DMF ShowPlan执行计划输出 各种系统的性能计数器 sqlserver特有的性能计数器检查最明显的问题(探究问题先不要深入)
Track down 提供可能的解决方式
第一阶段,建立证明假设的计划
第二阶段,建立解决问题的计划
执行最有可能的解决方案
第一阶段,执行测试计划来证明你的假设
第二阶段,执行解决问题的方案
Check,确认成功与否
第一阶段
你的计划证明了你的假设,还是推翻了他?
第二阶段
你的计划是否改变了现象? 瓶颈是否转移了? 解决方案是否符合你原先的目标?记住:该过程通常是递归反复执行的
Tie up 完成剩余工作,收尾
上面说了那么方法论,虽然很枯燥,但是还是有指导意义的。下面来点实际的知识。
瓶颈分析
瓶颈的定义
瓶颈=需求达到的速率 实际处理量
流程:
决定是卡在哪一个点上 决定在队列中等待的状况 减少输入(需求达到的速率)或是增加同时的处理量 常见瓶颈的监视任务 监视内存占用 监视线程和CPU使用 监视硬盘IO 监视低性能查询 监视存储过程、sql和用户活动 监视当前锁定和用户互动建立性能调优的计划
性能调优是反复的过程,一而再,再而三的循环,一次又一次趋近的修正,要利用文字记录以说明
理出头绪,突显问题并证明 系统的逼近目标 有共识,知道彼此谈论的标地 能够汇总比较 当系统出现的多个瓶颈,找出最关键的,成本最低的先执行调优执行性能调优的计划时,要确定对线上生产环境的影响
方法论--缩小
性能调优中常用的工作
windows事件查看器,主要是查看以下的事件日志
windows应用程序日志 windows系统日志 windows安全日志windows系统监视器能够跟踪:
sql server I/O sql server 内存 sql server用户 sql server 锁SSMS中的活动监视器:
T-SQL工具:
系统存储过程 T-SQL语句 DMF/DMFSql Profiler,跟踪并捕获sqlserver事件
选择需要跟踪的事件 选择跟踪模版 选择需要捕获的数据 有意义对数据进行分类查询分析器
显示查询执行计划 显示服务器跟踪 显示服务器端统计信息 显示客户端统计信息数据库引擎优化顾问
给出建议sql语句(索引和统计信息)sql server 性能调优 资源等待之网络I/O 原文:sql server 性能调优 资源等待之网络I/O 一.概述 与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql server返回数据结果集给客户端的时候,会先将结果集填充到输出缓存里(ouput cache),同时网络层会开始将输出缓存里的数据打包,由客户端接收。
sql server 性能调优 资源等待之内存瓶颈的三种等待类型 原文:sql server 性能调优 资源等待之内存瓶颈的三种等待类型 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),SOS_RESERVEDMEMBLOCKLIST(0x007B),RESOURCE_SEMAPHORE_QUERY_COMPILE(0x011A)。
sqlserver性能调优入门篇 相信不少的朋友,无论是做开发、架构的,还是DBA等,都经常听说“调优”这个词。说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼。
丁浪 关注高并发、分布式系统架构、中间件、领域建模等。 InfoQ特约作者,CSDN博客专家。