`

数据库的一些概念

阅读更多

3:事务隔离级别:

   数据库并发存在的三种问题:

         幻象读取:事务T1读取一条指定的where字句所返回的结果集。然后事务T2新插入一条记录,这行记录恰好可以满足该条件,当T1第二次读取的时候就查 询除了这条数据。这个新行就称为“幻象”,因为对于T1来说这行就像是突然出现的。

        不可重复读:事务T1读取一行记录,紧接着事务T2修改了T1刚才读取的那行记录。T1再次读取的时候,结果就不同了。该类现象叫做不可重复读。

        脏读:事务T1新增了一条数据,事务T2读取更新后的数据。然后T1执行回滚,取消了该操作,T2读取的行就成为了无效的数据(脏数据)。

    对于上述三种情况,sql标准定义了以下几种事务隔离级别,按照隔离性级别从低到高:

     read uncommitted :读取未提交的数据。 幻影读,不可重复读,脏读都允许。

     read committed : 读取提交的数据。脏读不允许,幻影读,不可重复读允许。

     repeatable read :允许重复读(重复读是安全的,就是不可重复读)。允许幻影读,但是不允许不可重复读和脏读。

     serializable : 序列化读(意味着一个一个来)。不允许幻影读,不可重复读和脏读。

 Oracle数据库支持read committed 和serializable两种事务隔离级别,不支持rean uncommitted和repeatable read.

 虽然 sql标准定义的默认事务级别是serializable,但是Oracle默认的是read committed.

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics