美文网首页
关于数据库事务

关于数据库事务

作者: 一叶舟遥 | 来源:发表于2019-07-30 13:46 被阅读0次

什么是事务

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列读或写操作。其目的是提供三种方法:失败恢复到正常状态的方法、保持一致性的方法、并发操作之间保持隔离的方法,通俗的说是那一系列操作要么完全地执行,要么完全地不执行。

事务的ACID特性

  • A:原子性(Actomicity),该系列操作作为一个整体,不能被分割,要么全执行,要么都不执行;
  • C:一致性(Consistency),确保数据从一种状态变为另一种状态;
  • I:隔离性(Isolation),多个事务并发执行时,彼此之间互不影响;
  • D:持久性(Durability),当事务提交成功后,对数据的修改要永久保存在数据库中。

并发异常类型

  • 回滚丢失: 由于一个事务的失败回滚导致另一个事务的更新丢失了;
  • 覆盖丢失: 更新被其他事务给覆盖了;
  • 脏读: 一个事务读取了另一个事务修改未提交的数据;
  • 不可重复读: 一个事务对同一行数据执行了两次或更多次查询,但是却得到了不同的结果;
  • 幻读: 与不可重复读相似,不过针对的是数据的数量,当一个事务查询记录两次或多次时,得到的数量不一致。

事务隔离级别

  • 读未提交: 一个事务的更新语句没有提交,但是别的事务可以读到这个改变;

  • 读已提交: 一个事务只能看到其他事务已经提交的更新、看不到未提交的更新,消除了脏读和回滚丢失,Oracle/Sqlserver就是此类;

  • 可重复读: 一个事务中进行两次或多次同样的对于数据内容的查询,得到的结果是一样的,但不保证对于数据条数的查询是一样的,只要存在读改行数据就禁止写,消除了不可重复读和覆盖丢失。

  • 串行化: 事务执行不允许其他事务操作,只要存在读就禁止写,但可以同时读,消除了幻读,但是效率太低。

    隔离级别 回滚丢失 脏读 不可重复读 覆盖丢失 幻读
    读未提交
    读已提交
    可重复读
    串行化

相关文章

  • Django之数据库事务编程

    在了解 Django 数据库事务编程前有必要先了解下数据库事务。 数据库事务(transaction) 数据库事务...

  • 数据库笔记

    数据库 数据库⭐MySQL 默认存储引擎InnoDB(事务性存储引擎)一、事务 数据库事务? 数据库事务有什么作用...

  • 数据库事务简介(一)--- 所谓事务

    事务的概念 数据库事务简介(一)--- 所谓事务数据库事务简介(二)--- 故障恢复(未完成)数据库事务简介(三)...

  • 数据库事务--事务隔离级别

    数据库里关于事务的并发问题,也叫做竞态条件(race condition)。它是描述并发事务中,一个事务需要读取另...

  • 关于数据库事务

    什么是事务 事务的ACID特性 A:原子性(Actomicity),该系列操作作为一个整体,不能被分割,要么全执行...

  • 关于数据库事务

    什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 转账是最经典也常被拿出来说的例子。假如小明要给小...

  • Spring学习之事务管理基础

    Spring学习之事务管理基础 数据库事务相关概念 事务的定义 事务,一般指的是数据库事务,是指数据库操作的时候,...

  • 事务及事务隔离级别

    事务及事务隔离级别 什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务...

  • 搞懂Redis(四)-Redis事务

    事务本质:一组命令的集合 数据库事务与Redis事务 数据库事务数据库事务通过ACID(原子性.一致性.隔离性.持...

  • SpringBoot 数据库事务

    SpringBoot 数据库事务 事务: 数据库事务是 访问并可能更新 数据库中各种数据项的一个程序执行单元 事务...

网友评论

      本文标题:关于数据库事务

      本文链接:https://www.haomeiwen.com/subject/khtnrctx.html