【发布时间】:2021-05-23 02:09:18
【问题描述】:
我了解脏读、不可重复读和幻读问题。
我还阅读了有关隔离级别的信息:未提交读、已提交读、可重复读、可序列化。
我也明白读取会导致共享锁。要获得共享锁,不应该已经有一个活动的排他锁。其中插入/更新/删除会导致排他锁。要获得排他锁,不应该有任何其他排他或共享锁处于活动状态。
对于每个级别,我读过的文章都没有解释隔离级别的概念:
-
该级别是否适用于读取或写入事务或两者。
-
读/写是否强制执行任何与上述解释不同的读/写锁
-
事务是关于写入的全有或全无的概念。而事务隔离级别是关于只读的概念吗?
如果有人能对每个级别的这些要点进行启发,那将非常有帮助。
【问题讨论】:
-
我认为the documentation 很清楚: 1. 控制 Transact-SQL 语句的锁定和行版本控制行为。正如它的名字一样,它控制着一个会话中的所有事务。没有理由在此声明的描述中隐藏一些细节(我希望 MS 公布文章中所有案例的例外情况)。 2. 选择事务隔离级别不会影响为保护数据修改而获取的锁.
标签: sql sql-server sql-server-2016