2017-01-01 38 views
2

我有大約10GB的數據存儲在歷史節點上。但是該節點的內存消耗約爲2GB。德魯伊:如何緩存內存中的所有歷史節點數據

當我啓動一個選擇查詢時,第一次返回的結果超過30次。接下來,他們處於第二位(因爲經紀人緩存)。

我的問題是減少第一次選擇任何查詢到一秒。爲了實現這樣的性能,我認爲如果歷史節點將所有數據存儲在內存中是一個好的開始。

問題:爲了強制歷史節點緩存內存中的所有數據,什麼是配置參數?

回答

0

Druid沒有任何直接的機制來強制數據被緩存。要解決這個問題,你可以嘗試在啓動時發射一些虛擬查詢,這會在內存中加載數據段。 有跡象表明開始發揮作用時德魯伊查詢推出高速緩存的各個級別:

  1. 緩存的歷史節點
  2. 緩存在代理節點
  3. 頁面緩存

一兩個緩存可配置並可根據需要打開/關閉,而頁面緩存完全由底層操作系統控制。 因爲在你的設置中你有大量的空閒內存在歷史上,我會建議你在啓動時啓動虛擬查詢,跨越所有歷史片段,這將帶來頁面緩存中的所有細分數據,任何查詢將在隨後發射任何查詢將受益於此。

歷史和代理緩存不會緩存段的全部數據,而只會緩存每個段上的查詢結果,因此如果您的查詢本質上非常動態並且每個段需要不同的聚合和過濾器時間。

+0

很好的答案和很好的解決方法,謝謝!作爲一個結論,可能德魯伊並不是最適合此目的的工具。根據信息,你知道是否有更合適的工具? (我指的是軟件,你可以有你所有的「大數據」內存準備快速選擇查詢,whitout任何workaroud) – DrWho3

+0

這些都是少數內存數據庫,我知道的: VoltDB和Apache的Geode。 我沒有親自使用過Geode,因此無法保證其性能,但是我對它的文檔的初步閱讀使我相信它可能是大數據內存數據庫的一個很好的候選者。 –