在具有读提交隔离级别的事务中,如果您对一组行进行更新,然后对同一组行进行选择,则 sql server 在执行更新时不会重用它在索引上获取的 x 锁以执行下一个select 还是会尝试在索引上获取一组新的锁。我遇到了一个死锁场景,其中两个进程正在争夺一个索引键锁——被锁定的两个资源之一。当其中一个进程已经完成更新然后对相同的行进行选择时,就会发生这种情况。我的问题是,当该进程在上一步中已经获得同一行的 x 锁时,它如何等待获取索引上的键锁。
在具有读提交隔离级别的事务中,如果您对一组行进行更新,然后对同一组行进行选择,则 sql server 在执行更新时不会重用它在索引上获取的 x 锁以执行下一个select 还是会尝试在索引上获取一组新的锁。我遇到了一个死锁场景,其中两个进程正在争夺一个索引键锁——被锁定的两个资源之一。当其中一个进程已经完成更新然后对相同的行进行选择时,就会发生这种情况。我的问题是,当该进程在上一步中已经获得同一行的 x 锁时,它如何等待获取索引上的键锁。