我尝试在服务器上并行运行几个(相同但不同的数据)(嵌套)存储过程,虽然这很好用(给出正确的锁定提示)但我确实遇到了以下情况:
对我而言,这似乎是spid 116被spid 117阻挡,而spid 117被116阻挡(在每种情况下都有一些线程)。
为了继续进行,我不得不手动杀死其中一个。我希望MSSQL能够将这种情况视为“无法解决”并将其中一个解死。 有趣的是,我曾经两次运行(几乎)相同的测试,虽然在不同的块上。
这是在一个带有20个内核和96Mb RAM的SQL2017 DEV-Edition上;所涉及的存储过程相当复杂,并且涉及对不同事务内外的相同表(但不同记录)进行SELECT,INSERT和UPDATE操作,这些事务分布在不同的存储过程中。 (听起来比实际情况更糟,真的=)