• 数据库事务隔离级别


    事务及其四大特性:

    事务(Transaction):

      访问并可能更新数据库中各种数据项的一个程序执行单元(unit),

      它通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起。

      当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,更改无效。

    四大特性:

    数据库的事务隔离级别有四种: 读未提交、读已提交、可重复读、序列化

    不同的隔离级别下会产生脏读、幻读、不可重复读等相关问题,因此在选择隔离级别的时候要根据应用场景来决定,使用合适的隔离级别。


    ​ 各种隔离级别和数据库异常情况对应情况如下:

      |          隔离级别          |          脏读         |      不可重复读        |      幻读      |
    
      |    READ-UNCOMMITTED      |           √          |           √           |       √       |
    
      |      READ-COMMITTED      |           ×          |           √           |       √       |
    
      |     REPEATABLE-READ      |           ×          |           ×           |       √       |
    
      |       SERIALIZABLE       |           ×          |           ×           |       ×       |      
     MySQL数据库为我们提供的四种隔离级别:

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

    事务的修改,即使没有提交,对其他事务也都是可见的。事务能够读取未提交的数据,这种情况称为脏读

                       

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

    事务读取已提交的数据,大多数数据库的默认隔离级别。当一个事务在执行过程中,数据被另外一个事务修改,
    造成本次事务前后读取的信息不一样,这种情况称为不可重复读

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

    这个级别是MySQL的默认隔离级别,它解决了脏读的问题,同时也保证了同一个事务多次读取同样的
    记录是一致的,但这个级别还是会出现幻读的情况。幻读是指当一个事务A读取某一个范围的数据时,
    另一个事务B在这个范围插入行,A事务再次读取这个范围的数据时,会产生幻读

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

     最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能
      产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读

    事务隔离机制的实现基于锁机制和并发调度。其中并发调度使用的是MVVC(多版本并发控制),通过保存修改的旧版本信息来支持

    并发一致性读和回滚等特性。

    因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是READ-COMMITTED(读取提交内容),

    但InnoDB 存储引擎默认使用 **REPEATABLE-READ(可重读)**并不会有任何性能损失。

    在Oracle数据库中,只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,其中默认的为Read committed级别。

  • 相关阅读:
    win10开机自启脚本
    centos7安装redis
    oracle安装
    Python进程和线程实例详解
    sonar+postgresql
    centos7更换下载源
    Python强大的日志模块logging
    centos7切换图形界面
    centos7安装mysql5.7
    Python正则表达式大全
  • 原文地址:https://www.cnblogs.com/lifan12589/p/14785138.html
Copyright © 2020-2023  润新知