我是Vertica的新手,并且已经阅读了很多材料而且还没有多少实际操作。从我到目前为止所读到的内容,我了解真正回答查询的只读存储(ROS)完全从磁盘运行,并且根本不使用主存。这是否意味着Vertica中没有查询缓存的概念?这是因为“无共享”架构吗?
考虑到上述情况 - 是否意味着Vertica并不真正需要GB内存来回答查询?我知道只写存储(WOS)主要用于内存,因此WOS需要memmory。但考虑到OLAP的使用(与写入相比读取更复杂),看起来Vertica在内存上很容易。
我的理解是否正确?
答案 0 :(得分:2)
Vertica的性能受内存影响。
当尝试连接2个大表(例如)时,它会尝试在内存中执行Hash / Merge /任何连接。当数据不适合时,“溢出到磁盘”会导致进程比内存慢得多。
如果没有足够的内存,Vertica将会正常运行,但会对性能产生负面影响。 (足够左有意模糊)
答案 1 :(得分:0)
ROS和WOS代表读优化存储和写优化存储,而不是只读和只写。
根据自己选择的时间表,Vertica将逐个表格地将元组从WOS移动到ROS。最终,读取/查询性能取决于数据在磁盘上的存储方式。
当然,Nija描述了内存限制。但是你永远不应该把WOS中的数据视为永久居住在那里。期待它最终能够长期进入ROS。
答案 2 :(得分:0)
RE:Nija - 实际上,MergeJoin和其他基于排序的优化使用相对较少的内存。
WOS用于通过从Write Optimized Storage中的多个负载收集元组并在更大批量中对它们进行排序/写入来分摊执行许多小负载的成本。通常,它不会提高查询性能。
答案 3 :(得分:0)
除了Stephen评论,使用WOS收集数据,将会影响插入性能,但如果你一次插入超过100MB,最好绕过WOS并直接插入ROS,这样Vertica就是没有强制使用元组移动数据,它将避免其他次优的数据分布情况。