繁体   English   中英

事务隔离级别如何处理读/写和读/写锁?

[英]How does transaction isolation level work with respect to read/writes and read/write locks?

我了解脏读、不可重复读和幻读问题。

我还阅读了有关隔离级别的信息:未提交读、已提交读、可重复读、可序列化。

我也明白读取会导致共享锁。 要获得共享锁,不应该已经有一个活动的排他锁。 其中插入/更新/删除会导致排他锁。 要获得排他锁,不应该有任何其他排他或共享锁处于活动状态。

对于每个级别,我读过的文章都没有解释隔离级别的概念:

  1. 该级别是否适用于读取或写入事务或两者。

  2. 读/写是否强制执行与上述解释不同的任何读/写锁

  3. 事务是关于写入的全有或全无的概念。 而事务隔离级别是关于只读的概念吗?

如果有人可以就每个级别的这些要点进行启发,那将非常有帮助。

您可能会发现Paul White 的这些文章非常有用

但在回答您的问题时:

首先,共享锁与排他锁定义了允许对锁同时发生的事情。 隔离级别定义了锁定的数量和锁定时间。

  1. 隔离级别适用于这两种类型的事务。 SNAPSHOT尤其具有不同的效果,具体取决于是否涉及写入。
  2. 还有 Intent 锁,它们是其他锁的等效版本,允许将锁从页锁或行锁升级到表/分区。
    您还有模式修改锁,它可以防止任何人从您下面更改表/列(或索引)定义(这甚至适用于NOLOCK )。
  3. 隔离级别定义了多少被锁定,是一行还是一个范围? 它还指示锁在使用后会发生什么。 它是一直保留到事务结束,还是在提交发生后立即释放?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM