精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Rocksdb原理簡介

冬至子 ? 來源:天翼云開發者社區 ? 作者:l**n ? 2023-06-01 17:17 ? 次閱讀

Rocksdb作為當下nosql中性能的代表被各個存儲組件(mysql、tikv、pmdk、bluestore)作為存儲引擎底座,其基于LSM tree的核心存儲結構(將隨機寫通過數據結構轉化為順序寫)來提供高性能的寫吞吐時保證了讀性能。同時大量的并發性配置來降低compaction的影響。

image.png

涉及到的幾個核心文件:

WAL

WriteAheadLog,rocksdb的日志,保存memtable中的信息。當memtable轉化為immutable memtable并且Flush到L0層之后,之前WAL的會被清理,即于刪除DB目錄下的log文件。

在RocksDB中每一次數據的更新都會涉及到兩個結構,一個是內存中的memtable(后續會刷新到磁盤成為SST),第二個是WAL。

WAL主要的功能是當RocksDB異常退出后,能夠恢復出錯前的內存中(memtable)數據,因此RocksDB默認是每次用戶寫都會刷新數據到WAL。每次當當前WAL對應的內存數據(memtable)刷新到磁盤之后,都會新建一個WAL。

所有的WAL文件都是保存在WAL目錄(options.wal_dir),為了保證數據的狀態,所有的WAL文件的名字都是按照順序的(log_number)。

MANIFEST

在RocksDB中MANIFEST保存了存儲引擎的內部的一些狀態元數據,簡單來說當系統異常重啟,或者程序異常被退出之后,RocksDB需要有一種機制能夠恢復到一個一致性的狀態, 而這個一致性的狀態就是靠MANIFEST來保證的.

MANIFEST在RocksDB中是一個單獨的文件,而這個文件所保存的數據基本是來自于VersionEdit這個結構.

MANIFEST包含了兩個文件,一個log文件一個包含最新MANIFEST文件名的文件,Manifest的log文件名是這樣 MANIFEST-(seq number),這個seq會一直增長.只有當 超過了指定的大小之后,MANIFEST會刷新一個新的文件,當新的文件刷新到磁盤(并且文件名更新)之后,老的文件會被刪除掉。這里可以認為每一次MANIFEST的更新都代表一次snapshot。

CURRENT

記錄當前最新的MANIFEST文件編號

Memtable

常駐于內存中,在WAL寫之后,記錄具體的key-value數據。在RocksDB中,每個ColumnFamily都有自己的Memtable,Column Family之間互不影響。而在RocksDB中Memtable有多種實現,SkipList/HashSkipList/HashLinkList/Vector,默認的實現為SkipList(只有skiplist可以并發插入)。memtable大小以及個數可以由指定的參數進行控制:

write_buffer_size表示memtable的大小

max_write_buffer_number表示內存中最多可以同時存在多少個memtable的個數

Immutable memtable

當memtable被寫滿之后會生成一個新的memtable繼續接受IO,舊的memtable就會變成immutable memtable,為只讀的狀態,且開始由后臺線程Flush到磁盤的L0層sst。

SST

核心key-value的存儲文件,比如DB目錄下的000023.sst文件。默認分為L0~L7層,當滿足一定條件時(本層sst總大小超過配置大小、WAL文件超過一定值)后臺開啟compaction任務,從當前層和下一層選取若干sst,做合并,并寫入新的sst文件。

CcolumnFamily

RocksDB 3.0中加入了Column Family特性,加入這個特性之后,每一個KV對都會關聯一個Column Family,其中默認的Column Family是 "default"。Column Family主要是提供給RocksDB一個邏輯的分區。

從實現上來看不同的Column Family共享WAL,而都有自己的memtable和SST,同時擁有自己的配置。這就意味著我們可以快速方便的設置不同的屬性的Column Family以及快速刪除對應的Column Family。

但是因為Column Family共享WAL,可能會咬住WAL,讓WAL快速增長從而觸發memtable的強制Flush。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SST
    SST
    +關注

    關注

    0

    文章

    69

    瀏覽量

    35179
  • FLUSH
    +關注

    關注

    0

    文章

    4

    瀏覽量

    5420
收藏 人收藏

    評論

    相關推薦

    DAC簡介

    文章目錄一、DAC簡介一、DAC簡介
    發表于 08-09 08:18

    FPGA簡介

    (06)FPGA資源評估1.1 目錄1)目錄2)FPGA簡介3)Verilog HDL簡介4)FPGA資源評估5)結語1.2 FPGA簡介FPGA(Field Programmable Gate
    發表于 02-23 06:31

    NoOs簡介

    NoOs文章目錄NoOs簡介代碼目錄API 說明移植快速上手更多示例License簡介NoOs 名字的寓意取自于:“NoOs is not an operating system”。NoOs 的目標是提供類似RTOS的開發方式,代碼量比.
    發表于 03-01 07:52

    基于全HDD aarch64服務器的Ceph性能調優實踐總結

    1 簡介作為一個統一的分布式存儲系統,Ceph為應用程序提供了對象,塊和文件系統接口。考慮到TCO,我們搭建了一個全HDD的Ceph集群(每個節點11個HDD + 1個SSD),它在存儲利用率,性能
    發表于 07-05 14:26

    電感元件簡介與展望

    電感元件簡介與展望 電感元件原理,磁性鐵電材料,磁性電感元件分類,電感元件制程簡介,電感元件規格與應用。
    發表于 11-20 14:19 ?21次下載

    ANOTO技術簡介

    ANOTO技術簡介 一、Anoto技術簡介 Anoto技術主要體現為三個組成部分:數碼紙、數碼筆及Anoto軟件平臺。 二、數碼紙
    發表于 09-17 18:11 ?3221次閱讀
    ANOTO技術<b class='flag-5'>簡介</b>

    手機簡介

    手機簡介
    發表于 12-19 10:27 ?616次閱讀

    Windows CE簡介、特點及應用

    Windows CE簡介、特點及應用 一、Windows CE簡介  
    發表于 01-11 08:43 ?4001次閱讀

    ISE10.1使用簡介

    ISE10.1使用簡介 ISE10.1使用簡介
    發表于 02-18 18:16 ?9次下載

    Proteus示波器簡介

    Proteus 中示波器的操作 簡介簡介基于 proteus7.8 版本
    發表于 03-22 11:19 ?15次下載

    RocksDB】TransactionDB源碼分析

    摘要:?RocksDB版本:v5.13.4 1. 概述 得益于LSM-Tree結構,RocksDB所有的寫入并非是update in-place,所以他支持起來事務的難度也相對較小,主要原理就是利用
    發表于 07-23 14:02 ?1956次閱讀
    【<b class='flag-5'>RocksDB</b>】TransactionDB源碼分析

    看圖了解RocksDB

    的壓力,臨時空間占用大。一般多采用level合并的方式。每個level都有max大小,超出后會觸發本level與下一level的文件合并到一起。不同level的合并是可以并發執行的。對rocksdb做個
    發表于 11-15 16:28 ?247次閱讀
    看圖了解<b class='flag-5'>RocksDB</b>

    POE簡介

    POE簡介
    發表于 11-01 08:27 ?0次下載
    POE<b class='flag-5'>簡介</b>

    存儲系統中的算法:LSM樹設計原理

    通過學習相關資料,我發現 Apache BookKeeper 底層存儲引擎用的是 Facebook 開源的 RocksDB,而 RocksDB 又是基于 Google 開源的 LevelDB 改造
    的頭像 發表于 11-03 11:32 ?983次閱讀

    FST 簡介

    FST 簡介
    發表于 11-14 21:08 ?0次下載
    FST <b class='flag-5'>簡介</b>