我为什么要或不应该使用脏读:

set transaction isolation level read uncommitted

在SQL Server中?

===============>>#1 票数:15 已采纳

来自MSDN

设置此选项后,可以读取未提交或脏的数据; 可以更改数据中的值,并且在事务结束之前,行可以在数据集中显示或消失。

简单地说,当您使用此隔离级别,并且作为一个事务的一部分在活动表上执行多个查询时,无法保证在事务的不同部分中返回给您的信息将保持不变。 您可以在一个事务中两次查询相同的数据并获得不同的结果(这可能发生在其他用户在您的事务中更新相同数据的情况下)。 这显然会对依赖数据完整性的应用程序部分产生严重影响。

===============>>#2 票数:6

通常,当您需要对繁忙的表执行大量(或频繁)查询时,提交的读取可能会被来自未通信事务的锁阻塞,但只有当您可以处理不准确的数据时。

例如,在我最近工作的游戏网站上,有一些关于最近游戏的统计数据的摘要显示,这都是基于脏读,对我们来说更重要的是包括然后排除尚未提交的交易数据(无论如何,我们知道很少(如果有的话)交易会退出),我们觉得平均来说数据会更准确。

===============>>#3 票数:0

如果你想立即恢复数据,请使用它,如果它是正确的则不是那么重要
如果数据重要正确或者您正在使用它进行更新,请不要使用

另请参阅sql server 2005中引入的快照隔离

===============>>#4 票数:-1

Thing是你想在提交之前读取数据的时候,我们可以借助set transaction隔离级别读取未提交的数据,数据可能会或者可能不会改变。

我们可以使用查询来读取数据:

Select * from table_name with(nolock) 

这仅适用于读取未提交的隔离级别。

  ask by Seibar translate from so

未解决问题?本站智能推荐: