SQL 事务隔离级别

 隔离级别用于决定如何控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用。

事务隔离级别通过影响读操作来间接地影响写操作;可以在回话级别上设置事务隔离级别也可以在查询(表级别)级别上设置事务隔离级别。

事务隔离级别总共有6个隔离级别:

READ UNCOMMITTED(未提交读,读脏),相当于(NOLOCK)

READ COMMITTED(已提交读,默认级别)

REPEATABLE READ(可以重复读),相当于(HOLDLOCK)

SERIALIZABLE(可序列化)

SNAPSHOT(快照) READ

COMMITTED SNAPSHOT(已经提交读隔离)

对于前四个隔离级别:READ UNCOMMITTED<READ COMMITTED<REPEATABLE READ<SERIALIZABLE 隔离级别越高,读操作的请求锁定就越严格,锁的持有时间久越长;所以隔离级别越高,一致性就越高,并发性就越低,同时性能也相对影响越大.

获取事务隔离级别(isolation level)

DBCC USEROPTIONS 

设置隔离

设置回话隔离
SET TRANSACTION ISOLATION LEVEL <ISOLATION NAME>
--注意:在设置回话隔离时(REPEATABLE READ)两个单词需要用空格间隔开,但是在表隔离中可以粘在一起(REPEATABLEREAD)

设置查询表隔离
SELECT ....FROM <TABLE> WITH (<ISOLATION NAME>) 
原文地址:https://www.cnblogs.com/chenh/p/6768778.html