[后端与RDBMS核心技术3|青训营笔记]

61 阅读2分钟

这是我参与[第五届青训营]笔记创作活动的第13天 本文主要想对课堂上学的一些内容进行总结整理。今天学习的是关系型数据的核心技术中的事务引擎及其分析。

一、本堂课重点内容

  1. 事务引擎

二、详细知识点介绍

事务引擎

Atomicity与Undo Log

mysql中数据状态的回退通过Undo日志实现。Undo日志是一种逻辑日志,记录了数据的增量变化。利用Undo日志进行事务回滚,可以保证事务的原子性。同时实现了多版本并发控制(MVCC),解决读写冲突和一致性读的问题。

IsoIation与锁

事务一致性主要通过锁的机制实现。读数据的时候通过加共享锁,写数据的时候通过加互斥锁,一边读数据一边写数据则要通过MVCC

MVCC:
读写互补阻塞
降低死锁概率
实现一致性读

Undo日志在MVCC中:
数据间通过roll ptr形成链表,读的时候可以先读老版本数据,实现互不影响

Durability与Redo Log

事务结束后对数据的永久的保存可以通过以下方式实现

1.事务提交前页面写盘
但这种情况会出现随机IO,对于HDD这种磁盘随机访问能力会比较差,所以使用事务提交前页面写盘进行数据的永久保存,随机访问的代价会比较大。同时会出现写放大的问题,从最小的管理单元-一个页(16kb),本来只需要写十几个字节,现在可能要写16kb
2.WAL(Write-ahead logging)
redo log是物理日志,记录的是页面的变化,它的作用是保证事务持久化。如果数据写入磁盘前发生故障,重启Mysql后会根据redo log重做。这样就实现了数据的永久的保存