美文网首页
数据库事务基础

数据库事务基础

作者: 编码之路从零开始 | 来源:发表于2019-09-26 08:57 被阅读0次

1.事务的特性(ACID)

  1. A(Atomicity)原子性:在一个事务中的操作要么都成功要么都失败。
  2. C(Consistency)连续性:
  3. I(Isolation)隔离性:一个事务不能被另一个事务所影响。
  4. D(Durability)持久性:一个事务被提交之后对数据库的改变是永久性的。

2.事务的隔离级别

商品表
  1. 读未提交(Read uncommitted)


    读未提交
  • 事务1和事务2同时开始,事务2能读取到事务1未提交之前的数据,如果事务1执行失败回滚,那事务2读取到的就是脏数据
  1. 读已提交(Read commited)


    读已提交
  • 事务2只能读取到事务1提交的数据,解决了脏读问题。
  • 事务1和事务2同时开始,事务2查询了数据,事务1对数据进行修改(删除)之后,事务2再次查询数据,两次结果不一致,这就是不可重复读
  1. 可重复读(Repeatable Read)


    可重复读
  • 事务2和事务1同时开始,事务2在事务1更新/删除数据并提交之后,读取到的数据是一致的,解决了不可重复读
  • 事务1和事务2同时开始,事务1首先查找所有数量为30的商品,事务2再此之后插入一条数量为30的商品,事务1再次查找数量为30的商品,两次查询结果不一致。这就是幻读
  1. 串行化(Serializable)


    串行化
  • 事务1和事务2同时启动,事务1查找数量为30的商品,之后事务2插入/删除一条数量为30的商品,但是被阻塞了,事务1再次查找数量为30的商品,并提交事务。事务2才继续执行,解决了幻读问题。

总结

从以上案例看来,数据库事务解决了几个问题

  1. 脏读:一个事务可以读取到另一个事务尚未提交的数据,如果该数据回滚,那么读取的数据就没有意义。
  2. 不可重复读:一个事务在执行期间多次查询同一条数据,但是查询结果不一致。
  3. 幻读:一个事务在执行期间查询多条数据,但是查询结果不一致。

相关文章

  • Spring学习之事务管理基础

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

  • 数据库事务(二)

    数据库事务那些事 这期接着来说数据库事务的小知识,因为MVCC的本身需要很多基础作为基础,准备分享几期基础知识后,...

  • Spring事务-基础-1(数据库事务、事务并发、数据库锁)

    Spring事务-基础-1 01 何为数据库事务 ACID 原子性(Atomic)表示组成一个事务的数据库操作是不...

  • Spring的事务管理

    1.数据库事务基础知识 1.1.何为数据库事务 数据库事务的4个特性 原子性:组成一个事务的多个数据库操作是一个不...

  • 消息中间件实现分布式事务

    理论基础 什么是分布式事务 传统的事务是基于单数据库的本地事务,简单的来说,分布式事务就是实现跨数据库的事务支持 ...

  • [译]事务隔离级别

    原文地址Transaction Isolation Levels 事务隔离级别 事务隔离是数据库基础能力之一。隔离...

  • spring|事务底层原理分析

    spring本身没有事务,spring事务是在数据库事务的基础上进行封装拓展,spring支持声明式事务、编程式事...

  • 从事务出发学习InnoDB

    从事务出发学习InnoDB 零、前言 提起数据库基础,首先上来就是数据库事务ACID、隔离级别,理论吹得溜溜的,那...

  • Spring事务_基础2(事务的隔离级别)

    Spring事务_基础2(事务的隔离级别)## 事务的隔离级别### 尽管数据库为用户提供了锁的DML操作方式,但...

  • 数据库系列(1/21)

    1.数据库的基础知识2.数据库的基础操作3.数据库的事务4.SQL语言5.SQL-Oracle6.SQL-MySQ...

网友评论

      本文标题:数据库事务基础

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