2012-07-30 74 views
1

我是Vertica的新手,並且一直在閱讀大量材料並且沒有多少動手。從我目前閱讀的內容中我瞭解到,真正回答查詢的只讀存儲(ROS)完全從磁盤運行,根本不使用主存。這是否意味着在Vertica中沒有查詢緩存的概念?這是因爲「無共享」架構?Vertica-在主內存上很容易?

考慮到上述情況,這是否意味着Vertica並不真的需要GB的內存來回答查詢?我知道只寫存儲(WOS)主要工作在內存之外,因此WOS需要存儲器。但從OLAP用法考慮(與寫入相比,讀取更復雜)看起來像Vertica在內存上很容易。

我的理解是否正確?

回答

2

Vertica的性能受內存影響。

當試圖連接2個大型表(例如)時,它會嘗試執行散列/合併/內存中的任何連接。當數據不適合時,會「溢出到磁盤」,導致進程比在內存中慢得多。

如果Vertica沒有足夠的內存,它將正常工作,但對性能有負面影響。 (足夠左有意模糊)

0

ROS和WOS代表讀優化存儲和寫優化存儲,而不是隻讀和只寫。

按照自己選擇的時間表,Vertica將按照表格將元組從WOS移動到ROS。最終,讀取/查詢性能取決於數據如何存儲在磁盤上。

當然,Nija所描述的存在內存限制。但是,您絕不應將WOS中的數據視爲永久居民。預計它最終會長期進入ROS。

0

RE:Nija - 實際上,MergeJoin和其他基於排序的優化使用的內存相對較少。

WOS用於通過在寫入優化存儲中從多個負載中收集元組並將它們分類/寫入更大批次來分攤執行許多小負載的成本。通常它不會提高查詢性能。

0

除了Stephen評論,使用WOS收集數據將阻止插入性能,但是如果您一次插入超過100MB,則最好繞過WOS並直接插入ROS,這樣Vertica不會被迫使用元組來移動數據,並且它將避免其他次優數據分佈情況。