zoukankan      html  css  js  c++  java
  • 理解事务的4种隔离级别

    事务

    事务是访问数据库的一个操作序列

    事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态

    事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是:

    1、原子性

    即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败,则其他子事务的数据库操作则会被回滚,即数据库回到事务执行前的状态,不会发生状态转换。

    2、一致性

    事务的执行使得数据库从一种正确状态转换成另外一种正确状态。

    3、隔离性。

    在事务正确提交之前,不允许把事务对该数据的改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应该显示给其他事务。

    4、持久性

    事务正确提交之后,其结果将永远保存在数据库之中,即使在事务提交之后有了其他故障,事务的处理结果也会得到保存。

    事务保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。

    事务并发操作带来的问题

    1)丢失更新:   一个事务的更新覆盖了另一个事务的更新。
    2)脏读:          一个事务读取了另一个事务未提交的数据。
    3)不可重复读:一个事务两次读取同一个数据,两次读取的数据不一致。
    4)幻象读:       一个事务两次读取一个范围的记录,两次读取的记录数不一致。

    数据库事务的隔离级别有4种,由低到高分别为未提交读(Read  uncommitted 、已提交读(Read  committed)、可重复读(Repeatable read) 、串行化(Serializable 。

    未提交读: 一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而 且能看到其他事务没有提交的对已有记录的更新。

    已提交读: 一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。

    可重复读: 一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。

    串行化: 一个事务在执行过程中完全看不到其他事务对数据库所做的更新。(事务执行的时候不允许别的事务并发执行。事务串行化执行,事务只能一个接着一个地执行,而不能并发执行)

    事务隔离级别解决的并发问题:
  • 相关阅读:
    C#中静态与非静态方法比较
    Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )
    网络协议概述:物理层、连接层、网络层、传输层、应用层详解
    phpstorm xdebug配置
    eclipse修改内存大小
    Session机制详解
    java把html标签字符转普通字符(反转换成html标签)(摘抄)
    JAVA调用WCF
    RabbitMQ入门与使用篇
    大话程序猿眼里的高并发
  • 原文地址:https://www.cnblogs.com/siyunianhua/p/11796492.html
Copyright © 2011-2022 走看看