首页 > 解决方案 > 隔离级别 - SQL Server

问题描述

如果我正在使用

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

我需要将查询包装在事务中吗

例如

BEGIN TRANS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM
T1
COMMIT

或者我可以有一个正常的查询吗?

此外,包括 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 和 WITH (NOLOCK) 是否有任何好处。我知道一个用于表级别,一个用于整个连接级别。但是两者兼得有什么好处吗?

如:

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    SELECT * FROM
    T1 WITH (NOLOCK)

标签: sqlsql-servertransactionsisolation-level

解决方案


我们总是使用 READ COMMITTED ISOLATION LEVEL 执行 INSERT、UPDATE 和 DELETE 事务的过程。如果我们需要来自任何表的脏数据,那么它会有所帮助。因为事务是使用 READ COMMITTED 定义的,而表在 JOIN 查询中使用 WITH(NOLOCK) 返回脏读。


推荐阅读