Ste*_*eez 2 sql-server extended-events blocking
我已经实现了 XE 来捕获我的实例上的阻塞(根据这篇很棒的文章https://www.brentozar.com/archive/2014/03/extended-events-doesnt-hard/#comment-2470072。)
我这样做是因为我一直关注阻塞状态,使用查询的这种美:
select
db_name(database_id) DB,
object_name(object_id) Obj,
row_lock_count + page_lock_count No_Of_Locks,
row_lock_wait_count + page_lock_wait_count No_Of_Blocks,
row_lock_wait_in_ms + page_lock_wait_in_ms Block_Wait_Time_in_ms,
index_id
from
sys.dm_db_index_operational_stats(NULL,NULL,NULL,NULL)
order by
Block_Wait_Time_in_ms desc
Run Code Online (Sandbox Code Playgroud)
偶尔会在文件中记录一些阻塞,但没有我预期的那么多。我的期望是查询中 No_Of_blocks 中的数字将与根据 XE 记录到文件中的块数相对应。
与查询相比,XE 是否可能无法捕获任何内容?有任何想法吗?感谢您的反馈意见!
您正在比较无法比较的完全不同的事物。
XE 跟踪您正在捕获一个称为此处sqlserver.blocked_process_report描述的事件。
在这里,您正在捕获超过固定时间的所有类型的阻塞。如果它小于该持续时间(由 设置sp_configure 'blocked process threshold'),它将不会被此事件捕获。
Blocked Process Report 事件类指示任务已被阻止超过指定的时间量。此事件类不包括系统任务或等待不可检测到死锁的资源的任务。
您的第二个集合dm_db_index_operational_stats仅使用计数等待行和页锁定。它也是累积的,因为堆或索引的元数据被带入元数据缓存并且统计信息被累积,直到缓存对象从元数据缓存中移除。
详情请见:https : //docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-index-operational-stats-transact-sql
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |