【飞秋】SQL Server性能调教系列(4)--Profiler(上)

SQL Server Profiler 一、SQL Server Profiler 介绍 SQL Server Profiler 是一个图形界面和一组系统存储过程 作用: 图形化监视SQLServer查询; 在后台收集查询信息; 分析性能; 诊断像死锁之类的问题; 调试SQL语句 模拟重放SQL Server活动; 也可以使用SQL Profiler捕捉在SQL Server实例上执行活动。这样的活动被称为Profiler跟踪。 ... 阅读详情

一:简介

在处理性能问题是,DBA倾向于关注系统技术层面,如资源队列,资源利用率,系统loading等。而用户只把性能问题认为是等待,他们从业务逻辑层面发出一个请求,等待返回结果,后台数据库就需要去响应这个请求。从用户角度来看,一般认为等待三秒才返回就属于性能问题(特殊的系统除外:比如需要大量的数据操作),他们并不关心系统的数据层,比如有多少个命令在等待处理,CPU利用率,RAM使用率等。在遇到这些问题之后,我们需要找到这个问题,请着手优化,找到合理的解决方案。

 

注:硬件方面的问题请参照系列(2)

SQL Server性能调教系列(2)--Server Performance Monitor(Perfmon)
 

二:理论

要做优化,首先要找出需要优化的部分(如找到效率低的SQL或SP等),引用SQL技术内幕中介绍的优化步骤:

1.分析实例级的等待

2.联系等待的队列

3.确定方案

4.细化到数据库/文件级

5.细化到进程级

6.优化索引/查询

 

三:方法

本章主要介绍Profiler工具来跟踪性能工作负荷。

1. Profiler简介

通过SQL Server—>Tools—>SQL Server Profiler启动

 

General页:跟踪的记录有两种保存方式:保存到文件和保存到表。通常选择保存到文件,因为保存到表会增加较多的额外系统开销。

Events Selection页:能够选择跟踪的事件。更多的跟踪事件请参考MSDN。

 

注:

不要使用GUI跟踪,应该使用T-SQL。因为使用GUI会有两个跟踪,一个把跟踪信息写入目标文件,一个把跟踪信息写入运行的GUI,会增加系统的额外开销。
不要把跟踪直接写入到表,这样会严重影响性能,把文件写到磁盘是最快的方案。
跟踪会产生大量和额外的IO操作。不要把跟踪文件放到包含数据库文件(如数据,日志和tempdb)的磁盘上。
选择事件类的数据列,只跟踪需要的信息。
使用跟踪筛选需要的事件。
2.启动跟踪

2.1  可以先在GUI中设置需要跟踪的事件类,然后在导出脚本(File—>Export-->Script Trace Definition),通常筛选Duration数列大于某些值(比如3000毫秒)的事件来跟踪运行得比较慢的进程。

 

如:导出的脚本如下,这里把trace的脚本整理为一个存储过程,以方便执行.

CREATE PROC [dbo].[sp_perfworkload_trace_start]
  @dbid      AS INT,
  @tracefile AS NVARCHAR(254),
  @traceid   AS INT OUTPUT
AS
-- Create a Queue
DECLARE @rc          AS INT;
DECLARE @maxfilesize AS BIGINT;

SET @maxfilesize = 100;

EXEC @rc = sp_trace_create @traceid OUTPUT, 0, @tracefile, @maxfilesize, NULL
IF (@rc != 0) GOTO error;

-- Client side File and Table cannot be scripted

-- Set the events
DECLARE @on AS BIT;
SET @on = 1;
EXEC sp_trace_setevent @traceid, 10, 15, @on;
EXEC sp_trace_setevent @traceid, 10, 8, @on;
EXEC sp_trace_setevent @traceid, 10, 16, @on;
EXEC sp_trace_setevent @traceid, 10, 48, @on;
EXEC sp_trace_setevent @traceid, 10, 1, @on;
EXEC sp_trace_setevent @traceid, 10, 17, @on;
EXEC sp_trace_setevent @traceid, 10, 10, @on;
EXEC sp_trace_setevent @traceid, 10, 18, @on;
EXEC sp_trace_setevent @traceid, 10, 11, @on;
EXEC sp_trace_setevent @traceid, 10, 12, @on;
EXEC sp_trace_setevent @traceid, 10, 13, @on;
EXEC sp_trace_setevent @traceid, 10, 14, @on;
EXEC sp_trace_setevent @traceid, 45, 8, @on;
EXEC sp_trace_setevent @traceid, 45, 16, @on;
EXEC sp_trace_setevent @traceid, 45, 48, @on;
EXEC sp_trace_setevent @traceid, 45, 1, @on;
EXEC sp_trace_setevent @traceid, 45, 17, @on;
EXEC sp_trace_setevent @traceid, 45, 10, @on;
EXEC sp_trace_setevent @traceid, 45, 18, @on;
EXEC sp_trace_setevent @traceid, 45, 11, @on;
EXEC sp_trace_setevent @traceid, 45, 12, @on;
EXEC sp_trace_setevent @traceid, 45, 13, @on;
EXEC sp_trace_setevent @traceid, 45, 14, @on;
EXEC sp_trace_setevent @traceid, 45, 15, @on;
EXEC sp_trace_setevent @traceid, 41, 15, @on;
EXEC sp_trace_setevent @traceid, 41, 8, @on;
EXEC sp_trace_setevent @traceid, 41, 16, @on;
EXEC sp_trace_setevent @traceid, 41, 48, @on;
EXEC sp_trace_setevent @traceid, 41, 1, @on;
EXEC sp_trace_setevent @traceid, 41, 17, @on;
EXEC sp_trace_setevent @traceid, 41, 10, @on;
EXEC sp_trace_setevent @traceid, 41, 18, @on;
EXEC sp_trace_setevent @traceid, 41, 11, @on;
EXEC sp_trace_setevent @traceid, 41, 12, @on;
EXEC sp_trace_setevent @traceid, 41, 13, @on;
EXEC sp_trace_setevent @traceid, 41, 14, @on;

-- Set the Filters
DECLARE @intfilter AS INT;
DECLARE @bigintfilter AS BIGINT;
-- Application name filter
EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Server Profiler%';
-- Database ID filter
EXEC sp_trace_setfilter @traceid, 3, 0, 0, @dbid;

-- Set the trace status to start
EXEC sp_trace_setstatus @traceid, 1;

-- Print trace id and file name for future references
PRINT 'Trce ID: ' + CAST(@traceid AS VARCHAR(10))
  + ', Trace File: ''' + @tracefile + '''';

GOTO finish;

error:
PRINT 'Error Code: ' + CAST(@rc AS VARCHAR(10));

finish:

2.2 用以下T-SQL代码启动跟踪:

declare @dbid int,@traceid int;
set @dbid=DB_ID()---可以为默认的DB,或者DB_ID('Your_dbname')
EXEC sp_perfworkload_trace_start @dbid,'C:/test/performancetrace_20100802.trc',@traceid output

执行之后会显示出traceid,请记住这个traceid,会用它来停止和关闭追踪。

Trce ID: 2, Trace File: 'C:/test/performancetrace_20100802.trc'

 

2.3 停止和关闭追踪(sp_trace_setstatus,如果traceid是2,则停止和关闭的代码如下):

EXEC sp_trace_setstatus 2,0
EXEC sp_trace_setstatus 2,2 2.4

如果忘记traceid,可以在查询试图sys.traces找到。

 

 

接下篇:

SQL Server性能调教系列(4)--Profiler(下)

关注技术文章飞秋:http://www.freeeim.com/,24小时专业转载。

深入体验SQL Server 2008 Express Profiler:性能监测与优化工具 Sql2008ExpressProfiler是微软SQL Server Express系列数据库的一个性能监控工具。它主要用于捕获和记录数据库活动,对于开发者和数据库管理员来说是诊断、分析和优化SQL Server性能的重要工具。Sql2008ExpressProfiler在2008版的SQL Server中首次引入,并随着后续版本的更新而增强。数据列在事件探查器中提供了关于每个捕获事件的详细信息。为了能够自定义事件数据列,用户可以执行以下步骤:打开事件探查器。 阅读详情

相关推荐

视频播放の调教Play 工具书0.4版

《视频播放の调教Play》是一本关于高清播放器调教的工具书,介绍了 PC 平台常用的解码器硬解方案,作者 @万能的蛐蛐大神,0.4 版更新了 PotPlayer 国际化后的变动,大量排版优化,MPC-BE 部分内容更新等等。想玩转高清,需要播放设备、播放屏幕、高清片源、相关技术知识,其实是个很麻烦折腾的过程,最好的解决办法当然是进电影院,或者付费解决。但目前的情况更诡异,电影引进各种奇葩删减,电视剧更是需要过半年才能引进…所以,还是继续折腾吧。

SQL Server性能调教系列(4)--Profiler(上)

一:简介 在处理性能问题是,DBA倾向于关注系统技术层面,如资源队列,资源利用率,系统loading等。而用户只把性能问题认为是等待,他们从业务逻辑层面发出一个请求,等待返回结果,后台数据库就需要去响应这个请求。从用户角度来看,一般认为等待三秒才返回就属于性能问题(特殊的系统除外:比如需要大量的数据操作),他们并不关心系统的数据层,比如有多少个命令在等待处理,CPU利用率,RAM使用率...

weixin_30782293的博客 224

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

SQL Server中关于跟踪(Trace)那点事

SQL Server中关于跟踪(Trace)那点事 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案。 简单的举几个应用场景: 在线生产库为何突然宕机?数百张数据表为何不翼而飞?刚打好补丁的系统为何屡遭黑手?新添加的信息表为何频频丢失?某张表字段的突然更改,究...

qq_42682533的博客 824

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 564

CSR mascon产品深度解析

GRACE数据产品 mascon产品 质量变化 地球重力场

weixin_43047707的博客 4436

SQL Server优化方法、步骤和技术

使用自顶向下的分析方法,通过分析重要的实例级等待(waits),找出问题领域,通过细化,找出最值得优化的进程。最后通过调整索引和查询,来提高进程性能。必要时,也可以每半小时或一小时搜集一次等待信息,分析一天中等待的分布,找出高峰...

ciwan8376的博客 196

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 672

sql trace profile笔记

 http://technet.microsoft.com/en-us/library/cc293613.aspx   Note:the duration is micro-second, not milli-second   We can create template via Forstored procedure investigation, we just chec

fyifei0558的专栏 918

王道考研计算机网络课件全解析:从零搭建你的知识框架(附B站视频+PPT下载)

本文全面解析王道考研计算机网络课程的核心知识体系,从OSI七层模型到TCP/IP四层架构,详细讲解物理层、数据链路层、网络层、传输层和应用层的关键技术。提供高效学习路径、实战案例和常见误区警示,帮助考生系统构建计算机网络知识框架,适合计算机考研备考者参考学习。

leaf8的博客 566

读懂 ABAP CDS 注解的直接、继承与派生

本文系统梳理了ABAP CDS注解的评估逻辑,重点解析直接注解(Direct)、继承注解(Inherited)和派生注解(Derived)的差异及其在CL_DD_DDL_ANNOTATION_SERVICE中的处理方式。通过视图注解@Metadata.ignorePropagatedAnnotations可调控注解传播行为,避免下游语义影响上层视图。文章还提供了基于标准表的完整示例(包含底层视图、消费视图和ABAP报告程序),帮助开发者在实际系统中验证三层注解的叠加效果与阻断机制。关键点包括:派生注解的数据

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 246

应用事件探查器优化SQL Server系统

 当你的SQL Server数据库系统运行缓慢的时候,你或许多多少少知道可以使用SQL Server Profiler(中文叫SQL事件探查器)工具来进行跟踪和分析。是的,Profiler可以用来捕获发送到SQL Server的所有语句以及语句的执行性能相关数据(如语句的read/writes页面数目,CPU的使用量,以及语句的duration等)以供以后分析。但本文并不介绍如何使用Profile

sunshmcsdn的专栏 764

YOLOv11的物理信息神经网络(PINN):引入物理规律约束目标运动预测

本文介绍了YOLOv11目标检测与PINN物理信息神经网络的融合技术。YOLOv11采用增强特征提取和参数优化架构,在保持实时性的同时提升检测精度。PINN通过将物理方程嵌入损失函数,实现数据高效学习。两者的结合可显著提升运动预测准确性和遮挡处理鲁棒性。文章详细阐述了环境配置、YOLOv11模型验证方法,并提供了基础PINN框架代码实现,展示了物理约束如何通过自动微分整合到神经网络中。该融合技术适用于自动驾驶、无人机导航等需要物理规律建模的视觉感知场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 424

SQL Server性能调教系列(4)--Profiler(下)

接上篇: SQL Server性能调教系列(4)--Profiler(上) 3.分析跟踪记录 在跟踪了一段时间之后,在文件中就会保存有跟踪的数据(包括IO,Duration,CPU,Reads,Writes,RowCounts等计数器),接下来就是把跟踪的数据加载到表并分析这些数据。可以选择在Profile中打开并检查这些跟踪数据,会有些限制,如不能完成太多的操作,大量重复的...

weixin_30596343的博客 1万+

手把手教你学Simulink——基于电机驱动系统的场景实例:轮毂电机在电动汽车中的分布式驱动控制仿真

本文详细介绍了基于MATLAB/Simulink和Simscape Electrical的电动汽车轮毂电机分布式驱动控制系统建模方法。内容包括系统结构设计(轮毂电机、逆变器、控制器等模块)、完整的建模过程(从基础模块导入到车辆动力学建模)、控制器设计与转矩分配策略实现,以及仿真参数设置与结果分析。通过仿真验证了该分布式驱动系统在速度跟踪、转弯性能等方面的优异表现,为电动汽车驱动系统的研究与开发提供了有效的仿真验证平台。文中还提供了相关代码示例和资料推荐,是学习Simulink电机控制系统建模的实用指南。

MHD0815的博客 4915

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用 SQL Server Profiler 跟踪数据库

工具概要 如果我们的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而我们又要对其优化,那该怎么办?首先我们要知道问题出在哪里?如果想知道问题出在哪里,并且找到它,咱们可以借助本文中要讲述的性能检测工具--SQL Server Profiler(处在sql安装文件--性能工具--sql server profiler) SQL Server Pr...

缘☆梦 3万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【转载】SQL Server性能调教系列(4)--Profiler(上)

一:简介 在处理性能问题是,DBA倾向于关注系统技术层面,如资源队列,资源利用率,系统loading等。而用户只把性能问题认为是等待,他们从业务逻辑层面发出一个请求,等待返回结果,后台数据库就需要去响应这个请求。从用户角度来看,一般认为等待三秒才返回就属于性能问题(特殊的系统除

kevindend的专栏 1296

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SQL Server Profiler (SQL跟踪器)的简单使用

一、介绍 SQL Server Profiler,它可以对sql运行情况进行跟踪,从而找出问题所在。 二、使用方法 可以从开始菜单打开 也可以从数据库界面打开; 新建跟踪 文件->新建跟踪 连接服务器,输入地址、账户名、密码 设置跟踪名称(常规选项) 名称可以随意取,如果使用多个跟踪时,需要唯一名字。 选择要跟踪的事件(事件跟踪选项) 设置完成后,单击“运行”按钮; 列选择器的含义: ApplicationName: 创建 SQL Serve...

bcbobo21cn的专栏 3048

SQL Server Profiler 工具的使用

那么如果是牵扯到数据库相关的操作,我们可以利用SSMS自带的分析工具,来查看进来的每一条sql语句的执行时间,以此来定位问题。打开之后需要设置一下跟踪属性,其中常规里,可以设置把跟踪记录导出到文件或者表,如果为了方便仔细分析,可以选择保存到文件,之后停止跟踪的时候,就会生产一个。但是这里有一个问题,这个跟踪的是整个服务里面的所有数据库,如果数据库比较多,或者连接比较活跃的话,那跟踪记录就会不断的刷新,就不容易找到关键信息。文件,之后在SQL Server Profiler在打开这个文件,就可以慢慢分析了。

李公子的博客 2515

SQL Server Profiler概述

In this article, we will describe SQL Server Profiler and how it can be used. In addition, we will mention the tools that are integrated with it- plans about its deprecation, and what are t...

culuo4781的博客 746

运行sql server profiler所需的权限

/********运行Sql Server Profiler所需的权限(performance)*********/ --EG. -- 使用TRACE帐户(Performancetest)跟踪Sql Server事件. -- 创建TRACE登陆帐户(Performancetest),并授予其 ALTER TRACE和VIEW SERVER STATE的权限.  USE Master  C

学无止境 7903

Sql Server Profiler Sql 事件探查器 使用方法

如何进入事件探查器:开始 → 程序 → SQL Server 2008 R2 → Sql Server Profiler,点击打开可视窗口,点击新建事件跟踪,输入数据库用户名和密码。 事件探查器重要列名解释: CPU:事件所使用的 CPU 时间总计(以毫秒为单位); Duration : 持续时间,事件所花费的时间总计,(以毫秒为单位); Reads : 服务器代表事件执行的逻辑磁盘读取数,(以字节为单位); Writes :服务器代表事件执行的物理磁盘写入数,(以...

zhang0000dehai的博客 2203

SQL Server Profiler工具

一、SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询; 在后台收集查询信息; 分析性能; 诊断像死锁之类的问题; 调试T-SQL语句; 模拟重放SQL Server活动; 也可以使用SQL Profiler捕捉在SQL Server实例上执行的活动。这样的活动被称为Profiler跟踪。  ...

做工作不具体化,想问题就会简单化 269

SQL server 2008 R2安装好之后没有SQL server profiler

一些人在安装好SQL server 2008 r2或者从empress升级到enterprise或者开发版之后没有SQL server profiler功能,如果需要加装则应该找到自己的安装文件(部分网上下载的exe安装程序文件无法生成此文件) 进入dos命令,执行 setup.exe /FEATURES=Tools /Q /INDICATEPROGRESS /ACTION=Install...

kaifanggao的博客 9255

SQL Server Profiler使用方法

一、SQL Server Profiler使用方法 1、单击开始--程序--Microsoft SQL Server 2005--性能工具--SQL Server Profiler,如下图:

MSSQL_DBA的专栏 1822
上一篇: 【飞秋】TCP粘包
下一篇: 【飞秋】网络的基础-域名篇
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值