leveldb:TableCache以及BlockCache
来源:互联网 发布:日本古城建篵坉典 淘宝 编辑:程序博客网 时间:2024/06/03 01:31
TableCache
class TableCache { ... Cache* cache_;}TableCache::TableCache(const std::string& dbname, const Options* options, int entries) : env_(options->env), dbname_(dbname), options_(options), cache_(NewLRUCache(entries)) { //创建一个容量为entries的ShardedLRUCache(ShardedLRUCache请参见前面cache的分析}Status TableCache::FindTable(uint64_t file_number, uint64_t file_size, Cache::Handle** handle) { char buf[sizeof(file_number)]; EncodeFixed64(buf, file_number); Slice key(buf, sizeof(buf)); *handle = cache_->Lookup(key);//可以看出tablecache的key就是文件的编号 if (*handle == NULL) { //cache中没找到该文件对应的table //先打开该文件,涉及系统调用,挺费时间的 std::string fname = TableFileName(dbname_, file_number); RandomAccessFile* file = NULL; Table* table = NULL; s = env_->NewRandomAccessFile(fname, &file); if (s.ok()) { //打开文件成功,则创建该文件对应的table s = Table::Open(*options_, file, file_size, &table); } TableAndFile* tf = new TableAndFile; tf->file = file; tf->table = table; //tablecache中的value值就是TableAndFile,它包含一个已经打开的文件描述 符,以及创建好的table,加入cache中 *handle = cache_->Insert(key, tf, 1, &DeleteEntry); } return s;}
阅读全文
1 0
- leveldb:TableCache以及BlockCache
- levelDB源码分析-TableCache
- LevelDB源码剖析之TableCache
- leveldb安装以及使用
- 关于BlockCache
- HBase BlockCache
- Hbase BlockCache
- LevelDb
- LevelDb
- LevelDb
- leveldb
- leveldb
- leveldb
- leveldb
- LevelDb
- LevelDb
- Leveldb
- Leveldb
- PHP处理小说文章内容
- QT程序打包
- 毕业几年来从别人身上,学到的点点滴滴。
- ajax方法完成选择下拉框级联效果
- PHP简洁之道
- leveldb:TableCache以及BlockCache
- 面试总结
- Distribute Candies(leetcode)
- https 与ssl 详解(二)
- 阿里云云服务器ECS—网站备案—搭建WordPress网站
- 架构1
- adb 常用命令
- Python import可变路径的类
- openjudge1757:神奇的口袋