7 TableCache
这章的内容比较简单,篇幅也不长。
7.1 TableCache简介
TableCache缓存的是Table对象,每个DB一个,它内部使用一个LRUCache缓存所有的table对象,实际上其内容是文件编号{file number, TableAndFile*}。TableAndFile是一个拥有2个变量的结构体:RandomAccessFile*和Table*;
TableCache类的主要成员变量有:
Env* const env_; // 用来操作文件
const std::string dbname_; // db名
Cache* cache_; // LRUCache
三个函数接口,其中的参数@file_number是文件编号,@file_size是文件大小:
void Evict(uint64_tfile_number);
// 该函数用以清除指定文件所有cache的entry,函数实现很简单,就是根据file number清除cache对象。
EncodeFixed64(buf,file_number); cache_->Erase(Slice(buf, sizeof(buf)));
Iterator* NewIterator(constReadOptions& options, uint64_t file_number,
uint64_t file_size, Table**tableptr = NULL);
//该函数为指定的file返回一个iterator(对应的文件长度必须是"fi