sqlserver性能调优方法论与常用工具

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 早期的文章中,曾经提到过性能调优中的DETECT方法论,这里先简单回顾一下DETECT方法论。Discover the problem :发现问题Explore the conditions:探究原因Track down possible a...

早期的文章中,曾经提到过性能调优中的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系统监视器
  • 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语句(索引和统计信息)



相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 数据可视化 安全
微软SQL Server可视化工具与技巧
微软SQL Server不仅提供了强大的数据库管理功能,还集成了多种可视化工具,帮助用户更直观地理解和管理数据
|
3月前
|
SQL 存储 监控
|
6月前
|
SQL Windows
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
49 4
|
SQL JSON 关系型数据库
「PostgreSQL」PostgreSQL 和SQL SERVER(性能和可伸缩性)
「PostgreSQL」PostgreSQL 和SQL SERVER(性能和可伸缩性)
|
SQL 数据库 Python
Python 数据库Insert语句脚本生成工具(SQL Server)
Python 数据库Insert语句脚本生成工具(SQL Server)
384 0
Python 数据库Insert语句脚本生成工具(SQL Server)
|
数据可视化 jenkins 关系型数据库
docker使用Portainer工具,配置服务模板可快速搭建SQLserver2019服务
docker使用Portainer工具,配置服务模板可快速搭建SQLserver2019服务
675 0
docker使用Portainer工具,配置服务模板可快速搭建SQLserver2019服务
【Sql Server】with as 递归查询的简单使用 以及在视图工具下的使用 注意小事项一
with as 递归查询的简单使用 以及在视图工具下的使用 注意小事项一
263 0
【Sql Server】with as 递归查询的简单使用 以及在视图工具下的使用 注意小事项一
|
SQL 传感器 监控
10款优秀的SQL Server服务器监控工具
服务器是网络中最重要的资源之一,SQL Server的广泛普及使SQL Server监控工具成为长期网络维护的先决条件。使用服务器监控工具跟踪服务器的运行状况可以为你提供解决性能问题所需的信息。
1774 1
10款优秀的SQL Server服务器监控工具
|
SQL 安全 关系型数据库
RDS SQL Server通过配置镜像为高性能模式提高写入性能
RDS SQL Server通过配置镜像为高性能模式提高写入性能
|
SQL 运维 监控
【走进RDS】之SQL Server性能诊断案例分析
数据库性能诊断不仅对其数据库技能要求较高,而且需要大量的前期准备工作,如收集各种性能基线、性能指标和慢SQL日志等,尤其是面对多数据库性能调优时,往往事倍功半。
28623 0
【走进RDS】之SQL Server性能诊断案例分析