日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

RocksDB 学习笔记

發(fā)布時間:2024/3/24 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocksDB 学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ?? RocksDB是FaceBook起初作為實驗性質(zhì)開發(fā)的一個高效數(shù)據(jù)庫軟件,旨在充分實現(xiàn)快存上存儲數(shù)據(jù)的服務(wù)能力。RocksDB的主要設(shè)計點是在快存和高服務(wù)壓力下性能表現(xiàn)優(yōu)越,支持point lookup 和 range scan。RockesDB?是一個嵌入式的K-V(任意字節(jié)流)存儲,?支持Get(key)、Put(Key)、Delete(Key)和NewIterator()。RocksDB的基本組成是memtable、sstfile和logfile。RocksDB架構(gòu)圖如下:

Iterator和Snapshot提供了DB在某個時間點的一個一致性視圖,快速短期/前臺的scan操作比較適合用Iterator,長期/后臺操作適合用Snapshot。Iterator過程中會增加引用計數(shù),當實例重啟時,Snapshot會丟失。

RocksDB提供了多個操作的事務(wù)性,支持悲觀和樂觀模式。

prefix_extractor來聲明一個key_prefix,然后RocksDB為每一個key_prefix存儲相應(yīng)的blooms,提升RangeScan操作。

RocksDB通過checksum來檢測磁盤數(shù)據(jù)損壞。

當用戶重復寫入一個key時,在DB中會存在這個key的多個value,compaction操作就是來刪除這個key的冗余數(shù)據(jù)。RocksDB也支持多線程并行compaction。多線程并行flush操作可能會引起寫停頓。

RocksDB支持全量備份、增量備份和復制。

RocksDb 支持 LRU 和 CLock兩種模式。cache的每個分片都有自己的LRU list和hash表來查找使用。每個shard都有個mutex來控制數(shù)據(jù)并發(fā)訪問。不管是數(shù)據(jù)查找還是數(shù)據(jù)寫入,線程都要獲取cache分片的鎖。CLOCK CACHE的每個shard都有一個cache entry的圓環(huán)list。算法會遍歷圓環(huán)的所有entry尋找unspined entry來回收。

RocksDB原生地就支持三種記錄類型,分別為Put、Delete和Merge。Merge可以合并多個Put和Merge記錄為一個單獨的記錄。

MemTable是一種在內(nèi)存中保存數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),一旦MemTable滿了,就會轉(zhuǎn)換為只讀的不可改變的,然后會創(chuàng)建一個新的MemTable來提供新的寫操作。后臺線程負責將MemTable中的數(shù)據(jù)flush到SST file,然后這個MemTable就會被銷毀。memtable的默認實現(xiàn)是skiplist,用戶也可以使用 HashLinkList、HashSkipList or Vector 來提高查詢性能。

每個SST file都有相應(yīng)的一個Bloom filter。

backup engine一直保持打開狀態(tài),不需要在每一次backup或者restore時都重新創(chuàng)建;?另一種加速backup engine 初始化的方法就是刪除非必須的backup。

Checkpoints是一個時間點上的snapshot。當使用Read-only模式打開的話,可以支持查詢這個時間點上的數(shù)據(jù),當使用Read-Write模式打開的話,可以作為一個可寫的snapshot。Checkpoints可以作為全量或者新增備份的backup使用。

SST file的index/filter會被分片為多個小 block,并會配備一個索引。當需要讀取index/filter時,只有top-level index會load到內(nèi)存。分片的好處:更高的cache 命中率,節(jié)省IO不用在index/filters中間折衷。SSL文件索引查詢性能優(yōu)化,LSM tree build成功后,每一個層次的SST file的位置是對齊的,甚至,相對于下一層次的文件的位置也是對齊的。基于次,我們可以縮小二分搜索的范圍。

Simulation Cache(SimCache)可以幫助用戶在模擬的內(nèi)存容量而不是物理上實際占用內(nèi)存下預測block cache的性能數(shù)據(jù),比如:hit、miss。

?RocksDB可以通過兩種方式利用分層存儲架構(gòu):分層存儲部署和分層緩存部署。當使用前者時,可以將LSM的數(shù)據(jù)分布在多層持久化存儲中。使用后者時,用戶可以使用快速的持久化媒介來提供高性能的讀cache服務(wù),避免頻繁讀取LSM的part數(shù)據(jù),提高RocksDB的整體性能。

RocksDB中二階段提交的實現(xiàn)。本文總結(jié)一下共有如下幾個要點:

  • Modification of the WAL format
  • Extension of the existing transaction API
  • Modification of the write path
  • Modification of the recovery path
  • Integration with MyRocks

RocksDB Iterator提供用戶以有序的方式前向或者后向遍歷DB,也可以seek 到DB的特定key上。

?

參考:

Rocksdb的優(yōu)劣及應(yīng)用場景分析

RocksDB使用場景和特性

總結(jié)

以上是生活随笔為你收集整理的RocksDB 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。