leveldb使用時遇到的性能問題

我用leveldb+thrift做了個存儲服務,實現了跨進程的數據讀寫。但隨着數據量的增大,我發現數據更新越來越慢。經過排查發現爲leveldb使用問題,有問題的邏輯是:服務端每收到一條更新操作,都先查詢該數據是否已經存在。後修改爲不查詢直接寫,性能大幅提升(約5倍提升)。切記!

下面其他參數也嘗試了,感覺無明顯提升(沒有數據支持,並不能說明什麼):

write_buffer_size:默認4M,

多線程寫:多線程調用Put()

kTargetFileSize:db/version_set.cc中的一個變量,決定sst文件的大小,默認2M。修改爲8m啓動服務後(首先確認原數據不會被刪除),服務在空閒時會將原先的2M小文件合併成8M的大文件(並不一定全部合併),減少了文件個數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章