gpt4 book ai didi

sql-server - 如何检查 SQL Server 中的阻塞查询

转载 作者:行者123 更新时间:2023-12-02 07:51:57 25 4
gpt4 key购买 nike

我有一台仓库服务器 24/7 从旧系统获取数据/同步,我注意到我的一些报告/sql 作业性能不确定,大多数时候我从 DBA 团队那里听说我的查询被阻塞到其他同步进程。

从 DBA 团队我开始了解命令,即 EXEC SP_WHO2,通过它我可以通过查看 BlkBy 列来识别导致阻塞的查询 spid。

请建议我如何避免阻塞以及检查 SQL Server 中的阻塞的其他方法

最佳答案

除了 Sp_Who2 之外,您还可以使用以下查询来识别 SQL 中的阻塞。

SELECT
db.name DBName,
tl.request_session_id,
wt.blocking_session_id,
OBJECT_NAME(p.OBJECT_ID) BlockedObjectName,
tl.resource_type,
h1.TEXT AS RequestingText,
h2.TEXT AS BlockingTest,
tl.request_mode
FROM sys.dm_tran_locks AS tl
INNER JOIN sys.databases db ON db.database_id = tl.resource_database_id
INNER JOIN sys.dm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address
INNER JOIN sys.partitions AS p ON p.hobt_id = tl.resource_associated_entity_id
INNER JOIN sys.dm_exec_connections ec1 ON ec1.session_id = tl.request_session_id
INNER JOIN sys.dm_exec_connections ec2 ON ec2.session_id = wt.blocking_session_id
CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1
CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2
GO

还可以使用以下命令检查特定 SPID 的详细信息。

DBCC INPUTBUFFER(56) — Will give you the Event Info.

KILL 56 -- Will kill the session of this id.

关于sql-server - 如何检查 SQL Server 中的阻塞查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com