我们有一个庞大的应用程序,我们从多个方面访问我们的sql服务器。我们的用户抱怨性能问题,但我们认为它并不慢。取而代之的是,我们认为我们的障碍使用户感到性能降低。
因此,我们要记录阻止其他进程超过5秒的进程。在记录结束时,我们想计算一个进程阻止另一个进程的频率。
我们已经尝试了以下方法:
- 我们试图找到显示与活动监视器完全相同的结果的sql(没有成功)
- 我们创建了一个跟踪文件,并使用以下脚本进行了分析:https://michaeljswart.com/2011/04/a-new-way-to-examine-blocked-process-reports/
- 我们启用了阻塞进程阈值(5秒),但是我没有有关阻塞进程的信息(SQL句柄或类似的东西)。我通过扩展事件记录了“阻止的进程”
- 我们观看了活动监视器,但是由于短块的原因,收集有用的数据似乎真的很困难,我们无法计数特定过程块的频率
我们正在寻找一种具有以下信息的记录方法:
- 封锁的SQL
- 阻止SQL(存储过程或过程中的当前语句)
- 封锁时间
- 时间
- 数据库
我们认为sql profiler不会对性能产生影响。