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…...
一文了解企业如何实现文件自动化实时同步
在当今的数字化时代,数据是企业的核心资产,也是企业竞争力的重要体现。数据的传输、共享、协作、备份等都需要依赖文件同步技术,实现数据在不同平台和设备之间的一致性和可用性。文件同步是指将一个或多个文件夹中的内容复制或更新到另一个或…...
低代码系统哪里好
低代码作为近些年来被热议的话题,一直备受争议。低代码的出现更多的是用来辅助那些没有太多技能的人士而使用,在某些方面依然需要强大的代码来解决生产革新。所以低代码也不是浑水猛兽,也需要根据实际情况加以利用。那么为什么低代码会收到如…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
