sqlServer 检测慢 sql
部署监控:
部署慢SQL与死锁跟踪
Skip to end of metadata
仅SQL Server 2012及以上版本可用.
执行前请确保路径正确!
慢SQL定义:执行时间超过0.5秒即定义为慢SQL,会被捕获。
SSMS中新建查询窗口,将下面代码贴上后执行。
该代码会新建一个[YX_Monitor]库,库中包含[DeadlockDetail]、[SlowSqlDetail]、[SlowSqlReadLog]、[BlockDetail]四个表
DeadlockDetail:死锁明细记录数据,可查看死锁相关信息。
SlowSqlDetail:慢SQL明细数据,可查看所有慢SQL的执行情况。
SlowSqlReadLog:监控读取记录表,仅用于监控识别数据读取。
BlockDetail:记录阻塞信息。
用前必读:
脚本初始部分有一段注释,这个注释中的内容是通过打开SQL Server的CMD调用开关,调用CMD命令来创建保存跟踪文件的文件夹。此命令通常用于我们无法远程上服务器本机创建文件夹路径时使用。
如果需要使用,请在打开开关时注意[show advanced options] 与[xp_cmdshell]开关的状态,0为关闭,1为开启。使用后请恢复原位。
-----------------------------------------------------------------------------------------
------------执行前请确保路径 D:\TraceFile 存在,如要更改路径请先更改后再执行------------
-----------------------------------------------------------------------------------------
/***
如不能远程到服务器,使用xp_cmdshell创建文件夹路径
-- 开启
exec sp_configure 'show advanced options',1
go
reconfigure with override
go
exec sp_configure 'xp_cmdshell',1
go
reconfigure with override
goexec sys.xp_cmdshell 'dir D:\TraceFile' --查看文件夹
exec sys.xp_cmdshell 'mkdir D:\TraceFile' --新建文件夹
exec sys.xp_cmdshell 'rd D:\TraceFile' --删除文件夹--关闭
exec sp_configure 'xp_cmdshell',0
go
reconfigure with override
go
exec sp_configure 'show advanced options',0
go
reconfigure with override
go***/
----0.阻塞阈值设定
exec sp_configure 'show advanced options',1
reconfigure with override
go
exec sp_configure 'xp_cmdshell',1
reconfigure with override
go
EXEC sys.sp_configure N'blocked process threshold (s)', N'5'
reconfigure with override
GO
exec sp_configure 'xp_cmdshell',0
reconfigure with override
go
exec sp_configure 'show advanced options',0
reconfigure with override
go----1.建库
use master
go
if(select name from sys.databases where name='YX_Monitor') is null
beginCREATE DATABASE YX_MonitorALTER DATABASE [YX_Monitor] MODIFY FILE ( NAME = N'YX_Monitor', SIZE = 65536KB , FILEGROWTH = 65536KB )ALTER DATABASE [YX_Monitor] MODIFY FILE ( NAME = N'YX_Monitor_log', SIZE = 65536KB , FILEGROWTH = 65536KB )
end
go----2.建表
use YX_Monitor
goif object_id('YX_Monitor.dbo.SlowSqlReadLog') is null
BEGINCREATE TABLE [dbo].[SlowSqlReadLog]([TransactionNumber] [bigint] IDENTITY(1,1) NOT NULL,[LogServer] [nvarchar](100) NULL,[LogTime] [datetime] NULL CONSTRAINT [DF_SlowSqlReadLog_LogTime] DEFAULT (getdate()),[Last_Event_Time] [datetime2](7) NULL,CONSTRAINT [PK_SlowSqlReadLog] PRIMARY KEY CLUSTERED([TransactionNumber] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
endif object_id('YX_Monitor.dbo.SlowSqlDetail') is null
BEGINCREATE TABLE [dbo].[SlowSqlDetail]([TransactionNumber] [bigint] NULL,[LogServer] [nvarchar](100) NULL,[EventTime] [datetime2](7) NULL,[EventName] [nvarchar](128) NULL,[statement] [nvarchar](max) NULL,[Sql_Text] [nvarchar](max) NULL,[Cpu] [bigint] NULL,[Logical_Reads] [bigint] NULL,[Physical_reads] [bigint] NULL,[Writes] [bigint] NULL,[Duration_ms] [bigint] NULL,[username] [nvarchar](128) NULL,[DatabaseName] [nvarchar](128) NULL,[ClientHostName] [nvarchar](128) NULL,[ClientAppName] [nvarchar](128) NULL,[SessionId] [int] NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]create clustered index CIX_SlowSqlDetail_TransactionNumber on SlowSqlDetail(TransactionNumber,EventTime)
endif object_id('yx_monitor.dbo.DeadlockDetail') is null
beginCREATE TABLE [dbo].[DeadlockDetail]([EventTime] [datetime2](7) NULL,[LogServer] [varchar](30) NULL,[InputBuffer] [nvarchar](max) NULL,[lockMode] [varchar](10) NULL,[spid] [int] NULL,[hostname] [varchar](50) NULL,[clientapp] [varchar](100) NULL,[transactionname] [varchar](50) NULL,[status] [varchar](20) NULL,[waitresource] [varchar](200) NULL)create clustered index CIX_DeadlockDetail_EventTime on DeadlockDetail([EventTime],[LogServer])
endif object_id('YX_Monitor.dbo.BlockedDetail') is null
BEGINcreate table BlockedDetail(EventTime datetime2,LogServer varchar(30),SPID int,Process_Type varchar(10),[Status] varchar(20),BlockedTime_ms bigint,LockMode varchar(10),WaitResource varchar(100),InputBuffer nvarchar(max),ClientApp varchar(100),HostName varchar(50))create clustered index CIX_BlockedDetail_EventTime on BlockedDetail(EventTime)
endgo----3.扩展事件慢SQL会话
DECLARE @sessionName NVARCHAR(100),@createAndBegin BIT,@fileLocation NVARCHAR(100),@sql NVARCHAR(max),@cpuFilter NVARCHAR(100),@durationFilter_s decimal(4,2),@durationFilter_us NVARCHAR(100),@maxSizeMB NVARCHAR(10),@rolloverNum NVARCHAR(10),@rpc_completed TINYINT,@sp_statement_completed TINYINT,@sql_batch_completed TINYINT,@sql_statement_completed TINYINTSELECT @sessionName=N'DB_SlowSql',@fileLocation=N'D:\TraceFile\'+@sessionName+'.xel',@cpuFilter=1000,@durationFilter_s=0.5,@maxSizeMB=3,@rolloverNum=1,@createAndBegin=1,@rpc_completed=1,@sp_statement_completed=0,@sql_batch_completed=1,@sql_statement_completed=0,@durationFilter_us=cast(@durationFilter_s*1000*1000 as int)IF(@rpc_completed+@sp_statement_completed+@sql_batch_completed+@sql_statement_completed)=0
BEGINRAISERROR('至少选择一种跟踪事件!',16,3)RETURN
ENDIF exists(SELECT * FROM sys.server_event_sessions WHERE name=@SessionName)
BEGINRAISERROR('警告:扩展事件会话 %s 已存在,无法创建重命名会话!该步骤已跳过!',10,1,@SessionName)RETURN
END
ELSE
BEGINSET @sql=N'
CREATE EVENT SESSION ['+@SessionName+'] ON SERVER
'IF(@rpc_completed=1)
BEGINSET @sql=@sql+'ADD EVENT sqlserver.rpc_completed(ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)WHERE ([cpu_time]>='+@cpuFilter+' and duration>='+@durationFilter_us+')),'
END
IF(@sp_statement_completed=1)
BEGINSET @sql=@sql+'ADD EVENT sqlserver.sp_statement_completed(ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)WHERE ([cpu_time]>='+@cpuFilter+' and duration>='+@durationFilter_us+')),'
END
IF(@sql_batch_completed=1)
BEGINSET @sql=@sql+'ADD EVENT sqlserver.sql_batch_completed(SET collect_batch_text=(1)ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)WHERE ([cpu_time]>='+@cpuFilter+' and duration>='+@durationFilter_us+')),'
END
IF(@sql_statement_completed=1)
BEGINSET @sql=@sql+'ADD EVENT sqlserver.sql_statement_completed (ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)WHERE ([cpu_time]>='+@cpuFilter+' and duration>='+@du相关文章:
sqlServer 检测慢 sql
部署监控: 部署慢SQL与死锁跟踪 Skip to end of metadata 仅SQL Server 2012及以上版本可用. 执行前请确保路径正确! 慢SQL定义:执行时间超过0.5秒即定义为慢SQL,会被捕获。 SSMS中新建查询窗口,将下面代码贴上后执行。 该代码会新建一个[YX_Monitor]库,库中包含[Deadloc…...
Mac电脑音视频播放器: Infuse for Mac中文
Infuse是一款流行的多媒体播放器应用程序,适用于iOS、tvOS和macOS平台。它由Firecore开发,旨在提供出色的媒体播放体验,并支持广泛的视频和音频格式。 以下是Infuse的一些主要功能和特点: 多媒体格式支持:Infuse支持…...
优化积分商城页面的8个实用技巧
积分商城是私域营销的强大工具,能够帮助企业吸引并留住客户,提高销售和客户忠诚度。然而,为了确保积分商城发挥最大效益,需要对其页面进行优化,以提供用户友好的体验。本文将介绍8个实用的技巧,帮助您优化积…...
Python机器学习实战-特征重要性分析方法(2):内置特征重要性(附源码和实现效果)
实现功能 一些模型,如线性回归和随机森林,可以直接输出特征重要性分数。这些显示了每个特征对最终预测的贡献。 实现代码 from sklearn.datasets import load_breast_cancer from sklearn.ensemble import RandomForestClassifier import matplotlib.…...
vue中v-for和v-if同时使用的解决办法
在一个列表中,如果同时要遍历,并且根据某个条件控制某个列表项是否显示,如下代码是错误的: <ul><li v-for"item in list" v-if"item.show" :key"item.id">{{item.name}}</li> &…...
【解决方法】树莓派4B安装wiringpi失败、gpio -v与gpio readall命令not found(arm64架构)
问题描述 树莓派信息:#4B# #64位# #aarch# 使用 gpio -v 或 gpio readall 命令时显示 cmmand not foung安装好 RPi.GPIO (安装命令:pip install RPi.GPIO)仍旧不能使用上述命令安装好 wiringpi 结果报错 wiringpi:armhf 原因分析…...
oracle 递归
1)此方法,父亲state 9999,儿子state ! 9999,儿子能查询出来 select * from T_ORGANIZATION ot where ot.state!9999 start with ot.id 7 connect by prior ot.id ot.ORG_PARENTID order by ot.id asc 2)此方法…...
SSM - Springboot - MyBatis-Plus 全栈体系(十三)
第三章 MyBatis 一、MyBatis 简介 1. 简介 MyBatis 最初是 Apache 的一个开源项目 iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code。随着开发团队转投 Google Code 旗下, iBatis3.x 正式更名为 MyBatis。代码于 2013 年 11 月迁…...
Python|OpenCV-访问并修改图片像素值,鉴别彩色和灰色图像(6)
前言 本文是该专栏的第6篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用OpenCV对图像进行操作的时候,通常需要熟练掌握一些Numpy知识点。因为有的时候需要用到Numpy和OpenCV结合去实现图像的操作,所以说想要写出较好的OpenCV代码的最好方法,就需要有Nump…...
【Python基础】if __name__ == ‘__main__‘:和assert函数
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
设计模式——1. 单例模式
原理 单例模式(Singleton Pattern)用于确保一个类只有一个实例,并提供一个全局访问点以访问该实例。这意味着无论在何处请求该类的实例,都将返回相同的唯一实例。单例模式常常用于需要共享资源,或需要限制某些资源在系统中的访问次数的情况下。 使用的场景 单例模式在许…...
操作文档的用户故事怎么写,敏捷开发
文章目录 操作文档的用户故事怎么写,敏捷开发例子的标准就是操作文档的角色是最终用户 操作文档的用户故事怎么写,敏捷开发 在敏捷开发中,用户故事(User Stories)是一种简洁、人性化的方式来描述功能需求。这通常有助…...
14.抽象工厂模式
UML 代码 #include <iostream> #include <list> using namespace std;class AbstractProductA { public:virtual void showa() 0; }; class ProductA1:public AbstractProductA { public:virtual void showa(){cout << "我是A1" << endl;}…...
铁路用热轧钢轨
声明 本文是学习GB-T 2585-2021 铁路用热轧钢轨. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了铁路用钢轨的订货内容、分类、尺寸、外形、质量及允许偏差、技术要求、试验方法、检 验规则、标志及质量证明书。 本标准适用于3…...
win11+wsl+git+cmake+x86gcc+armgcc+clangformat+vscode环境安装
一、安装wsl (1)打开power shell 并运行: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform (2࿰…...
HDLBits-Edgedetect
刚开始写的代码如下: module top_module (input clk,input [7:0] in,output [7:0] pedge );reg [7:0] in_pre;always (posedge clk)begin in_pre < in;endassign pedge in & ~in_pre; endmodule但是提交结果是错误的。猜想原因如下: assign p…...
云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!)
云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!) Linux搭建Hadoop集群(CentOS7hadoop3.2.0JDK1.8Mapreduce完全分布式集群) 本文章所用到的版本号: CentOS7 Hadoop3.2.0 JDK1.8 基本概念及重要性 很多小伙伴部署集群用hadoop用mapr…...
基于jenkins+k8s实现devops
1、背景 由于jenkins运行在k8s上能够更好的利用动态agent进行构建。所以写了个部署教程,亲测无坑 2、部署 1、创建ns kubectl create namespace devops 2、kubectl apply -f jenkins.yml apiVersion: v1 kind: ServiceAccount metadata:name: jenkinsnamespace…...
一文了解企业如何实现文件自动化实时同步
在当今的数字化时代,数据是企业的核心资产,也是企业竞争力的重要体现。数据的传输、共享、协作、备份等都需要依赖文件同步技术,实现数据在不同平台和设备之间的一致性和可用性。文件同步是指将一个或多个文件夹中的内容复制或更新到另一个或…...
低代码系统哪里好
低代码作为近些年来被热议的话题,一直备受争议。低代码的出现更多的是用来辅助那些没有太多技能的人士而使用,在某些方面依然需要强大的代码来解决生产革新。所以低代码也不是浑水猛兽,也需要根据实际情况加以利用。那么为什么低代码会收到如…...
小白挖漏洞必备的两个平台!有技术就能挖,没有上限,光靠挖洞月入1w+的都大有人在!_漏洞挖掘提交网站。
今天给大家推荐两个新手挖漏洞最合适的两个平台,有技术就能上,没有啥门槛,挖多赚多,练技术的同时把钱给赚了。 01补天 https://hack.zkaq.cn/ 这个平台应该是我推荐最多的,上面光靠挖漏洞月入几万的都大有人在 我有个…...
从游戏设计到算法实现:拆解睿抗CAIP编程赛‘游戏设计师’一题的BFS+离线查询思路
从游戏设计到算法实现:拆解睿抗CAIP编程赛‘游戏设计师’一题的BFS离线查询思路 在游戏开发中,角色移动和状态转换是最基础也最核心的机制之一。睿抗机器人开发者大赛CAIP编程技能赛的"游戏设计师"一题,巧妙地将这些游戏开发中的实…...
DanKoe 视频笔记:通用时代崛起:如何通过多种兴趣茁壮成长
在本教程中,我们将探讨为何在当今的“创作者经济”中,拥有广泛兴趣和技能的“通才”比只精通一门的“专家”更具优势。我们将分析背后的原因,并提供一套实用的步骤,帮助你作为一名通才,在数字世界中建立个人品牌、吸引…...
企业网管必看:华为交换机双协议登录避坑指南(含Telnet与SSH共存配置)
华为交换机双协议登录实战:Telnet与SSH安全共存配置手册 作为企业网络管理员,每次接手新设备时最头疼的莫过于不同厂商、不同版本间的配置差异。上周我负责的某数据中心网络升级项目中,就遇到了华为S5735交换机同时配置Telnet和SSH的"坑…...
电商老板必看:用Excel的IF和VLOOKUP函数,轻松算出你的新老客户利润贡献比
电商精细化运营:用Excel透视新老客户利润贡献的实战指南 对于中小电商企业主来说,理解客户结构是精细化运营的第一步。你可能没有专业的BI工具,但Excel这个看似普通的办公软件,却能帮你挖掘出惊人的商业洞察。本文将带你一步步构建…...
网易云音乐评论爬虫实战:破解加密接口抓取数据
一、接口分析:找准评论数据请求入口 在抓取网易云音乐歌曲评论时,我们不难发现,页面并不会随着翻页刷新跳转,评论的加载属于异步AJAX请求。这类接口有一个明显特点:接口地址固定不变,分页切换完全依靠请求载…...
3步破解音乐平台碎片化困局:Listen1多源聚合技术深度实践
3步破解音乐平台碎片化困局:Listen1多源聚合技术深度实践 【免费下载链接】listen1_chrome_extension one for all free music in china (chrome extension, also works for firefox) 项目地址: https://gitcode.com/gh_mirrors/li/listen1_chrome_extension …...
如何永久保存微信聊天记录:WeChatExporter完整解决方案
如何永久保存微信聊天记录:WeChatExporter完整解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机丢失、系统升级或误操作而丢失珍贵的微…...
Python AI用例生成全链路实践(含12个工业级代码片段+GPT-4/Claude/Llama3对比基准)
第一章:Python AI用例生成全链路实践概览AI用例生成是将业务需求快速转化为可执行AI解决方案的关键环节,涵盖从问题定义、数据准备、模型选型、提示工程、评估验证到部署集成的完整闭环。本章聚焦基于Python生态的端到端实践路径,强调可复现性…...
阿里云:数据分析Agent白皮书——AI重构数据消费 2026
这份由阿里云与瓴羊发布的《数据分析 Agent 白皮书 ——AI 重构数据消费》,立足 DataAI 融合趋势,系统阐述了数据分析 Agent 的发展背景、技术架构、代表产品、行业实践、落地方法与未来方向,核心围绕AI 重构企业数据消费模式展开,…...
