云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_阿里云路由器设置_稳定性好

小七 141 0

背景

SAP HANA使用相关的算法来决定执行查询的并行性。但是,在某些情况下,您希望在一般HANA机制的基础上影响并行化程度,并基于业务考虑来控制模型各个部分的并行化。

如何使用SAP HANA计算视图实现这一点是本文的主题。虽然这可能是一个有帮助的选择,数据分析和大数据,为个别高度时间关键的模型,云服务器报价,它不应使用在一个不受控制的方式,否则在HANA的整体并行可能会受到负面影响。

由于HANA 2.0,SPS04,可以通过建模用于执行模型特定部分的逻辑线程的数量来进行控制。我们在下面提到"逻辑"线程,因为我们从模型的角度来描述并行化。每个逻辑线程可以基于HANA并行化优化进一步并行化。例如,可以根据模型定义将聚合节点并行化为6个逻辑线程。在每个逻辑线程中,额外的并行化可能独立于模型设置而发生。

简而言之,一个名为"分区本地执行"的标志标记了逻辑并行化程度定义的开始和停止节点。需要在基于表的节点上设置开始标志。通常,这将是一个投影或聚合节点。此节点将标记并行化的开始。并行化的结束由一个并集节点标记,服务器和云主机,在该节点中再次设置该标志。

并行化的程度在设置开始标志的节点处定义。

并行化的程度可由用作开始节点的数据源的表的分区数确定。在需要在不同主机之间传输数据的横向扩展解决方案中,基于表分区的并行化特别有用。假设一个表的分区分布在多个主机上。如果没有基于表分区的并行化,来自各个分区的数据将通过网络发送,以便在一台主机上根据模型进行处理。通过基于表分区的并行化,在并行化块中建模的逻辑将在表分区所在的本地主机上处理。这种本地处理不仅可以分配处理负载,而且可能还可以减少需要通过网络发送的记录数网络。因此最好在并行块的末尾包含一个聚合节点,以便在通过网络发送数据之前减少数据量。

或者,并行化程度可由作为起始节点数据源的表的一列中不同值的个数来决定

两种类型的并行化设置将用一个例子来说明,下一步。

示例

如果您想自己测试这个,您可以按照这里的步骤为示例创建基础模型,或者在这里下载示例

基于表分区的示例并行化

基于列中不同条目的示例并行化

验证并行化程度

有三种方法下面显示了如何在运行时检查并行化程度。所有方法都适用于这两者,基于表分区和不同条目的并行化:

a)添加一个包含逻辑分区id的计算列

b)使用SQL Analyzer

c)使用查询执行跟踪

查看处理某条记录的逻辑线程的id,您可以将列引擎表达式"partitionid()"添加为计算列,并在结果中显示此列。

计算列计算分区标识符

假设并行化基于一个由6个分区组成的表,则在每条记录后面将看到一个介于1和6之间的整数。数字对应于处理记录的逻辑线程。这意味着具有相同分区id的记录由同一线程处理:

计算列"partitionIndicator"(由列引擎表达式"partitionid()"填充)表示处理该记录的逻辑线程

为您的语句运行SQL Analyzer并导航到应并行化的节点。例如,如果您的并行化基于一个表的6个分区,那么您将发现您的节点6次。在下面的屏幕截图中,淘客app系统,聚合节点分为5个相同的聚合节点和1个以上的聚合节点(6.),在其中合并处理:

SQL Analyzer显示聚合的6个并行处理线程

如果深入到聚合"ceAggregationPop"中,您将发现并行化为好吧:

计算列在每个并行线程中求值

最后,您可以跟踪您的单个查询,例如,在您的查询中添加"WITH PARAMETERS('PLACEHOLDER'=('$$CE\u SUPPORT$$',"")"。执行查询时,将创建一个跟踪文件,其中包含有关计算视图执行的详细信息,免费网站自助建站,并将其存储为以""结尾的indexserver跟踪文件_支持.trc". 如果打开此跟踪文件,您将发现类似于:

"分区执行规则:为表'LD0::EXAMPLEPARALLELIZATION\u HDI\u DB:tables::partitionedTable(t-1)'找到6个分区"。分区执行分支将被克隆。"

下面的屏幕截图说明了这一点。

"indexserver_支持.trc"显示6度并行化的跟踪文件

约束

不允许跨堆叠视图定义并行化块或在查询中将一个并行化块堆叠在另一个并行化块之上。约束如下所示。

使用并行化设置的约束

设置并行化标志将阻止展开(有关展开的背景信息,请参阅SAP说明2291812和SAP说明2223597),因为阻止展开是使用此功能的先决条件。此外,由于存在错误,无法对由同义词HANA revisions