leveldb常見問題以及效能優化點

2021-09-13 00:00:34 字數 1897 閱讀 4323

本篇是leveldb最後一篇,這裡主要把技術核心點,效能提公升點或者面試可能會被問到進行總結。

1、leveldb key-value記憶體,記憶體中儲存的是所有key-value嗎?  

答:不是 搜尋順序,memtable immtable ldb檔案 

2、布隆過濾器 在leveldb中的應用是什麼?

答:布隆過濾器主要應用查詢方面,如果查詢乙個key在過濾器中返回false,那麼一定不存在檔案中。leveldb預設沒有開啟布隆過濾器功能。

3、有乙個比較舊的資料key-value,假設在第6層,現在對其進行刪除,然後執行流程是什麼?

答:直接建立一條標記為delete的記錄,插入到db即可。在查詢的時候,level級別越低資料新鮮程度越高,從低層層次開始查詢,如果查到了並且標記是刪除,那麼就返回給使用者記錄被刪除。後面合併資料時例如:合併level5, level6時才會把資料真正從物理磁碟中刪除掉。

4、leveldb sequencenumber 達到最值之後  

答:assert

5、為什麼level0中檔案不應該太多?

答:因為level0中檔案包含的key是可以重疊的,檔案太多不方便查詢,而level1~level6 檔案中key不重複

6、versionset中包含多個version? 每個version都是幹嘛的?

物件作用

versionset

version集合,所有的version都掛在versionset物件下面,乙個db只有乙個versionset

version

乙個db可能存在多個version,version之間採用鍊錶方式管理,鍊錶最後節點為當前最新version資訊

versionedit

該物件用於生成最新的version。versionedit + 當前使用的version 生成 新的version存放到鍊錶尾部,只在需要生成新的version時才會建立

7、leveldb中skiplist為什麼沒有提供刪除介面?

答:leveldb對於刪除操作也是插入流程,只不過是將插入資料標記為刪除,存到skiplist中. 既然刪除操作也是插入流程,那麼leveldb是如何判斷當前節點是否刪除呢? 判斷標記

8、當memtable占用記憶體達到門限值後,就會將memtable寫入到檔案,那麼這個 檔案一定屬於level0嗎?

答:不一定,要看memtable中最小值和最大值與level0中是否有重疊,如果沒有重疊則可能將新生成檔案放到更高的level中,具體函式實現可參考picklevelformemtableoutput

1、table cache 使用lru演算法,該cache預設儲存62條資料,當達到62條時就會把lrucache中資料刪除,可以擴大。

2、memtable預設大小是4m,我們可以擴大。

3、leveldb預設沒有開啟布隆過濾器,我們可以在建立options物件的時候指定開啟過濾器。

memtable:預設大小為4m,當memtable占用4m大小時,就將memtable寫入到檔案中.

level0:level0檔案資料不應該過多,預設是4個檔案,每個檔案大小位xxm,

level1:每個檔案大小為10m

level2:每個檔案大小為100m

leveldb中幾個數字:

nextfilenumber -- 控制  .log  manifest  .ldb 檔案名字中數字

lastsequence   -- 用於設定writebatch的sequence number.。不是遞增而是根據這個批任務中有多個key-value對進行設定的,具體參考函式dbimpl::write

lognumber       -- 表示當前version中使用的 .log檔案

prevlognumber -- 表示當前version中儲存的上乙個.log檔案  #該引數目前版本沒有意義,只是為了向前相容leveldb版本

VNC配置,以及常見問題

兩天搭安全試驗的環境,在vmware上安裝了ubuntu 10.10 以前用過,最早用的好像是6系列吧 安裝好後想用遠端桌面控制,畢竟在vmware上看到的介面比較小,不太方便。在安裝上vnc,做了一些配置 vnc使用gnome seeion啟動 後,使用時出了兩個問題 1.從遠端使用vncview...

XAMPP安裝常見問題以及解決?

問題難題 tag1.安裝路徑出錯導致軟體xampp無法開啟?解決辦法 檢視安裝路徑是否有錯,檢視軟體安裝包是否有破損,檢視是否是電腦管家的安全軟體限制,然後重新安裝 tag2.安裝成功,但是軟體xampp還是無法開啟?tag3.作業系統太老導致無法正常安裝或者與安裝程式不相容?解決辦法 土豪可以花錢...

HIVE架構以及HIVE常見問題

hive是執行在yarn上的,資料儲存在hdfs上。將sql語句轉換為mapreduce,當然hive本身做了一些優化,有些任務不會走mapreduce。hive其實就是把結構化的資料檔案對映到表中,hive表的元資料資訊儲存在關係型資料庫中,具體可以參見我的另一篇部落格,配置了mysql資料庫。s...