![]() |
1
4
实际上,这很有趣,您可能想启动profiler并跟踪一些简单查询的锁获取/释放。我做过这件事,有点像: 获取第1行 获取第2行 释放第1行 获取第3行 释放第2行 获取第2页 发布第1页 ... 我可能不是100%正确,但这基本上就是方法。因此,在读取行之后释放锁,或者更准确地说,在获取下一行锁之后释放锁。我怀疑这可能与保持遍历的一致状态有关。 |
![]() |
2
1
我不相信它会同时获得两个页面级锁。我认为它只是以这种方式出现在事件探查器中,因为事件发生得太快了。如果像您所怀疑的那样发生,则始终会有两个页面级锁,但在使用共享锁运行大型查询时,我有时会看到两个页面级锁,有时会通过此查询看到一个:
因此,我认为正在发生的是:
两种情况的结果是,有时在sys.dm_tran_lock查询中。我看到两个页面锁,有时是一个,有时是三个。。取决于在同步操作过程中发生的更快。 |
![]() |
3
0
关于具体文件,我发现:
|
![]() |
a a · 为什么在这个可重入锁示例中需要引用计数? 2 年前 |
![]() |
JohnLBevan · 为什么原子语句上需要锁提示? 7 年前 |
![]() |
Jay Wang · 生产者/消费者实施:陷入消费者循环 7 年前 |
![]() |
Andremoniy · 悲观写入是否锁定整个表? 7 年前 |
![]() |
Marcus Cemes · 选择。。。用于更新在提交后选择旧数据 7 年前 |
![]() |
Ins0maniac · Rails,锁定数据库中的记录 7 年前 |