天天看点

RDS SQL Server死锁(Deadlock)系列之四利用Service Broker事件通知捕获死锁问题引入Service Broker Event Notification分析死锁最后总结

service broker event notification即使用sql server引擎内置的异步消息通讯机制加上sql server的事件通知机制来捕获死锁信息,这个方法非常简单,对sql server数据库本身影响非常小。一个简单的模型是将捕获到的死锁xml信息存放在队里中,然后分析队列,重现详细的死锁场景。代码如下:

当死锁发生后,死锁信息会被异步的记录到service broker队列中。

查询结果展示如下:

RDS SQL Server死锁(Deadlock)系列之四利用Service Broker事件通知捕获死锁问题引入Service Broker Event Notification分析死锁最后总结

接下来的工作就是分析队里中的死锁信息,分析方法和前面几篇文章的分析方法大同小异,只是在公用表达式的初始化部分稍有差异。方法如下:

展示结果如下图所示:

RDS SQL Server死锁(Deadlock)系列之四利用Service Broker事件通知捕获死锁问题引入Service Broker Event Notification分析死锁最后总结

使用service broker event notification来捕获死锁信息,是一个比较新颖的选择,由于采用异步消息通讯的方式,对sql server影响非常小。个人建议使用该方法来捕获、分析死锁。