rocksDB的LRU cache 三兩說

2021-10-01 14:45:54 字數 429 閱讀 5770

先講單shard的lru cache,主要有3個資料結構

lruhandle 作為lru的乙個個體元素,其資料結構如下,next,prev是在lru的雙向列表的next和prev,next_hash是在hash_table用來解決拉鍊位址衝突。key_data[1]被分配了連續的位址,用來儲存key值

struct lruhandle 

;char key_data[1]

;

lruhandletable是個自建的hash table,通過key用來快速定位到lruhandle,從而得到prev 還是next

class

lruhandletable

lrucacheshard是lru的核心資料結構, 包括了insert ,lookup資料結構

rocksdb對Write Stalls的調優

當我們持續大量插入資料的時候,會發現到了某乙個時間,效能就突然下降了,如果突然出現了這樣的情況,我們都會從 log 檔案裡或者 statistics 上面來確認是否出現了 write stall。通常 write stall 會在幾個地方出現 當需要等待被 flush 到 level 0 的 mem...

編譯ROCKSDB總結

rocksdb是挺好的乙個東西,就是取得乙個可用的庫太麻煩。之前我是用的rocksdbsharp裡面他有編譯好windows 和 linux的庫 兼 容性還挺好,ubuntu win10 直接跑沒毛病,可惜他是去年build的了,我要用的checkpoint 這麼重要的功能,他這個版本沒有。於是乎只...

RocksDB使用小結

一 介紹 rocksdb是facebook的乙個實驗專案,目的是希望能開發一套能能在伺服器壓力下,真正發揮高速儲存硬體 特別是flash儲存 效能的高效資料庫系統。這是乙個c 庫,允許儲存任意長度二進位制kv資料。支援原子讀寫操作。rocksdb依靠大量靈活的配置,使之能針對不同的生產環境進行調優,...