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

MySQL数据库_数据库select语句_

小七 141 0

本文将概述"在SQL引擎中执行"设置的含义。此设置可用于计算视图以否决默认执行行为。

背景

当查询中包含计算视图时,首先在称为"计算引擎"的特殊引擎中优化查询。当查询包含在较大的SQL查询中时,这有一个缺点,因为在这种情况下,涉及两个不同的优化过程:一个用于SQL查询部分,另一个用于计算视图部分。这可能导致不同优化过程之间的低效。

为了避免这些低效,从SPS09开始引入了全局优化。全局优化是自动尝试的。对于这种全局优化,在应用一些特定于计算引擎的优化之后,生成的计划被转换为一种称为"QO"的SQL类型的表示,以便SQL优化可以考虑整个查询。转换为SQL类型表示的过程称为"展开"。有关展开的更多详细信息,请参见,例如SAP Notes 2618790、2223597

但是,大数据系统,由于某些计算视图功能的非关系行为,因此无法将其转换为SQL优化。这意味着整个计算视图无法展开。在这种情况下,您可以指示计算引擎尝试尽可能多地展开,即使完全展开是不可能的。这可以通过将参数"Execute in"设置为"SQL Engine"来实现。一个例外是,西安大数据,对于具有星型联接的多维数据集,即使"Execute in"选项未设置为"SQL Engine",此设置也会自动激活。

过去阻止展开的许多功能在最近的HANA版本中不再阻止展开。目前的计划是在2020年底之前能够展开所有的计算视图。有关某些HANA版本阻止展开的功能的更多详细信息,请参阅SAP Note 1857202的附件。在SAP Note 2441054中可以找到对SPS12的更改

在HANA、SPS04中,其余突出的阻止程序是包含非SQL层次结构视图和匿名化节点的查询。

在本文中,将说明标记"Execute in"对查询执行计划的影响。在某些查询中,将此标志设置为"SQL引擎"可以改进运行时,因为最近的优化集中在展开的查询上,因为全局展开是长期目标。不幸的是,当这个标志导致性能改进时,没有一般的规则。最理想的情况是,西安大数据,不需要它,因为查询是以任何方式展开的。然而,目前对于某些查询,展开可能仍然是不可能的。对于这些查询,根据运行查询的上下文,将标志设置为"SQL Engine"有时会有所帮助。类似地,MDS查询通常受益于将MDS查询的最顶层计算视图中的标志设置为"SQL Engine"。涉及MDS查询的典型场景是使用SAP Analytics Cloud的场景。

稍后,我们将研究验证查询是否发生展开的方法,以及如何控制展开。

设置"Execute In"的影响

为了说明将使用计算视图的机制,其中有一个特性阻止展开。本例采用SPS04统计软件对k-匿名性特征进行分析。在以后的版本中,k-匿名可能不再阻止展开,因此示例可能不再工作。

视图非常简单,包括匿名化节点以及与表的连接:

由于匿名化节点,视图无法完全展开。如果未设置"在SQL引擎中执行",则阻止展开意味着所有优化都在计算引擎中进行。如果将标志"Execute In"设置为"SQL Engine",则可以转换的全局计划的所有部分都将转换为SQL表示。这意味着展开不会对视图进行全局阻止,而只对平面的一部分进行阻止。在本例中,淘客助手,将创建连接和获取的SQL转换,但不会展开匿名化本身。如果您查看Analyze SQL计划,您可以检测到这一点:

在左侧,如果"Execute In"设置为"SQL Engine",您可以看到执行。当"Execute In"设置为空时,位于右侧。如您所见,物联网的,左侧出现"ceQoPop"运算符。""ceQoPop"是计算引擎计划的一部分的SQL表示,即使不能展开整个计算视图,也可以进行转换。相反,在右边你看不到"ceQoPop"操作符,优化只在计算引擎中完成。在左侧,第一个"ceQoPop"(1)获取匿名化节点的数据,第二个"ceQoPop"(2)执行连接。在右边,使用计算引擎运算符(3)读取表,并使用计算引擎运算符(4)执行联接。

因此,如果视图的全局展开被阻止,则通过将"Execute in"设置为"SQL Engine",可以强制执行部分展开。

检查查询是否展开

要检查查询是否展开,可以使用解释计划功能。如果查询中使用的所有表都出现在计划中,则展开已成功进行。作为一个示例,当k匿名节点被投影节点替换时,您可以看到指向上述视图的查询的解释计划。默认展开将发生,您将在解释计划中找到所有涉及的表:

在本例中,默认展开将发生,我们将使用提示"无计算视图展开"来阻止展开:

现在,最低层显示列视图,但没有表。

展开是默认设置,尽可能完成,因此只能阻止展开。应尽可能避免阻塞展开,因为长期而言,所有查询都应展开,因此未来的优化将重点放在展开的查询上。

存在几种阻止展开的选项(比较SAP注释2441054):

a)向单个查询附加提示声明:带提示(无计算视图展开)

b)将提示固定到每次执行一条语句(SAP Note 2400006):

ALTER SYSTEM ADD statement HINT(NO\ CALC\ U VIEW\ UNVOLDING)FOR

ALTER SYSTEM PIN sql PLAN CACHE ENTRYWITH HINT(NO\ CALC\ U VIEW\ U UNVOLDING)

c)通过计算视图中的执行提示将提示添加到特定视图:name:NO\ CALC\ U VIEW\ U UNVOLDING,值:1

d)全局展开:索引服务器.ini->[calcengine]->无计算视图_展开:1