SQLServer 2008数据库查看死锁、堵塞的SQL语句

死锁和堵塞一直是性能测试执行中关注的重点。

下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁、堵塞的SQL语句,还算比较准备,留下来备用。

--每秒死锁数量

SELECT  *
FROM    sys.dm_os_performance_counters
 WHERE   counter_name LIKE ‘Number of Deadlocksc%‘;

--查询当前阻塞

WITH CTE_SID ( BSID, SID, sql_handle )
AS ( SELECT
blocking_session_id ,
session_id ,

sql_handle
FROM sys.dm_exec_requests

WHERE blocking_session_id <> 0
UNION ALL

SELECT A.blocking_session_id ,

A.session_id ,
A.sql_handle
FROM
sys.dm_exec_requests A
JOIN CTE_SID B ON
A.SESSION_ID = B.BSID
)
SELECT C.BSID ,

C.SID ,
S.login_name ,
S.host_name ,

S.status ,
S.cpu_time ,
S.memory_usage ,

S.last_request_start_time ,
S.last_request_end_time ,

S.logical_reads ,
S.row_count ,

q.text
FROM CTE_SID C
JOIN sys.dm_exec_sessions S ON
C.sid = s.session_id
CROSS APPLY
sys.dm_exec_sql_text(C.sql_handle) Q
ORDER BY sid

在压力测试过程中,不间断的按F5键执行上面的SQL语句,如果出现死锁或者堵塞现象,就会在执行结果中罗列出来。如果每次连续执行SQL,都有死锁或者堵塞出现,说明死锁或者堵塞的比较严重。

时间: 2024-11-09 03:14:44

SQLServer 2008数据库查看死锁、堵塞的SQL语句的相关文章

创建数据库和表相关的SQL语句

SQL server注释语句有两种: 一种是单行注释,一种是多行注释. ******************** 单行注释用:--注释一行内容 多行注释用:/* *注释 *多行内容 */ 创建数据库: 语句如下: /*创建数据库主文件 create database student:新建数据库逻辑名称为student filename='d:\stduent_data.mdf':数据库文件保存路径和名字. on primary:primary—默认文件组,表示表是建立在主文件组上,可以省略. s

查看msrepl_commands 中的SQL 语句

在Transactional Replication中,使用sys.sp_browsereplcmds 查看 msrepl_commands 中的SQL语句 sp_browsereplcmds Returns a result set in a readable version of the replicated commands stored in the distribution database, and is used as a diagnostic tool. This stored

两种方式:mysql查看正在执行的sql语句

mysql查看正在执行的sql语句 2015年08月21日 17:32:59 阅读数:15398 有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到.好处是不用设置,不会保存. -- use information_schema; -- show processlist; 或者: -- select * from information_schema.`PROCESSLIST` where info is not null; 1

SQLServer 2008 R2查看字段约束

SQLServer 2008 R2 删除字段前检查字段的约束: select a.name,b.name as cname from syscolumns a left join sysobjects b on a.cdefault=b.id where a.id=object_id('TableName') and a.name='FieldName' 原文地址:https://www.cnblogs.com/talentzemin/p/10502653.html

整理的一些数据库不容易想到的SQL语句实例一

1.行转列SQL语句 SELECT * FROM ( SELECT [FID] , [Weeks] , [Qty] FROM dbo.TempTable where Weeks is not null ) p PIVOT ( SUM([Qty]) FOR [Weeks] IN ([1],[2],[3],[4],[5],[6])) AS pvt 2.游标 declare P_Product_Main CURSOR FAST_FORWARD FOR SELECT PID FROM [表名] orde

[NHibernate]查看NHibernate生成的SQL语句

最近接触到一个用Spring.Net结合NHIbernate的项目,第一次使用,有很多配置,数据操作一旦出问题,很难找到原因,那么如何查看NHibernate发送给数据库的SQL语句呢? 当然我们可以通过log4net记录日志来查看,但稍微有些繁琐,于是找到了另一种方法来查看. NHIbernate中的IInterceptor接口中定义的OnPrepareStatement(SqlString sql)可以观察到生成的sql,由EmptyInterceptor来实现. [Serializable

MySql使用show processlist查看正在执行的Sql语句

今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命令查看了当前正在执行的sql语句,从而定位到了对应的程序,发现代码中有一个死循环在不停的查询导致cpu占用99%,原因找到了问题就好解决了. 这里简单的记录一下processlist的用法: processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这

C# 查看EF生成的SQL语句

用sqlsever追踪最后的sql语句. 返回IQueryable<T>类型, 里面封装的就是生成的SQL脚本,设置断点queryable = DataContext.Set<T>().Where<T>(whereLambda).AsQueryable(); queryable 右键快速监视, 或者ToString()返回字符串类型直接打印输出都能看到sql脚本. 打开SQLServer - 工具 - SQL Server Profiler 上查看执行的SQL语句. 原

面试题 | 数据库笔试题集合&#183;之&#183;SQL语句(2)

第2章 SQL 语句 2.1 选择2.1.1 DELETE FROM S WHERE 年龄>60 语句的功能是( A ) A.从 S 表中彻底删除年龄大于 60 岁的记录B.S 表中年龄大于 60 岁的记录被加上删除标记C.删除 S 表D.删除 S 表的年龄列 2.1.2 使用什么命令可以清除表中所有的内容? ( CD ) A.INSERT  B.UPDATE C.DELETE D.TRUNCATE 2.1.3 以下哪个表不用于 mysql 的权限管理( D ) A.HOST