SQL Server锁定版本

时间:2012-07-05 15:15:58

标签: sql-server locking

假设我有一个正在更新记录并遇到记录锁定的进程,阻止它继续。我假设该过程通常会阻塞(而不是失败并要求应用程序实现自己的重试逻辑)。

假设是这样,这个块/锁是如何释放的?我看到两种常见的替代方案:(1)驱动程序每N毫秒轮询一次SQL Server; (2)释放锁时,SQL Server会向驱动程序发出信号。

我确信驱动程序和配置等之间存在一些差异,我正在寻找一个大致的想法。

2 个答案:

答案 0 :(得分:2)

都不是。驱动程序不参与阻塞过程 - 执行查询的内部SQL Server线程(或光纤)被阻止,并且可能涉及多个机制(一些自旋等待,一些轮询,一些阻塞等)。司机正在等待结果。

答案 1 :(得分:1)

客户端“驱动程序”通常不参与,也不会通知SQL Server的锁定。 SQL Server 告诉客户端他们的命令请求(通常是批处理)是否已完成执行和/或准备好将数据传回客户端。