zoukankan      html  css  js  c++  java
  • 事务的四大特性和隔离级别

    1、事务的特性(ACID):

         原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。

        一致性(Consistency):执行事务前后,必须是所有的数据都保持一致状态。

         隔离性(Isolation):并发事务执行之间无影响,在一个事务内部的操作对其他事务是不产生影响,这需要事务隔离级别来指定隔离性。

        持久性(Durability):一旦事务完成,数据库的改变必须是持久化的。

    2、事务的隔离级别:

       为什么会出现事务的隔离级别呢:因为在企业级应用中(高并发的情况下),多用户访问数据库是常见的场景,这就是所谓的事务的并发,事务与事务之间可能产生的影响,事务并发所可能存在的问题:

         脏读:针对未提交数据)如果一个事务中对数据进行了更新,但事务还没有提交,另一个事务可以“看到”该事务没有提交的更新结果,这样造成的问题就是,如果    第 一 个事务回滚,那么,第二个事务在此之前所“看到”的数据就是一笔脏数据。

        不可重复读:针对其他提交前后,读取数据本身的对比)一个事务两次读同一行数据,可是这两次读到的数据不一样。不可重复读取是指同一个事务在整个事务过    程中 对同一笔数据进行读取,每次读取结果都不同。如果事务1在事务2的更新操作之前读取一次数据,在事务2的更新操作之后再读取同一笔数据一                                次,两 次结果是不同的。

        幻读:针对其他提交前后,读取数据条数的对比) 一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行。

        

       丢失更新:撤消一个事务时,把其它事务已提交的更新的数据覆盖了。

       不可重复都和幻读主要的区别是:前者注重的是数据修改,后者是数据添加。

      针对并发事务出现的问题,隔离级别就是为了防止这样的事情发生,根据业务的场景而定:

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

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

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

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

  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/xiaofeng-fu/p/12112070.html
Copyright © 2011-2022 走看看