存算一体
Random 分布的表较灵活,在系统扩容添加节点后无需重新分布数据。
Hash 分布的表在系统扩容后,为了利用新增加节点的计算能力,需要重新分布数据。
Hash 分布的表资源管理器在分配资源的时候采取分配固定 virtual segment 数的方式,不如 Random 分布灵活。
存算分离
Random 和 hash 分布均不需要对数据进行重分布。
Hash 分布的表在某些查询上会有性能上的好处,因为有时可以避免重新分布某些表。
例如下面例子的查询,
如果 lineitem 和 orders 两张表分别按照 l_orderkey 和 o_orderkey 分布,则这个查询在执行时不再需要重新分布任何一张表就可以并行在各个节点并行执行连接操作。
SELECT l_orderkey, count(l_quantity)
FROM lineitem, orders
WHERE l_orderkey = o_orderkey
需要做关联操作的建议采用 hash 分布,用关联字段做分布键。
偶数 DB 是存算分离的。