事务篇-1

什么是事务?

事务四大特性ACID

事务并发问题

事务隔离级别

事务隔离级别性能

串行化读 < 可重复读RR <读已提交RC<读未提交RU

事务隔离级别安全性

串行化读 >可重复读RR>读已提交RC>读未提交RU

一条Insert 语句的执行流程

insert into t values(1,'刘玄德');

事务底层原理

丢失更新问题

两个Session针对同一数据进行修改操作时会存在丢失更新,这个现象称之为丢失更新问题

如何解决丢失更新问题?

解决方案一:基于锁并发控制LBCC:查询总额的事务对读取数据行加锁,等读取数据结束再释放锁

解决方案二:基于版本并发控制MVCC:查询总额的事务不加锁,但是会读取事务开始时的快照数据

MVCC核心思想:读不加锁,读写不冲突

MVCC概念-什么是MVCC?事务MVCC实现原理

MVCC全称叫多版本并发控制,是RDBMS常用的一种并发控制方法,用来对数据库数据进行并发访问,实现事务。核心思想:读不加锁,读写不冲突。

实现原理:数据快照,不同事务访问数据快照中不同版本的数据

关键要素:Undo日志和ReadView

 事务底层原理-Undo日志

在对数据修改时,InnoDB会产生一定量的Undo日志,如果事务执行失败Rollback了,则利用Undo日志回滚到历史版本

Undo日志还可以解决丢失更新问题
存储位置:系统表空间内的回滚段中

Undo日志分类

Insert Undo日志:是在Insert操作中产生的Undo日志

Update Undo日志:是Update或Delete 操作中产生的Undo日志

Undo 日志如何产生及回收

事务底层原理-什么是ReadView?


ReadView是张存储事务id的列表,主要包含当前系统中有哪些活跃的读写事务id,结合Undo日志的默认字段【trx id】来控制那个版本的Undo日志可被其他事务看见。


m ids:生成ReadView时,当前活跃的事务id列表
m low_limit id:事务id下限,当前活跃事务中最小的事务id

m_up_limit_id:事务id上限,生成ReadView时,应该分配给下一个事务的id值

m_creator_trx id:生成该ReadView的事务的事务id

什么时候生成ReadView?

开启事务之后,在第一次查询(select)时,生成ReadViewRC和RR隔离级别的差异本质是因为Readview的生成时机不同

如何判断可见性?


 


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值