leveldb:TableCache以及BlockCache

概述

前面分析了leveldb中cache机制的实现,下面来分析下leveldb基于cache机制实现的两个不同功能的cache,分别是table cache和block cache。table cache缓存的是sstable的索引数据,类似于文件系统中对inode的缓存;block cache是缓存的block数据,block是sstable文件内组织数据的单位,也是从持久化存储中读取和写入的单位,类似于文件系统中文件块的缓存;

Cache* NewLRUCache(size_t capacity) {
  return new ShardedLRUCache(capacity);
}

virtual Handle* Insert(const Slice& key, void* value, size_t charge,
                         void (*deleter)(const Slice& key, void* value)) {
  

上面是创建cache的接口,创建TableCache和block cache都是调用的该接口,只不过他们capacity的含义不同。
以及插入一个cache元素的接口,TableCache和block cache插入元素都是调用该接口,key代表插入元素的key值是多少,用于hash快速查找,value就是cache真正缓存的数据,charge表示该元素占cache容量的权重是多少。

capacity的含义是和charge相对应的。

TableCache

TableCache中的capacity代表的含义是最多能够缓存多少个sstable文件的索引信息,
tablecache默认容量是1000,意味这最多能缓存1000个sstable文件的索引信息。table cache的大小由options.max_open_files确定,其最小值为20-10,最大值为50000-10。

DBImpl::DBImpl(const Options& raw_options, const std::string& dbname)
{
    ...
    const
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值