事务传播机制 事务隔离级别

本文介绍了事务的7种传播机制,包括EREQUIRED、MANDATORY、REQUIRES_NEW、NESTED等,并强调了NESTED事务的特殊性和慎用原则。同时,概述了事务的5个隔离级别,如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE,解释了脏读、不可重复读和幻读的概念,帮助读者理解不同隔离级别带来的影响。
摘要由CSDN通过智能技术生成

一:事务传播机制一共7种,可分为两类。
这里写图片描述

  • 1.需要事务
    1.1-EREQUIRED(默认值):如果没有事务,就打开一个事务。如果事务已经打开,则共用这个事务
    1.2-MANDATORY:如果没有事务,不会打开新的事务,会报异常。如果事务已经打开,则共用这个事务
    1.3-REQUIRES_NEW:如果没有事务,就打开一个事务。如果事务已经打开,则将正在运行的事务挂起,该事务先执行(优先级高于已经打开的事务)。
    1.4-NESTED:涉及嵌套事务。如下图,如果事务B中propagation=EREQUIRED/MANDATORY,则共用事务;如果propagation=REQUIRES_NEW,则事务B先执行。嵌套事务慎用,和数据库事务处理机制有关。
    这里写图片描述
  • 2.不需要事务
    2.1- SUPPORTS’没有事务,不会打开事务,照常执行。有事务打开,就跟事务一起,照常执行。
    2.2-NEVER:不要事务,有事务打开就报错。
    2.3-NOT_SUPPORTED:不需要事务,但是如果有事务打开,则将该事务挂机,先执行自己(优先级高)。

  • 二:事务隔离级别:下面是5中事务隔离级别这里写图片描述

1—DEFAULT(默认值):每个数据库的默认值不一样oracle/sqlsever:READ_COMMITTED;mysql:REPEATABLE_READ。
2—READ_UNCOMMITTED:未提交读。查询速度快,可能会有脏数据。使用于数据完整性不是很严格的场合。
3—READ_COMMITTED:提交读。隔离级别最低要求,可避免脏读的发生。可能出现不可重复读,幻读。
4—REPEATABLE_READ:可重复读。可避免脏读、不可重复读的发生,可能出现幻读。
5.SERIALIZABLE:串行读。安全,速度慢。可避免脏读、不可重复读、幻读的发生。


脏读:是指在一个事务处理过程里读取了另一个未提交的事务中的数据
不可重复读:是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
幻读:和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值