RocksDB MANIFEST恢复流程

作者:sryan 更新时间:2020-07-21 17:42 分类:数据库

由于内存的易失性,所以不少信息需要保存于硬盘中。同时由于内存及硬盘的速度的差异,需要有很多方式来折衷硬盘和内存的特性。比如对于硬盘的随机写及fsync等操作,我们要尽量避免,所以现代很多存储引擎基本都...

点击数:2432 回复数:0

RocksDB的读流程分析

作者:sryan 更新时间:2020-07-16 13:44 分类:数据库

RocksDB的读流程分析 相对于写流程,Get的流程还是相对而言比较简单的,我们这里简单的梳理一下Get经过哪几个步骤,是怎么样进行处理的。 获取当前时刻的SuperVersion。SuperVer...

点击数:3946 回复数:0

RocksDB ThreadLocalPtr梳理

作者:sryan 更新时间:2020-07-15 14:51 分类:数据库

RocksDB ThreadLocalPtr梳理 关于ThreadLocal,做过多线程编程的同学应当很熟悉了,通过ThreadLocal,我们可以在不同的线程中获取到对应的存储而不受其它线程影响。关...

点击数:1104 回复数:0

RocksDB Memtable的Flush流程梳理

作者:sryan 更新时间:2020-07-15 10:59 分类:数据库

在写入数据的时候,经历写入WAL以及MemTable的过程后,会触发MemTable是否需要变为Immutable memtable的检测,当满足条件的时候,会标记为只读并且等待刷入磁盘。 检测是否转...

点击数:2019 回复数:0

RocksDB Inline skiplist的插入流程

作者:sryan 更新时间:2020-07-15 10:54 分类:数据库

在之前的文章中,主要梳理了一下RocksDB的写入流程与组提交,了解了多线程如何写WAL与MemTable。在这篇文章中,主要细致地梳理一下MemTable是如何写入的。 MemTable有很多的实现...

点击数:2154 回复数:0

RocksDB 写流程分析

作者:sryan 更新时间:2020-07-15 10:48 分类:数据库

RocksDB写入实现主要在DBImpl::WriteImpl中,设计到的核心思想是组提交,将多个请求组成链表,第一个进入链表的成为Leader,负责批量 提交WAL日志,提交完毕后,唤醒其它等待的线...

点击数:2054 回复数:0

梳理Redis 4.0中的psync命令

作者:sryan 更新时间:2020-07-03 15:25 分类:数据库

psync主要用于redis主从实例之间的同步,该命令在2.8版本引入。 2.8之前的版本只有sync命令,每次触发都会先进行全同步,然后进行增量同步。而2.8引入的psync命令可以在类似于断线重连...

点击数:1379 回复数:0

redis中scan的cursor细节分析

作者:sryan 更新时间:2019-09-06 17:40 分类:数据库

最近在开发 redioxy ,主要用于跨机房双写做高可用,由于要支持集群模式下的 scan 命令,所以对 scan 的细节做了一下了解。 我们都知道,在很早版本的redis中, keys 命令可以获取...

点击数:1455 回复数:0

pika的架构分析 (1)

作者:sryan 更新时间:2019-06-21 17:54 分类:数据库

pika是360开源的一款使用rocksdb作为底层存储的kv数据库,协议层走的redis协议,所以也可以看做一款将数据持久化入rocksdb的”redis”。 pika的代码...

点击数:1489 回复数:0

MySQL binlog purge流程

作者:sryan 更新时间:2019-05-21 17:29 分类:数据库

MySQL binlog purge流程 我们时常在mysql binlog过大的时候,会执行binlog的purge指令来减小binlog占用的磁盘空间,那么它的实现大概是如何实现的呢? 首先我们理...

点击数:1504 回复数:0