没有打开的事务时,一个简单的SELECT语句块是否可以处理?

时间:2014-02-07 23:39:00

标签: sql sql-server

几天前我遇到了一个奇怪的场景,当时返回4行数据的简单SELECT语句导致SQL Server中的阻塞链。没有公开交易。任何暗示为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

  

是的,一个简单的SELECT语句可以在死锁中结束,想象一下   User1仅读取数据而User2尝试更新的场景   一些数据和那个表上有一个非聚集索引,它是   可能的。

     

1)User1正在读取Some Data并获取共享锁   非聚集索引,以便执行查找,然后尝试   获取页面上的共享锁定,以便按顺序排列数据   返回数据本身。

     

2)正在写/正在更新的User2首先获得了一个exlusive锁   包含数据的数据库页面,然后尝试获取   对索引进行独占锁定以更新索引。

Read here 了解有关锁定sql-server的更多信息。