MySQL · RocksDB · 写入逻辑的实现

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

MySQL · RocksDB · 写入逻辑的实现

db匠 2018-07-22 09:00:08 浏览1305
展开阅读全文

简介

在RocksDB中,每次写入它都会先写WAL,然后再写入MemTable,这次我们就来分析这两个逻辑具体是如何实现的. 首先需要明确的是在RocksDB中,WAL的写入是单线程顺序串行写入的,而MemTable则是可以并发多线程写入的。

而在RocksDB 5.5中引进了一个选项enable_pipelined_write,这个选项的目的就是将WAL和MemTable的写入pipeline化, 也就是说当一个线程写完毕WAL之后,此时在WAL的write队列中等待的其他的write则会开始继续写入WAL, 而当前线程将会继续 写入MemTable.此时就将不同的Writer的写入WAL和写入MemTable并发执行了.

实现

我们这里只来分析pipeline的实现,核心函数就是DBImpl::PipelinedWriteImpl.

网友评论

登录后评论
0/500
评论
db匠
+ 关注
所属团队号: 阿里云数据库ApsaraDB