隔离级别 - SQL 服务器
Isolation Levels - 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) 是否有任何好处。我知道一个是 table 级别,一个是整个连接级别。但是两者都有什么好处吗?
如:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM
T1 WITH (NOLOCK)
我们总是使用 READ COMMITTED ISOLATION LEVEL 执行 INSERT、UPDATE 和 DELETE 事务过程。如果我们需要来自任何 table 的脏数据,那么它会有所帮助。因为事务是用 READ COMMITTED 和 table return 脏读定义的,在 JOIN 查询中使用 WITH(NOLOCK)。
如果我正在使用
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) 是否有任何好处。我知道一个是 table 级别,一个是整个连接级别。但是两者都有什么好处吗?
如:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM
T1 WITH (NOLOCK)
我们总是使用 READ COMMITTED ISOLATION LEVEL 执行 INSERT、UPDATE 和 DELETE 事务过程。如果我们需要来自任何 table 的脏数据,那么它会有所帮助。因为事务是用 READ COMMITTED 和 table return 脏读定义的,在 JOIN 查询中使用 WITH(NOLOCK)。