WITH 与消费者群体 - 性能和其他考虑因素

问题描述 投票:0回答:1

我想知道WITH 对性能有什么影响?我应该尽可能地依赖WITH子句吗?

例如,如果我有类似这样的查询:

Select * from Input1 i where i.type = 'something'

Select * from Input1 i where i.type = 'something-else'

Select * from Input1 i where i.type = 'something-else' and i.cost > 500 

Select * from Input1 i where i.size < 10

a.我是否应该对 Input1 中的所有内容都添加一个WITH,以限制读者?并进行其他过滤作为第二步。我猜这会损害性能。

b.我不应该为每个查询创建一个消费者组吗?为什么不呢?

c.有点不同,不同输出的性能之间有关系吗?如果我有多个输出,其中一部分是高吞吐量 CosDb 集合,一部分是表存储,这有什么关系吗?尽管表存储分区得更好。将两者分开到不同的(输入、消费者组)对,甚至完全不同的 ASA 工作会更好吗?

azure azure-stream-analytics
1个回答
1
投票

TL;DR:对于大多数典型的工作负载,您应该使用WITH 语句来减少接收器的数量。如果您想微调性能,您可以使用不同的接收器创建不同的输入。

请在下面找到详细答案:

a) 对于第一个问题,使用WITH,然后在该步骤中进行过滤不会影响该查询的性能。

b) 使用WITH语句,您可以减少所需的接收器数量。但是,如果您需要更多数量的接收器,则必须定义多个输入,并为每个输入定义不同的 CG。两种方法的优缺点取决于不同的因素,例如查询的并行化/分区程度、数据量和数据分布等。如果您的吞吐量非常高,则可能需要尝试一下,并使用 perf数字和“工作图”来指导您的决策。请注意,对于大多数当前作业,您应该可以使用WITH 语句。

c) 如果管道完全独立,您可能需要创建不同的作业以最大限度地提高性能。您可以使用 ASA 作业的“作业图”来可视化您的作业拓扑并对其进行优化。

如果它回答了您的问题,请告诉我。

谢谢,

JS

© www.soinside.com 2019 - 2024. All rights reserved.