摘要:
InnoDB Buffer Pool InnoDB Buffer Pool是以数据页为粒度管理数据的。解压页的大小是16KB,这些页由页的控制体和页构成,存储着用户数据,索引,锁的数据,页的控制体存储着数据页的状态信息。InnoDB对数据文件读取的最小粒度也是页。InnoDB提供了数据压缩功能。如果 阅读全文
摘要:
Percolator是什么 Percolator模型是谷歌在2012年提出的用于优化在Bigtable上存储大规模的网页索引信息的更新提出的基于2PC思想的分布式事务模型,是对2PC模式的优化。Perco-lator主要是用在对延迟要求不高的大规模数据集上的分布式事务模型,Percolator使用A 阅读全文
摘要:
InnoDB Buffer Pool 数据页 InnoDB中,数据管理的最小单位为页,默认是16KB,页中除了存储用户数据,还可以存储控制信息的数据。InnoDB IO子系统的读写最小单位也是页。如果对表进行了压缩,则对应的数据页称为压缩页,如果需要从压缩页中读取数据,则压缩页需 阅读全文
摘要:
lab4是实现一个基于Percolator模型的分布式事务。 lab4a lab4a是介绍三种Column Family的作用和协作,分别包括CfDefault, CfWrite, CfLock。 CfDefault是暂存实际数据的cf, CfWrite是写入时间的记录,CfLock是该数据的锁。数 阅读全文
摘要:
lab2c lab2c是增加Raft状态机对快照的支持,因为日志不可能无限增长,所以在增长到一定程度时,我们需要通过压缩成快照的方式来把这个Index之前的所有日志压缩成一个最后的变更状态。 Raft状态机修改 引入日志之后,RaftLog的firstIndex不再是l.entries的首元素的In 阅读全文
摘要:
lab2b 集群视图下的日志的复制和状态的写入。 与lab2a相比,lab2b需要阅读大量代码了解整个集群是怎么工作的。首先,我们要对整个集群有个大概的了解(可以看文档)。 node和store看作等价的就行 可以看到,一个node上面可以跑多个Raft实例(叫做Peer/RaftGroup),每个 阅读全文
摘要:
TinyKV lab2aa TinyKV lab2aa是按照论文实现一个Raft状态机的基本框架,主要是实现raft.go和log.go的函数。Raft的状态有三种:跟随者,候选者,领导者。状态的变更主要通过消息传递完成。为了方便后面的统计,我在Raft结构体增加一些变量 agreeCnt int 阅读全文