我们有一个在大型 J2EE 应用程序中运行的 UPDATE 语句,该语句被其他语句阻塞。更新使用主键,所以它应该只影响一行。应用程序中使用的隔离级别应该是 READ UNCOMMITTED,所以它应该只是导致阻塞的另一个修改,但我们看不到在哪里。
我们已经获得了所有阻塞事务的报告,这确实显示了一个阻塞更新的会话。使用DBCC INPUTBUFFER
命令显示阻塞会话执行的最后一条语句,但这是另一个表上的 SELECT 而不是 UPDATE,所以我认为它不可能是原因。我认为它必须是交易中较早的声明。
至此,我的SQL Server知识枯竭,重现问题也有问题;它间歇性地发生。
我应该知道采取哪些步骤来查找阻塞语句?