你当像鸟飞往你的山
RocksDB: TrivialMove 与 db_bench 的 fillseq RocksDB: TrivialMove 与 db_bench 的 fillseq
写这篇文章的起因是我用一晚上 debug 了一个“假想”错误,最后发现我是个憨批,然后因此认识了 RocksDB 的 TrivialMove 机制,并重新认识了 fillseq。 事情开始于我用 db_bench 去 load 数据,给的分
2023-08-02
RocksDB源码学习(九): Flush中SST写入流程-深入到pwrite RocksDB源码学习(九): Flush中SST写入流程-深入到pwrite
本篇博客将以 Flush 为切入口探究 RocksDB 中 SST 的写入流程,函数调用链要一直深入到 pwrite。参考资料较少,几乎纯看源码独自分析,如有错误,希望能私聊我或在评论区指正,一起学习共同进步,谢谢~ 带着四个问题进行分析:
2023-03-20
RocksDB静态编译 RocksDB静态编译
RocksDB 的编译分为静态编译和动态编译,其中,静态编译会在工程目录下生成librocksdb.a静态链接库,动态编译则会在工程目录下生成librocksdb.so.${version}动态链接库。不管是哪种方式,编
2023-03-10
RocksDB: SST的删除 RocksDB: SST的删除
在看本篇博客之前,请先明白 Version 的概念:RocksDB: Version&VersionSet 上篇博客讲到,Compaction 之后的旧 SST 并不会被立刻删除,因为可能仍有旧 Version 在使用它,以处理正在
2023-03-07
LevelDB源码: Compaction的流程(一) LevelDB源码: Compaction的流程(一)
博客只能分析部分,完整分析见代码注释:LevelDB-annotated 上一篇博客分析了 Flush 流程,本篇开始分析 Compaction 流程,后者相对于前者要复杂一些,主要体现在 Compaction SST 的选择。 Flush
2023-02-24
LevelDB源码: Flush的流程 LevelDB源码: Flush的流程
本文将从源码方面分析 Flush 的流程 博客只能分析部分,完整分析见代码注释:LevelDB-annotated 一般而言,分析一个流程要从入口点还是逐层向下分析,但这样带来的后果是主次的详略不当。通常,一种操作的核心函数只有一两个,
2023-02-23
LevelDB系列文章 LevelDB系列文章
LevelDB源码注释仓库:https://github.com/sakura-ysy/LevelDB-annotated LevelDB单元测试 LevelDB源码: 层级实现的思考 LevelDB源码: Flush的流程
2023-02-19
LevelDB层级实现的思考 LevelDB层级实现的思考
解答一个问题: SST 落盘后是固定的,在磁盘中是没有所谓层级结构的,那么 LSM-Tree 是怎么记录每一层有哪些 SST 的呢? 首先,肯定不能仅仅靠内存来记录,因为是不持久的。 那么,接下来就会想到文件指针,LSM-Tree 的每一个
2023-02-19
LevelDB单元测试 LevelDB单元测试
在学习 leveldb 源码的过程中,肯定少不了对特定函数或结构的测试。LevelDB几乎给每个关键的数据结构都写好了测试代码,我们可以直接使用,或者根据他的框架自己编写新的测试体,很方便。 但是,我不会用。。。 我看的源码是截止写这篇博客
2023-02-04
RocksMash RocksMash
RocksMash | 本地与云相结合的高效益存储系统 如何利用本地存储与云存储相得益彰的特性,优化 LSM-Tree 云存储的成本与性能? 现如今采用云存储是大势所趋,应用程序爆炸式的增长致使存储的数据量不断扩大,这就要求成本效益成为底
2023-01-02 SrcMiLe
2 / 8