zoukankan      html  css  js  c++  java
  • 事务传播机制 与 隔离级别

    (一)事务传播机制 7种 

        Required (默认):

            如果当前没有事务,就新建一个事务,如果已存在一个事务中

            加入到这个事务中,这是最常见的选择。

        Supports :

            支持当前事务,如果没有当前事务,就以非事务方法执行。

        Mandatory : 

            中文翻译为强制,支持使用当前事务,如果当前事务不存在,则抛出Exception。

        Requies_new : 

            创建一个新事务,如果当前事务存在,把当前事务挂起。

        Not_Supported : 

            无事务执行,如果当前事务存在,把当前事务挂起。

        Never :

             无事务执行,如果当前有事务则抛出Exception。

        Nested : 

            嵌套事务,如果当前事务存在,那么在嵌套的事务中执行。

            如果当前事务不存在,则表现跟REQUIRED一样。

        注解配置时如:@Transactional(propagation=Propagation.REQUIRED) 

        7种事务举例子可看此篇博客 感觉不错: https://www.cnblogs.com/myseries/p/10800430.html


     (二)事务隔离级别

    事务隔离级别 脏读 不可重复读 幻读
    读未提交(Read-Uncommitted)
    不可重复读(Read-Committed)
    可重复读(Repeatable-Read)
    串行化(Serializable)

       注解配置时如:@Transactional(isolation = Isolation.READ_UNCOMMITTED)

       Mysql 默认 可重复读   ---repeatable-read

      事务的并发问题

        1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

        2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,

           对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。

        3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,

              但是系统管理员B就在这个时候插入了一条具体分数的记录,

            当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

        小结不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。

                  解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表


            回村

        

  • 相关阅读:
    SQLServer基本函数
    XP极限编程
    中日完全相同的四字成语
    SQL Server和Oracle的常用函数对比
    HTTP请求头概述
    XP(Extreme Programming)
    查看汉字各种编码值
    XP极限编程(中英文对照)
    http 头信息详解
    ASP内置对象详解
  • 原文地址:https://www.cnblogs.com/misscai/p/15002996.html
Copyright © 2011-2022 走看看