手写实现MySQL的基本功能,涵盖文件系统实现,redo实现,buffer pool实现,undo实现,事务实现,并发控制实现,锁实现,record记录实现,表扫描实现。。。
CHECKPOINT 、START 、COMMIT 、ROLLBACK 、SETINT 、SETSTRING六种日志的实现
一个事务对象包括三个部分:
BufferList:用于管理当前被pin的buffer对象
RecoverMgr:用于事务恢复或者回滚
CocurrentMgt:用于管理并发请求
S锁和X锁
Layout:1.插槽的大小;2.记录中每个字段的名称,类型,长度以及字段在记录中的偏移量
多增加一个字节用于表示这个插槽是否已经被使用。0表示插槽可用,1表示插槽被占用
寻址:记录长度 * 记录所在编号 + 字段偏移量
一个溢出区间装不下,就从溢出空间分配多个区块,通过指针链接在一起形成一个队列.
寻址:引入一个id_table一维数组,元素的标号对应记录的插槽号,元素的值对应记录的起始地址
区块开头放id_table,数据从尾插
把表的记录当做数组来读取,通过挪到一个记录指针来遍历表的记录,它的作用类似于cursor