Dus*_*ine 4 database-performance sql-server-2012
我有一个 SSIS 包正在运行一个执行 SQL 任务,该任务调用一个 proc。我正在处理的查询很糟糕,是由供应商开发的,它实际上嵌套在几个过程的深处。除此之外,它使用父过程中的临时表以及两个嵌套NOT IN子查询。
目前无法重写,但问题更多的是确定可能导致问题的原因。正如前面提到的,该查询很差,但通常运行得很快,但现在卡住了。查看查询,dm_exec_requests我可以看到它处于状态RUNNING并且无需等待。我没有看到任何来自 I/O 的活动,也没有看到任何真正的 CPU 活动。
有没有办法确定查询实际发生了什么?
听起来可能存在死锁问题。要查看被阻止的 sys 进程(死锁)的列表,您可以运行以下命令:
从阻塞 > 0 的 sysprocesses 中选择 *
如果没有死锁,则可能是性能问题,我将通过 SQL Server Management Studio 中的探查器运行 SQL 跟踪。在这种情况下,您可以右键单击并执行存储过程,传入与从 SSIS 包传入的参数相同的参数。然后检查分析器并查看瓶颈在哪里。
问候,罗布