【发布时间】:2015-07-23 03:10:10
【问题描述】:
假设 SQL 服务器同时从不同的线程和连接接收到同一张表的 select 和 update 语句
他们中的任何一个被优先考虑吗?
我知道如果表已被锁定以进行更新,则选择语句会延迟到更新完成(默认情况下更新语句会锁定表我不正确?)。如果由于更新导致表锁持续很长时间,select语句被取消,等待错误过多
那么当两者同时收到时会发生什么?
【问题讨论】:
-
但是您尝试两条语句不会同时开始执行,其中一条将是第一个(即使是纳秒)
-
死锁检测。要撤消的资源最少的命令将成为死锁牺牲品。这始终是一个选择命令。
-
UPDATE锁定它正在更新的 行 - 而不是整个表! (当然,除非您一次更新超过 5000 行 - 那么它可能会升级为表级锁) -
@lrb 这是否意味着 SQL 服务器开始执行这两个查询,当看到死锁时它会取消选择语句对吗?
-
@marc_s ty 了解更多详情
标签: sql-server sql-server-2014