zoukankan      html  css  js  c++  java
  • spring事务

    spring事务:
    什么是事务:
    数据库对事务的支持

    事务特性(4种):
    原子性 (atomicity):强调事务的不可分割.
    一致性 (consistency):事务的执行的前后数据的完整性保持一致.,同时成功或失败
    隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰,单独一个空间进行操作
    持久性(durability) :事务一旦结束,数据就持久到数据库,持久化操作

    隔离级别

    脏读 :一个事务读到了另一个事务的未提交的数据,事务A往B工资卡上开启事务打了10000元,事务B查询发现都多打了一千,以为涨工资了,银行A发现打错了,减去一千9000,提交了事务。解决方案,改为read committed
    不可重复读 :一个事务读到了另一个事务已经提交的 update 的数据导致多次查询结果不一致,update操作一个事务范围内两个相同的查询却返回了不同数据,

    事务B查询卡上有10000,事务A修改了金额9000提交了事务,事务B查询金额只有9000,事务B发现与原来的10000差了一千,解决方案,Repeatable read
    幻读 :一个事务读到了另一个事务已经提交的 insert 的数据导致多次查询结果不一致,insert操作,事务B查询到卡上有9000,事务c欠了B1000,s事务c往B卡上打了1000提交了事务,事务B查询发现卡上又多了1000,

    解决·方案:Serializable

    解决读问题: 设置事务隔离级别(5种)

    DEFAULT 使用数据库本身使用的隔离级别
    ORACLE(读已提交) MySQL(可重复读)
    READ_UNCOMITTED 读未提交(脏读)最低的隔离级别,一切皆有可能。
    READ_COMMITED 读已提交,ORACLE默认隔离级别,有幻读以及不可重复读风险。
    REPEATABLE_READ 可重复读,解决不可重复读的隔离级别,但还是有幻读风险。
    SERLALIZABLE 串行化,最高的事务隔离级别,不管多少事务,挨个运行完一个事务的所有子事务之后才可以执行另外一个事务里面的所有子事务,这样就解决了脏读、不可重复读和幻读的问题了


    Mysql 默认:可重复读
    Oracle 默认:读已提交

    在这里插入图片描述

    read uncommited:是最低的事务隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
    read commited:保证一个事物提交后才能被另外一个事务读取。另外一个事务不能读取该事物未提交的数据。
    repeatable read:这种事务隔离级别可以防止脏读,不可重复读。但是可能会出现幻象读。它除了保证一个事务不能被另外一个事务读取未提交的数据之外还避免了以下情况产生(不可重复读)。
    serializable:这是花费最高代价但最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读之外,还避免了幻象读(避免三种)。

    事务的传播行为

    propagtion_XXX :事务的传播行为7种

      • 保证同一个事务中
        propagtion_required: 支持当前事务,如果不存在 就新建一个(默认)
        propagtion_supports: 支持当前事务,如果不存在,就不使用事务
        propagtion_mandatory: 支持当前事务,如果不存在,抛出异常

      • 保证没有在同一个事务中
        propagtion_requires_new: 如果有事务存在,挂起当前事务,创建一个新的事务
        propagtion_not_supported: 以非事务方式运行,如果有事务存在,挂起当前事务
        propagtion_never: 以非事务方式运行,如果有事务存在,抛出异常
        propagtion_nested: 如果当前事务存在,则嵌套事务执行

  • 相关阅读:
    任务08——第一次半月学习总结
    任务5
    任务4
    任务3
    任务2
    mission 01
    HTML-CSS-JS Prettify报错Node.js was not found
    **1279
    UVa 10735
    UVa 1515
  • 原文地址:https://www.cnblogs.com/lqh969696/p/14024461.html
Copyright © 2011-2022 走看看