简单来说:
ReadCommitted:只读已提交的数据,遇到未提交的事务型数据时,则一直等待。
ReadUnCommitted:可以读未提交的数据。
做个简单的测试,使用Read Committed,先开一个事务,并等待10秒,代码如下:
SET TRANSACTION ISOLATION LEVEL read COMMITTED; BEGIN TRAN ; PRINT '开始' SELECT * FROM dbo.article INSERT INTO dbo.article ( title, content ) VALUES ( N'8', -- title - nvarchar(50) N'' -- content - nchar(10) ) waitfor delay '00:00:10' --等待10秒 COMMIT TRAN;
然后继续用Read Commit开另一个事务,执行上面相同的代码,但移除等待10秒的代码,发现执行查询一直处于加载中,直到前面的执行好了,才执行成功;而将上面代码换成Read UnCommitted,则可以马上执行成功;