作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在考虑开启读取提交的快照隔离级别来帮助解决我们的一些表锁定问题。
我们有一些存储过程使用表提示 WITH (ROWLOCK, READPAST)
作为 queuing based table setup .这可以防止多个辅助角色读取同一行。
我有点担心读取已提交的快照 可能会破坏排队系统并且多个辅助角色可以读取同一行。有谁知道打开 RCS 隔离是否会破坏此过程?
WITH q AS
(
SELECT TOP Column1
FROM Table1 c WITH (ROWLOCK, READPAST)
WHERE c.NextAttemptDate <= GETUTCDATE()
ORDER BY c.NextAttemptDate ASC
)
UPDATE q
SET OperationStatusType = 8
OUTPUT inserted.Column1
最佳答案
UPDATE
在目标表的行上获取 U 锁,同时检查它们是否与您的过滤器匹配。之后,锁将被释放或转换为 X 锁,进一步向下查询管道。
使用锁定提示或隔离级别不可能影响写锁定。你很安全。 U 型锁将被占用。
我习惯于总是冗余地添加 WITH (UPDLOCK)
以便在代码中记录此行为。
关于sql - 打开读取提交快照将如何影响使用 WITH(ROWLOCK、READPAST)的数据队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155124/
我是一名优秀的程序员,十分优秀!