SAP HANA分区表计算视图运行速度比非分区表计算视图慢

时间:2018-10-15 07:06:28

标签: sap hana

我的表很大,接近1 GB,并且该表的大小每周都在增长,它的总行数为1.9亿,我开始从HANA收到警报以对该表进行分区,因此我计划使用列,该列经常在Where子句中使用。

我的HANA系统是具有8个节点的横向扩展系统。

为了比较分区查询性能与此未分区表的性能差异,我在此未分区表的顶部创建了计算视图并记录了查询性能。

我使用HASH方法和服务器数量对该表进行了分区,并记录了查询性能。这样,我可以在服务器之间实现良好的数据分布。我创建了计算视图并记录了查询性能。 令我惊讶的是,我发现与分区表计算视图相比,我的未分区表计算视图查询的性能更好。

这真是令人震惊。不确定为什么非分区表“计算”视图对分区表“计算”视图的响应更好。

我有计划的输出文件,但不确定将文件附加在何处。

让我知道为什么是这种行为。

1 个答案:

答案 0 :(得分:1)

好的,这不是一个可以直接回答的直截了当的问题。 我可以做的是列出一些可能会在此处发挥作用的因素:

  • 未分区的表需要对表结构的单一访问权限,而分区版本的每个分区至少需要一个访问权限
  • 如果SELECT实际上没有提供可以通过用于分区的HASH函数评估的WHERE条件,则必须始终评估所有分区,无法进行分区修剪。
  • HASH分区不考虑有关数据的任何其他知识,这意味着相似的数据不会存储在一起。这对数据压缩有负面影响。此外,每个分区的列都需要有自己的一组值字典,其中单分区/未分区的表每列只需要一个字典。
  • 您提到您正在使用横​​向扩展系统。如果表分区分布在不同节点上,则每个查询都将导致跨节点网络通信。这是非分区表根本不存在的额外工作量和等待时间。
  • 在联接分区表时,如果不可能按分区联接,则必须将第一个表的每个分区与第二个表的每个分区联接。

还有其他/更多潜在的原因,为什么对分区表的查询比对未分区表的查询要慢。 SAP HANA Administration Guide中对此进行了详尽的解释。

作为一般指导,只有在无法避免的情况下并且很好地理解查询的访问模式时,才应该对表进行分区。绝对不是您仅“打开”此功能,一切都将正常工作。