Mysql学习笔记(三) 数据库事务总结

文章介绍了MySQL的四种事务隔离级别,包括默认的可重复读级别,以及它们分别解决的并发问题。脏读是指读取未提交数据,不可重复读是数据在事务内发生改变,而幻读则涉及数据量的变化。MVCC(多版本并发控制)机制通过历史版本和readview来实现一致性视图,降低事务冲突,提高并发性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

数据库事务的相关概念及问题学习总结

二、问题点

  1. MySQL事务隔离级别,MySQL的默认隔离级别是什么?
  2. 脏读、幻读、不可重复读?
  3. 可重复读解决了哪些问题?
  4. MVCC 是什么?它的底层原理是什么?

三、分析

3.1 MySQL事务隔离级别,MySQL的默认隔离级别是什么?

MYSQL有四种隔离级别,分别是读未提交,读已提交,可重复读,串行化。
MYSQL的默认隔离级别为RR可重复读。

3.3 可重复读解决了哪些问题?

可重复读解决了脏读,不可重复读的问题。并且在快照读的情况下解决了幻读问题,在当前读的情况下没有解决幻读问题。
原因是在当前读的情况下会更新mvcc一致性视图,读取到事务外的提交记录。

3.2 脏读、幻读、不可重复读?

脏读:一个事物读取到其他事物更改未提交的数据,假若另一个事务回滚,可能会操作不存在的数据
不可重复读:同一个事务内一开始读取到的一批数据后来因为其他事物的提交再次读取发生变化导致不一致
幻读:同一个事务内一开始读取到的数据数量和之后读取到的不一致。

3.3 MVCC 是什么?它的底层原理是什么?

mvcc为多版本并发控制,通过读取历史版本的数据,降低并发事务的冲突,提高并发性能的一种机制。
● 事务版本号
● 表的隐藏列
● undo log
● read view
通过记录事务版本号,和事务的回滚指针到undo log中生成一张当前记录的单向链表,最早的更新为链尾。
read view则是在快照读时判读各个版本的可见性,达到最终的mvcc版本控制,生成一致性视图。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值