查看完整视频
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

积分观看

您支付积分,方可查看完整视频

{{user.role.value}}
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频选集

MySQL事务ACID与隔离级别详解

  • 课程笔记
  • 问答交流

MySQL索引 与事务都是MySQL中比较重点的知识,尤其是在面试中出现的频率特别高,基本属于必问必考的环节。

为了助大家掌握好事务与隔离级别,这节课我会重点讲解以下7点:

1.事务
2.事务的ACID
3.事务带来的并发问题
4.脏读
5.不可重复读
6.幻读
7.事务的隔离级别

事务

MySQL事务ACID与隔离级别详解-mikechen的互联网架构师之路

数据库事务,简称:事务

事务就是要保证一组数据库操作(一组原子性的SQL集合),要么全部成功,要么全部失

MySQL 中,事务支持是在引擎层实现:InnoDB

事务的ACID

MySQL事务ACID与隔离级别详解-mikechen的互联网架构师之路
1.原子性(Atomicity)
所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节

2.一致性(Correspondence)
数据必须保证从一种一致性的状态转换为另一种一致性状态

3.隔离性(Isolation)
指当多个用户并发操作数据库时,数据库为每一个用户开启不同的事务,这些事务之间相互不干扰,相互隔离

4.持久性(Durability)
事务一旦commit,则数据就会保存下来,即使提交完之后系统崩溃,数据也不会丢失

事务带来的并发问题

 

交流专区
  1. 路正银

    1.谈谈事务的4大特性?(一般都是剥洋葱)
    原子性,事务是数据库的逻辑工作单位,不可分割,事务中包含的各个操作要么都做,要么都不做
    一致性,事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
    隔离性,一个事务的执行不能被其他事务干扰
    持续性,也称持久性,保证事务对数据库的修改是持久有效的,即使发生系统故障, 也不应该丢失。

    2.重点谈谈每一种特性在MySQL底层实现是如来实现解决的?
    原子性的实现:回滚(undo日志)、未刷盘数据提交(redo日志)
    持久性的实现:redo_log日志、binlog日志
    隔离性的实现:innondb的隔离级别
    一致性的实现:一致性是通过上面三个特性来保证的,包括原子性、隔离性、持久性

    3.紧接着,事务在并发下的有哪些问题?
    脏读:一个事务读到另一个事务未提交的更新数据
    不可重复读:一个事务两次读同一行数据,可是这两次读到的数据不一样
    幻读:一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行

    4.如何来解决这些问题?
    事务隔离级别
    读未提交:允许脏读,不隔离事务
    读已提交:不允许脏读,允许可不重复读
    可重复读:不允许不可重复读,但可能出现幻读
    串行化:所有增删改查串行执行

  2. mikechen

    ✗棒棒的✗ ACID4大特性的底层实现这个是加分项,脏读、不可重复读、幻读、隔离级别这些都属于必考项,特别是隔离级别涉及到的锁机制以及还有一个MVCC的实现

  3. 李鸿翼

    1.谈谈事务的4大特性?
    原子性:一个事务操作,要么都成功要么都失败
    持久性:事务一旦提交,就是永久保存的
    隔离性:不同事务的操作相互不影响
    一致性:事务从一个状态可以正确转化为下一个一致的状态,并且不影响数据库完整性约束。

    2.重点谈谈每一种特性在MySQL底层实现是如来实现解决的?
    原子性:undo log 实现回滚

    持久性:redo log ,故障后恢复

    隔离性:隔离级别、mvcc、锁

    一致性:原子性、持久性和隔离性,如果这些特性无法保证,事务的一致性也无法保证
    数据库本身一些约束机制提供保障
    应用层业务自己保障

    3.紧接着,事务在并发下的有哪些问题?
    脏写 :两个事务先后写一行数据,事务B还没提交,事务A回滚,把B修改的值弄丢了
    脏读 :事务A读到了事务B未提交的数据
    不可重复读 :事务A两次读数据不一样
    幻读:事务A查询看到之前查询没查到的值

    4.如何来解决这些问题?

    事务隔离级别、mvcc机制、锁机制

搜索