源码阅读总结

过去一年多的时间里,阅读了 goim、blotDB、levelDB的源码,在这学习过程中,见识了大神们有趣的代码设计及效率优化的点。在这里仅做一些小结。以此结束源码阅读的时光。

读效率保证:

1.有序,保证有序,可以通过二分法查找,查找 key 可以将时间复杂度降至 O(long2N),同时有利于范围查找 。

2.高效的数据结构,如 B+ 数,平衡树,跳跃表等

3.多级索引,通过层层索引,不断缩小数据范围,避免线性查找。索引本身的数据量小,可以直接存储到内存中(level DB)。

写效率保证:

1.数据先写入缓存,然后批量写入文件。

2.建立缓存池,当需要缓存时,从缓存池中获取,用完之后再放回缓存池。避免内存频繁的申请释放。

3.自己申请一块大内存,然后拆分成多个小内存使用,减少小内存申请的次数。

4.对 key value 只做追加,不修改原值。

写入可靠性的保障

1.WAL 顺序写来保证写的效率,并通过该文件来做崩溃恢复,该方式可以有效的保证写的效率(levelDB)。

2.版本元数据写入。通过将决定数据取值的元素写入磁盘(blotDB实现),来决定是否写入成功。读数据时,通过元数据来定位读取数据的指向。

锁效率保证:

1.在高并发的情况下,尽可能拆分锁粒度,减少锁的争用(goim)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值