1

我是 Vertica 的新手,并且已经阅读了很多材料,但还没有太多动手操作。从我目前所读到的内容中,我了解到真正回答查询的只读存储 (ROS) 完全从磁盘运行,并且根本不使用主内存。这是否意味着 Vertica 中没有查询缓存的概念?这是因为“无共享”架构吗?

考虑到上述情况——这是否意味着 Vertica 不需要 GB 的内存来回答查询?我知道只写存储(WOS)主要在内存之外工作,因此 WOS 需要内存。但是考虑到 OLAP 的使用(与写入相比,读取更复杂),Vertica 在内存上看起来很容易。

我的理解正确吗?

4

4 回答 4

2

Vertica 的性能受内存影响。

当尝试加入 2 个大表(例如)时,它会尝试在内存中进行 Hash/Merge/whatever join。当数据不适合时,它会“溢出到磁盘”,这会导致过程比在内存中慢得多。

Vertica 可以正常工作,但如果内存不足,则会对性能产生负面影响。(留有足够的故意模糊)

于 2012-07-30T15:38:14.800 回答
0

RE: Nija - 实际上,MergeJoin 和其他基于排序的优化使用相对较少的内存。

WOS 用于通过从写入优化存储中的多个负载收集元组并在更大的批量中对它们进行排序/写入来分摊执行许多小负载的成本。通常它不会提高查询性能。

于 2012-07-31T16:12:41.110 回答
0

ROS 和 WOS 代表读优化存储和写优化存储,而不是只读和只写。

根据自己选择的时间表,Vertica 将逐个表地将元组从 WOS 移动到 ROS。最终,读取/查询性能取决于数据在磁盘上的存储方式。

当然,正如 Nija 所描述的那样,存在内存限制。但是您永远不应将 WOS 中的数据视为永久驻留在那里。从长远来看,预计它最终会进入 ROS。

于 2012-07-30T18:24:42.103 回答
0

除了 Stephen 的评论,使用 WOS 收集数据,会影响插入性能,但如果你一次插入超过 100MB,最好绕过 WOS 直接插入到 ROS,这样 Vertica 不会被强制使用元组移动数据,避免其他次优数据分布情况。

于 2012-08-01T06:36:38.760 回答