zoukankan      html  css  js  c++  java
  • Spring-事务

    事务:同生共死,一起成功或一起回滚

      1 四个特性:

        原子性:都要确保不可再分的最小单元

        一致性:指的是结果要么都成功提交,要么都回滚,一致的

        持久性:事务完成后,会永久的保存到数据库,而不是说你今天有,明天就没了

        隔离性:多个事务之间互不影响

      2 事物的三个问题:

        脏读:一个事务读取到另一个事务未提交的更新数据。

        幻读也叫虚读:一个事务执行两次查询,第二次结果集包含第一次中没有或某些行已经被删除的数据,造成两次结果不一致,只是另一个事务在这两次查询中间插入或删除了数据造成的。

        不可重复读:一个事务两次读取同一行的数据,结果得到不同状态的结果,中间正好另一个事务更新了该数据,两次结果相异,不可被信任。

      3   事物的四个隔离级别:解决上面的几个问题 

        Read committed (读已提交):可避免脏读的发生。

        Read uncommitted (读未提交):最低级别,任何情况都无法保证。

         Repeatable read (可重复读):可避免脏读、不可重复读的发生。

         Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

        其中Sql Server和Oracle默认隔离级别是读已提交,mysql默认隔离级别是可重复读,他们隔离级别不同,性能也不同,随然串行化避免的问题最多,但是性能太差,大多数时候要根据实际业务进行取舍

      4 事物的七个传播行为: 

         PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

         PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘

         PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

         PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

        PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

        PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

         PROPAGATION_NESTED:果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

       5 查看及修改事务

        1、MySQL    

                   2.oracle

        3.SQLServer

  • 相关阅读:
    xcodebuild changed some of the values
    ar和nm命令的使用(转载)
    POJ 3678 Katu Puzzle (2SAT)
    ZOJ 3664 Split the Rectangle 第37届ACM/ICPC长春赛区现场赛 J 题(模拟建树,暴力 求LCA)
    HDU 4115 Eliminate the Conflict (2SAT)
    ZOJ 3665 Yukari's Birthday 第37届ACM/ICPC长春赛区现场赛K题 (水题,枚举,二分)
    ZOJ 3662 Math Magic 第37届ACM/ICPC长春赛区H题(DP)
    【原创】2012ACM长春赛区现场赛总结
    ZOJ 3656 Bit Magic 第37届ACM/ICPC长春赛区现场赛B题 (2SAT)
    ZOJ 3657 The Little Girl who Picks Mushrooms 第37届ACM/ICPC长春赛区现场赛C题(水题)
  • 原文地址:https://www.cnblogs.com/buai/p/8588187.html
Copyright © 2011-2022 走看看