社区编辑申请
注册/登录
SQL Server性能调优方法论与常用工具
数据库 SQL Server
说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼。SQL Server的性能调优,是个很宽广的话题。本文简要介绍一个SQL Server性能调优方法论,并为大家介绍几款常用工具。

【编者的话】

说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼。SQL Server的性能调优,是个很宽广的话题。本文简要介绍一个SQL Server性能调优方法论,并为大家介绍几款常用工具。

早期的文章中,曾经提到过性能调优中的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 完成剩余工作,收尾

  • 性能调优是否达会有无法预计的边际效应?
  • 所做的修改是否真正解决了问题,会不会短时间又碰到相同问题?
  • 还需要做哪些跟踪的工作?

上面说了那么方法论,虽然很枯燥,但是还是有指导意义的。下面来点实际的知识。

#p#

瓶颈分析

瓶颈的定义

瓶颈=需求达到的速率>实际处理量

流程:

  • 决定是卡在哪一个点上
  • 决定在队列中等待的状况
  • 减少输入(需求达到的速率)或是增加同时的处理量
  • 决定收益
  • 决定成本

常见瓶颈的监视任务

  • 监视内存占用
  • 监视线程和CPU使用
  • 监视硬盘IO
  • 监视低性能查询
  • 监视存储过程、sql和用户活动
  • 监视当前锁定和用户互动

建立性能调优的计划

性能调优是反复的过程,一而再,再而三的循环,一次又一次趋近的修正,要利用文字记录以说明

  • 理出头绪,突显问题并证明
  • 系统的逼近目标
  • 有共识,知道彼此谈论的标地
  • 能够汇总比较
  • 当系统出现的多个瓶颈,找出最关键的,成本***的先执行调优

执行性能调优的计划时,要确定对线上生产环境的影响

方法论--缩小

 

性能调优中常用的工作

  • windows事件查看器
  • windows系统监视器
  • SSMS中的当前活动窗口
  • T-SQL工具
  • Sql Profiler
  • 查询分析器
  • 数据库引擎优化顾问

windows事件查看器,主要是查看以下的事件日志

  • windows应用程序日志
  • windows系统日志
  • windows安全日志

windows系统监视器能够跟踪:

  • sql server I/O
  • sql server 内存
  • sql server用户
  • sql server 锁
  • 复制活动

SSMS中的活动监视器:

  • 活动用户任务
  • 资源等待
  • 数据文件I/O
  • 耗费大量资源的查询

T-SQL工具:

  • 系统存储过程
  • 全局变量
  • T-SQL语句
  • DBCC
  • 跟踪标记
  • DMF/DMF

Sql Profiler,跟踪并捕获sqlserver事件

  • 选择需要跟踪的事件
  • 选择跟踪模版
  • 选择需要捕获的数据
  • 有意义对数据进行分类

查询分析器

  • 显示查询执行计划
  • 显示服务器跟踪
  • 显示服务器端统计信息
  • 显示客户端统计信息

数据库引擎优化顾问

  • 分析瓶颈
  • 给出建议sql语句(索引和统计信息)

博文出处:http://blog.csdn.net/dinglang_2009/article/details/46480859

责任编辑:Ophira 来源: 丁码农的博客
相关推荐

2022-06-05 21:09:47

Python办公自动化

2022-04-19 14:41:29

Oracle数据库SQL

2022-03-02 11:37:57

参数性能调优

2022-05-10 10:02:51

2022-05-30 11:10:04

数据库MySQL系统

2022-05-23 07:48:10

zabbix监控CentOS7

2022-06-15 11:51:14

Vue3开发避坑

2022-06-29 10:16:25

数据库SQL

2022-05-26 10:19:59

k6性能测试

2022-06-15 08:25:07

Python天气数据可视化分析

2022-06-24 10:16:59

Python精选库

2022-05-11 09:02:27

Python数据库Excel

2022-06-29 09:43:14

SQL优化数据库

2022-06-30 14:23:56

机器学习工具算法

2022-06-28 22:13:33

Polars数据处理与分析

2022-06-16 15:42:16

攻击面管理ASM

2022-05-13 10:24:44

WineWindowsLinux

2022-06-27 08:07:13

Go语言互斥锁

2022-07-01 17:19:33

网络安全零信任

2022-07-01 18:24:36

勒索软件病毒网络攻击

同话题下的热门内容

提高分层 SQL 结构的性能

编辑推荐

SQL Server 2016最值得关注的10大新特性SQL编程之高级查询及注意事项SQL Server性能调优方法论与常用工具【SQL Server 2016动态数据屏蔽入门】Azure SQL 数据库V12版的动态数据屏蔽【SQL Server 2016动态数据屏蔽入门】定义屏蔽
我收藏的内容
点赞
收藏

51CTO技术栈公众号