zhaohai-shen

导航

 

2014年8月11日

摘要: 分析完KV在内存中的存储,接下来就是操作日志。所有的写操作都必须先成功的append到操作日志中,然后再更新内存memtable。这样做有两个有点:1可以将随机的写IO变成append,极大的提高写磁盘速度;2防止在节点down机导致内存数据丢失,造成数据丢失,这对系统来说是个灾难。在各种高效的存储... 阅读全文
posted @ 2014-08-11 18:11 zhaohai-shen 阅读(498) 评论(0) 推荐(0) 编辑
 
摘要: 背景我们都知道,对于一个高性能的服务器端程序来说,内存的使用非常重要。C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空间和时间,性价比不高。另外,我们也要避免多次的申请和释放引起的内存碎片。一旦碎片到达一定程度,即使剩... 阅读全文
posted @ 2014-08-11 15:20 zhaohai-shen 阅读(756) 评论(0) 推荐(0) 编辑
 
摘要: memtable常驻于内存,需要按照key进行排序,通常意义上的话,可以使用二叉查找树来实现,跟进一步可以使用红黑树保证树的平衡,但是leveldb中使用了另外的一种数据结构:跳表Skip List。memtable声明在db/memtable.h中,定义如下:view plainclassMemT... 阅读全文
posted @ 2014-08-11 10:32 zhaohai-shen 阅读(345) 评论(0) 推荐(0) 编辑