【问题标题】:SAP HANA PARTITIONED TABLE CALCULATION VIEW RUNNING SLOW IN COMPARISON TO NON-PARTITIONED TABLE CALCULATION VIEWESAP HANA 分区表计算视图与非分区表计算视图相比运行缓慢
【发布时间】:2018-10-15 17:09:08
【问题描述】:

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

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

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

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

这真的很震惊。不知道为什么非分区表计算视图对分区表计算视图的响应更好。

我有计划即输出文件,但不确定将其附加到哪里。

让我知道为什么会这样。

【问题讨论】:

    标签: sap hana


    【解决方案1】:

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

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

    对于分区表的查询可能比非分区表的查询慢,还有其他/更多潜在原因。所有这一切都在SAP HANA Administration Guide 中得到了广泛的解释。

    作为一般指导,只有在无法避免且查询的访问模式已被很好理解的情况下,才应对表进行分区。这绝对不是一个你只需“打开”就可以正常工作的功能。

    【讨论】:

    • 分区是一种很好的方法,可以将热数据与冷数据分开,并保持表中常用数据的大小更小。此外,如果数据在不同的磁盘上,可以通过处理并行读取来增加磁盘 IO。也许读取所有表数据可能会表现得更差,但使用过滤器可能会有更好的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多