2008-08-21 39 views
6

我为什么应该或不应该我用脏读:SQL服务器 - 脏读优点和缺点

set transaction isolation level read uncommitted 

在SQL Server?

+2

详细分析此处: [选择READ COMMITTED和REPEATABLE READ可能会返回不正确的结果](http://www2.sqlblog.com/blogs/alexander_kuznetsov/archive/2009/04/10/selects-under-read-承诺和可重复的读取-MAY-返回不正确-results.aspx)在这里: [歪斜彩民的情况下](http://www.simple-talk.com/sql/t-sql-programming /的情况下的最偏斜,合计/) – 2009-07-03 20:44:41

回答

14

被引进MSDN快照隔离:

当这个选项被设置,就可以读取未提交的或脏数据;数据中的值可以更改,行可以在事务结束之前出现或消失在数据集中。

简而言之,当你使用这种隔离级别,而你正在活动的表作为一个事务的一部分执行多个查询,但不保证该信息交易的不同部分内返回你会保持不变。你可以在一个事务内两次查询相同的数据,并得到不同的结果(这可能在一个不同的用户在您的交易之中更新同一数据的情况发生)。这显然会对依赖数据完整性的应用程序部分产生严重影响。

6

通常当你需要做相当大的(或经常)查询忙表,其中承诺读取可能会因锁被阻止来自未提交的事务,但只有当你可以用不准确的数据生活。

作为一个例子,在我最近开发的游戏网站上有一些关于近期游戏的统计数据的总结性显示,这些统计数据都基于脏读,对于我们来说包括然后排除事务数据尚未提交(我们反正很少,如果有的话,交易将回退知道),我们认为平均数据会更准确的方式。

0

使用它,如果你想要把数据传回正确的路程,如果它是正确的
如果你用它

做更新不若如果数据是非常重要的是正确的使用或它不是那么重要也看看已经在SQL Server 2005中

-1

的事情是当你想提交,我们可以设置事务隔离级别的帮助下读取未提交之前做读取数据,该数据可能或可能不会改变。

我们可以通过查询读取数据:

Select * from table_name with(nolock) 

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

+0

请小心,当你链接到第三方网站,因为这将是一个堆栈溢出的垃圾邮件。相关:[如何不成为垃圾邮件发送者](http://stackoverflow.com/help/promotion)。 – 2015-12-27 06:11:23