Blocked Process Report

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->http://technet.microsoft.com/en-us/subscriptions/ms191168.aspx
捕获超过10秒的堵塞,开启了trace之后,所有的超过10秒的堵塞会被记录下来(重复记录,例如scenario1的堵塞被记录下来, 过了10秒之后, scenario1会被再次记录

sp_configure 'show advanced options',1 ; 
GO
 RECONFIGURE; 
GO
 sp_configure 'blocked process threshold',10 ; 
GO
 RECONFIGURE; 
 go
 select *from sys.traces
 
 declare @rc int 
 declare @TraceID int
  declare @maxfilesize bigint
  set @maxfilesize = 50 
  exec @rc = sp_trace_create 
  @TraceID output, 2, N'd:\trace\BlockedProcessTrace', 
  @maxfilesize, NULL 
--137解释:
-- Blocked Process Report Occurs when a process has been blocked for more than a specified amount of time. Does not --include system processes or processes that are waiting on non deadlock-detectable --resources. Use sp_configure to configure the threshold and frequency at which reports are generated.
 
 if(@rc =0)
 begin
  declare @on bit
  set @on = 1
  exec sp_trace_setevent @TraceID, 137, 15, @on
  exec sp_trace_setevent @TraceID, 137, 1, @on
  exec sp_trace_setevent @TraceID, 137, 13, @on
 end
   
--exec sp_trace_setfilter   2,35,0,0,N'testdb'

exec sp_trace_setstatus 2, 1--start the trace
  
select *from sysprocesses where blocked<>0
select cast(TextData as XML) , SPID, EndTime, 
   Duration/1000/1000from
    fn_trace_gettable(N'd:\trace\BlockedProcessTrace.trc', default)
    where eventclass = 137
--exec sp_trace_setstatus 2, 0--stop the trace
--exec sp_trace_setstatus 2, 2--remove the trace definition but remain the trace file

原文链接:http://www.cnblogs.com/stswordman/archive/2010/08/02/1790291.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`blocked_range`是一个C++标准库中的类,用于表示一个范围(range)被拆分成若干个块(blocks)。它通常用于并行算法中,将一个大任务分割成若干个小任务,并行处理这些小任务以提高执行效率。 `blocked_range`的定义如下: ```c++ template<typename Value> class blocked_range { public: blocked_range(Value begin, Value end, size_t grainsize = 1); Value begin() const; Value end() const; size_t size() const; bool empty() const; }; ``` 其中`begin`和`end`表示范围的起始和结束位置,`size`表示范围的大小,`empty`表示范围是否为空。`grainsize`表示每个块的大小,如果未指定,默认为1。 在并行算法中,我们通常需要将一个范围分成若干个块,并行处理这些块。`blocked_range`可以很方便地将一个范围拆分成若干个块,如下所示: ```c++ void parallel_process(blocked_range<int>& range) { if (range.empty()) return; if (range.size() <= range.grainsize()) { process_range(range.begin(), range.end()); // 处理完整个范围 } else { // 将范围分成若干个块,分别处理每个块 int mid = range.begin() + range.size() / 2; parallel_process(blocked_range<int>(range.begin(), mid, range.grainsize())); parallel_process(blocked_range<int>(mid, range.end(), range.grainsize())); } } ``` 在上面的代码中,`parallel_process`函数接受一个`blocked_range`对象作为参数,如果该范围为空,则直接返回;否则,如果该范围的大小小于等于指定的块大小(`grainsize`),则直接处理该范围;否则,将该范围分成两个子范围,并递归地调用`parallel_process`函数处理这两个子范围。这样,我们就可以很方便地将一个范围分成若干个块,并行处理这些块。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值