2016-08-04 72 views
1

我正在使用SQL Server 2008 R2。设置/更改lock_monitor默认时间间隔

我已阅读TechNet上的这个文档:https://technet.microsoft.com/en-us/library/ms178104(v=sql.105).aspx

在我的申请,我必须在5秒内到工业机器响应。有时候(每天只有一次),我遇到数据库死锁,并重新运行事务。这个程序运作良好。

我的问题是死锁解决的持续时间。知道我有5秒可用于响应机器,我想将lock_monitor线程的默认时间间隔设置为2秒。因此可以在5秒内检测并解决死锁,因为现在需要7秒来解决它。

可能吗?

+0

你摸不着头脑斯特凡检测? – scsimon

回答

1

是的,可以更改阻止的过程阈值,但不应该。

Configure Blocked Threshold

Increase/Decrease Threshold

Why You Shouldn't Do This...

边注...

如果锁监视器线程死锁发现,死锁检测时间间隔会从5秒下降到低取决于死锁的频率为100毫秒。

如果锁定监视线程停止发现死锁,则数据库引擎将搜索间隔增加到5秒。

如果刚刚检测到死锁,则假定下一个必须等​​待锁的线程正在进入死锁周期。 第一对锁在检测到死锁之后等待 立即触发死锁搜索,而不是等待下一个 死锁检测间隔。例如,如果当前时间间隔为5秒钟,并且刚刚检测到死锁,则下一次锁定等待将立即启动死锁检测器 。如果这个锁等待是死锁的一部分 ,它会马上而不是下一个死锁搜索时

Reference

+0

很奇怪!我不明白它是一个错误还是一个自愿的功能。为什么[本页](https://support.microsoft.com/en-us/kb/2157154)说:_它能够检测到阻塞进程的最短时间为5秒_?它不是完全可配置的? – stephanejulien

+0

不是错误@stephanejulien – scsimon