数据库事务的底层 实现

实现事务功能的三个技术: 日志文件(redo log)和(undo  log),锁技术MVCC


日志redo  log和undo log读写锁MVCC

日志文件redo  log(重做日志):  有两部分组成,redo log buffer 和redo log ,用来恢复数据用的,用来保障已经提交数据的的持久化

             undo  log(回滚日志): 是用来回滚数据的,主要是完成数据未提交事务的原子性;  

锁+MVCC实现了隔离性

锁技术 : 读写锁,记录锁,间隙锁,读锁(因为是可以多个一起读所以是共享锁)

                  写锁(再写的过程中避免别人读到脏数据,排他锁)

隔离级别:读未提交:是因为多并发时侯,读不加锁,写加锁,所以读取过程中写入了数据就有可能造成脏读。

                    读已提交(视图):与MVCC机制有关,查过程中另一个线程执行更新操作,版本不同,每一次select过程中会查询                                                            一个不同的版本号,造成了不可重复读。

                     不可重复读(一致性视图):两种实现方式1.  读写锁     2.MVCC机制+写锁: 多次读取只读取一个版本。

trx_idroll_ptr隐藏id

MVCC(InnoDB): 多版本并发控制 :  每行后面隐藏了3列数据,一个保存事务id,一个保存了回滚数据记录,一个隐藏id

通过记录锁和间隙锁阻止其他事务在锁定时插入数据,防止幻读。

最后通过隔离性+原子性+持久性完成数据一致性的实现

 不可重复度和读已提交的实现区别

 读已提交是在每一次select是创建一个当前版本的视图。

不可重复读是每次创建一个以第一次select语句出现的时候的一个版本,每次查询版本一样。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值