我在面试中被问到了这篇论文类型的问题,但没有得到这份工作。完整的问题如下:
在 RDBMS 中如何检测和报告死锁?在检测和预防场景中,事务所有者和应用程序开发人员负责确保什么?
And*_*ren 13
在 SQL Server 中,有一个单独的线程会定期(默认为 5 秒,如果刚刚检测到死锁则间隔较低)检查任何周期的等待列表。即它标识线程正在等待的资源,然后它找到该资源的所有者并递归地找到该线程依次等待的资源,从而标识正在等待彼此资源的线程。
如果发现死锁,则选择使用以下算法杀死受害者:
您可以在此处找到有关 SQL Server 死锁检测的更多信息:http
:
//msdn.microsoft.com/en-us/library/ms178104.aspx
事务所有者/应用程序开发人员负责将发生死锁的风险降到最低,并执行他们应该: