SQL Server 中未提交的 JDBC 读取

dub*_*ech 1 sql-server locking

如果我将 jdbc 隔离级别设置为在 SQL Server 中读取未提交,SQL Server 会锁定任何表、页、行等吗?

谢谢。

Sim*_*rts 5

在线书籍中阅读未提交的内容:

实现脏读或隔离级别 0 锁定,这意味着不发布共享锁且不执行排他锁。设置此选项时,可以读取未提交或脏数据;在事务结束之前,数据中的值可以更改,行可以在数据集中出现或消失。此选项与在事务中的所有 SELECT 语句中的所有表上设置 NOLOCK 的效果相同。这是四个隔离级别中限制最少的。

所以不,它不会锁定表、行或页面。但是,任何SELECT(即使READ UNCOMMITTED设置)都会发出Sch-S(模式稳定性)锁,这基本上意味着在SELECT执行时不会发生模式更改(模式更改 = 添加/删除列、更改列的数据类型、更改列的可空性和我无法想到的其他一些操作)。甲Sch-S锁不应DML语句干扰(SELECT/ INSERT/ UPDATE/ DELETE)。