查看完整视频
评论可见

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

积分观看

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

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

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

¥{{user.role.value}}
专属视频

只允许以下等级用户查看该视频

升级
会员专享

MySQL事务ACID与隔离级别详解

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

我先把这些MySQL的必考点给大家快速过一遍(金九银十备战有用),后续我会重点来讲解MySQL的性能优化!

事务

隐藏内容,您需要满足以下条件方可查看
End

课后作业

这是一个面试官面试事务的常见顺序,从外到里层层剥,就给剥洋葱一样:)

隐藏内容,您需要满足以下条件方可查看
End
MySQL

最全MySQL锁详解:表/行/页锁、共享/排它锁、悲观/乐观锁等

2020-8-27 16:01:37

MySQL

最全MySQL索引与底层实现原理详解

2020-8-25 17:20:35

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

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

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

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

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

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

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

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

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

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

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

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

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

个人中心
今日签到
搜索