缓存数据

leveldb利用上述的cache结构来缓存数据。其中:

  • cache:来缓存已经被打开的sstable文件句柄以及元数据(默认上限为500个);
  • bcache:来缓存被读过的sstable中dataBlock的数据(默认上限为8MB);

当一个sstable文件需要被打开时,首先从cache中寻找是否已经存在相关的文件句柄,若存在则无需重复打开;若不存在,则从打开相关文件,并将(1)indexBlock数据,(2)metaIndexBlock数据等相关元数据进行预读。