hbase提供了2種型別的快取結構:memstore & blockcache。
其中memstore是寫快取,blockcache是讀快取。
memstore:hbase寫資料首先寫入memstore之中,並同時寫入hlog,待滿足一定條件後將memstore中資料刷到磁碟,可以很大提公升hbase的寫效能。而且對讀也很有提公升,如果沒有memstore,讀取剛寫入的資料需要從檔案中通過i/o查詢。
memstore供寫使用,寫請求會先寫入memstore,regionserver會給每個region提供乙個memstore,當memstore滿64mb以後,會啟動flush重新整理到磁碟。當memstore的總大小超過限制時(heapsize * hbase.regionserver.global.memstore.upperlimit * 0.9),會強行啟動flush程序,從最大的memstore開始flush直到低於限制。
blockcache:hbase會將一次檔案查詢的block塊快取到cache中,以便後續同一請求或者相鄰資料查詢請求,可以直接從記憶體中獲取,避免昂貴的io操作。乙個regionserver只有乙個blockcache,在regionserver啟動的時候完成blockcache的初始化,常用的blockcache包括lrublockcache,以及 combinedblockcache(lrublockcache + bucketcache)。
blockcache主要提供給讀使用。讀請求先到memstore中查資料,查不到就到blockcache中查,再查不到就會到磁碟上讀,並把讀的結果放入blockcache。由於blockcache是乙個lru,因此blockcache達到上限(heapsize * hfile.block.cache.size * 0.85)後,會啟動淘汰機制,淘汰掉最老的一批資料。
乙個regionserver上有乙個blockcache和n個memstore,它們的大小之和不能大於等於heapsize * 0.8,否則hbase不能啟動。預設blockcache為0.2,而memstore為0.4。對於注重讀響應時間的系統,應該將blockcache設大些,比如設定blockcache=0.4,memstore=0.39,這會加大快取命中率。
Hbase定址機制
root 表結構 meta.行記錄結構 現在假設我們要從table2裡面查詢一條rowkey是rk10000的資料。那麼我們應該遵循以下步驟 1.從.meta.表裡面查詢哪個region包含這條資料。2.獲取管理這個region的regionserver位址。3.連線這個regionserver,查...
IOS 開發快取機制 記憶體快取機制
使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端 web伺服器獲取的資料快取起來,減少對同乙個 url多次請求。記憶體快取我們可以使用 sdk中的 nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的 url何如快取資料的,...
快取機制 全棧快取
1.配置檔案 cache middleware seconds 20 設定超時時間20秒 第一行和最後一行,位置不能放錯,只能放第一,和最後一行,又報錯是 modulenotfounderror no module named django.middleware.cache.updatecachem...