【发布时间】:2017-09-10 22:15:13
【问题描述】:
在 Redshift 中,查询的执行时间过长。一些查询会在一段时间后继续运行或中止。
我对 Redshift 的了解非常有限,并且越来越难以理解优化查询的查询计划。
与查询计划一起共享我们运行的查询之一。 执行查询需要 20 秒。
查询
SELECT
date_trunc('day',
ti) as date,
count(distinct deviceID) AS COUNT
FROM
live_events
WHERE
brandID = 3927
AND ti >= '2017-08-02T00:00:00+00:00'
AND ti <= '2017-09-02T00:00:00+00:00'
GROUP BY
1
主键
品牌标识
交错排序键
我们已将以下列设置为交错排序键 -
品牌ID、ti、事件名称
查询计划
【问题讨论】:
-
您提到“查询执行时间过长”并举了一个 20 秒的示例,但您的目标是什么(即,这个查询的可接受时间是多少)?另外 - live_events 表的 分发键 是什么?
-
另外,您使用了多少个节点和哪些节点类型?
-
@Nathan 我预计它需要不到一秒钟的时间。如问题中所述,我们将“brandID”设置为主键,将brandID、ti、event_name 设置为交错排序键。没有定义其他键。
-
@JohnRotenstein 我们正在使用 dc1.large 类型的单个节点
-
主键和分布键是 Redshift 中的两个不同属性 - 主键实际上只是一个查询提示,但分布键定义了数据在 Redshift 节点之间的物理分布方式,对性能至关重要.
标签: amazon-web-services amazon-redshift