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

    1、事务的特性(ACID):

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

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

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

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

    2、事务的隔离级别:

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

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

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

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

        

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

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

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

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

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

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

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

  • 相关阅读:
    MongoDB之Limit及Skip方法
    MongoDB之$type操作符
    MongoDB之条件操作符
    MongoDB之文档的增删改查
    MongoDB之集合的创建与删除
    MongoDB之数据库的创建及删除
    MongoDB之术语解析
    很少用的U盘,今天居然无法打开(插入盘后能看到盘符但是无法打开的问题)
    IDEA安装后必须设置的选项
    IDEA2020离线更新迭代小版本
  • 原文地址:https://www.cnblogs.com/xiaofeng-fu/p/12112070.html
Copyright © 2011-2022 走看看