1. 程式人生 > >RocksDB 寫入流程詳解

RocksDB 寫入流程詳解

摘要: 最初的寫入流程,繼承自 leveldb,多個 寫執行緒組成一個 group, leader 負責 group 的 WAL 及 memtable 的提交,提交完後喚醒所有的 follwer,向上層返回。 支援 allow_concurrent_memtable_write 選項,在1的基礎上,leader 提交完 WAL 後,group 裡所有執行緒併發寫 memtable。

最初的寫入流程,繼承自 leveldb,多個 寫執行緒組成一個 group, leader 負責 group 的 WAL 及 memtable 的提交,提交完後喚醒所有的 follwer,向上層返回。

支援 allow_concurrent_memtable_write 選項,在1的基礎上,leader 提交完 WAL 後,group 裡所有執行緒併發寫 memtable。原理如下圖所示,這個改進在 sync=0的時候,有3倍寫入效能提升,在 sync=1時,有2倍效能提升

支援 enable_pipelined_write 選項,在2的基礎上,引入流水線,第一個 group 的 WAL 提交後,在執行 memtable 寫入時,下一個 group 同時開啟,已到達 Pipeline 寫入的效果。

圖片描述

掃描二維碼獲取更多訊息:
圖片描述