4

在 Amazon Redshift 上,并发查询会影响彼此的性能吗?

例如,假设有两个查询:一个在相对较小的表(~5m 行)上检索所有行,另一个在大表(~500m)行上。两个表都有相同的字段,都没有压缩。两个查询都检索各自表中的所有数据以计算其结果。没有连接或过滤器。两个查询都检索大约 2-4 个字段进行计算。

自行运行,小查询在大约 700 毫秒内返回。然而,当大查询正在运行时(这本身需要几分钟),小查询会在 4-6 秒内返回。

这是在具有单个 XL 节点的集群上观察到的行为。

这是预期的行为吗?是否有一个配置设置可以保证小查询的性能一致性,即使大查询正在运行?

4

2 回答 2

4

复制粘贴自:https ://forums.aws.amazon.com/thread.jspa?threadID=137540#

我已经执行了一些并发查询基准测试。

我创建了一个简单的查询,它本身需要大约一分钟才能运行。然后我一次运行其中一个查询,然后是两个,然后是三个,等等,并为每个查询计时。

每个查询基本上都将数据库性能减半——例如你所期望的;负载加倍,性能减半。

实际上,这比减半要好一些——你可以获得大约 10% 的额外性能。

这种性能行为最多支持 5 个并发查询,这是我正在使用的数据库上配置的最大并发查询数。如果我运行了六个查询,则在第一个查询完成并释放一个槽之前,最后一个查询无法执行。

最后,vacuum 的行为与普通查询非常相似——它将性能减半。这并不特别。

实际上,vacuum 不仅仅是减半——它相当于一个相当繁重的查询。

于 2013-10-17T06:24:05.470 回答
2

无法保证,因为所有这些都在固定数量的 CPU 上运行。当你增加工作量时,工作量是固定的,它会降低吞吐量。简短的回答是获得更大的机器(即更多节点)。

以下是您回答的具体内容:

https://forums.aws.amazon.com/message.jspa?messageID=437015#

http://docs.aws.amazon.com/redshift/latest/dg/c_workload_mngmt_classification.html

于 2013-10-16T13:05:45.643 回答