事务的隔离级别


       之前在百度百科、CSDN、博客园等各种资料上找关于事务隔离级别之间的关系。发现都不是很完整!
       经过我一晚上折腾电脑来实验以及自己对这些隔离级别以及机制的理解,确定了如下隔离级别的真实关系(实验环境是SQL SERVER2005,或许不同环境有出入吧)

       总的原则:任何情况下一个事务写某行的时候另一个事务都不能写这些行

                         任何情况下一个事务读某行的时候另一个事务都可以读这些行

         

Read uncommited:任何情况下都可以读取任何信息,该事务读过的行允许其它事务进行写操作。

 

Read commited:读取某行时该行必须已经提交。(如果另一个事务是serilizable,只要serilizable的事务对该表进行写操作,哪怕serilizable事务所写的行与该行无关该事务也无法读取)该事务读过的行允许其它事务进行写操作。

 

Repeatable read:读取某行时该行必须已经提交。(如果另一个事务是serilizable,只要serilizable的事务对该表进行写操作,哪怕serilizable事务所写的行与该行无关该事务也无法读取。)该事务读取的行在事务结束前(包括提交和回滚)禁止任何其它对这些行进行的写操作(哪怕写操作不是在某个事务中)。

 

Serilizable:该事务只要对某张表进行读取,这张表在事务结束前(包括提交和回滚)就会无法进行除该事务外的任何其它写操作(哪怕写操作与读取的行无关,哪怕写操作不是在某个事务中)。该事务只要对某张表进行写操作,这张表在事务结束前(包括提交和回滚)read commited和read uncommited的事务都无法对该表进行读操作(哪怕读取的行与写的行无关)

你可能感兴趣的:(数据库相关)