• 事务隔离级别区分,未提交读,提交读,可重复读


    事务隔离超通俗好懂的的讲解

    按照隔离的级别由低到高,越高的隔离,效率越差

      0)、DEFAULT 默认隔离级别,由数据库的数据隔离级别确定隔离级别
           1)、READ_UNCOMMIYTTED 都未提交的 级别最低
                 允许别的事务,去读取这个事务为提交之前的数据
                 缺点:可能会造成脏读、幻读、不可重复读。
                 例子讲解:店家对1000元商品进行降价500处理,数据更改,但未提交事务;
                 然后你查到降价将货物并提交订单; 可是商家由于操作异常,数据回滚,返回原价格1000;
                 这样,在店家那边是没有操作成功的,可是在你这里却得到了降价货物订单。
                 可理解为:外层更改价格的事务拉长执行,在执行之中出现提交订单的事情,你读了别人正在处理的数据。
                  
          2)、READ_COMMITTED 读已提交级别    
                 案例讲解:你原本查询商品价格为500,第二次为了证明真的降价了再查却发现并没有降价。

       缺点:两次读的都是真的(不脏读) 可是却存在不可重复
                        可以理解为: 你两次查询为一次事务,将此事务拉长;
                        在此事务中间,有更改价格的操作,可能执行了多次,可是在这个多次执行修改中你无法插进去查一次;
                        只能等他更改完(中间事务结束)才能进行下一次查询,你读的期间别人插进来对数据操作了
           两件事务出现了交集。

      3)、REPEATABLE_READ 可重复读    事务是多次读取,得到的相同的值。

       缺点: 会出现幻读
                      即该事务执行期间,不允许其他事务对该事务数据进行操作,保证该事物中多次对数据的查询结果一致。
                 就是你多次查询的这个事务包含多条数据,为了保证读取的一致性,可重复读(REPEATABLE_READ)将使用的数据锁起来不让别人用。
                      
           4)、SERIALIZABLE 串行化读 将事务排序,逐个执行事务提交了之后才会继续执行下一个事务。

       缺点:都隔离开了,效率慢  
                     就是上面的可重复读(REPEATABLE_READ)是将使用的数据范围锁起来不让别人用,而这里是将涉及数据的表全都锁起来,不允许别人操作。
                     这个事务的执行中,别的事务连在旁边看的机会都没有,完全不会有影响,你读的时候别人看不到,隔离开,单独执行
          整个事务排队执行
     
    本文为个人学习总结,可能会存在一些理解错误,或误差,还请路过各位指点批评。
                  

  • 相关阅读:
    Javascript中的sort()语法浅谈
    Javascript变量提升解释
    ES5中新增的Array方法详细说明
    Codewars-Javascript训练手册:正则表达式(Regular Expressions)
    Codewars-Javascript训练手册:Date 对象
    JavaScript与Java的关系(联系与区别)
    《Javascript秘密花园》学习笔记(终)
    (转)深入理解最强桌面地图控件GMAP.NET ---高德地图
    (转)深入理解最强桌面地图控件GMAP.NET --- 原理篇
    (转)深入理解最强桌面地图控件GMAP.NET --- SOSO地图
  • 原文地址:https://www.cnblogs.com/Mr-Dawei/p/7460909.html
Copyright © 2020-2023  润新知