Redshift-如何在查询中识别效果欠佳的区域?

时间:2018-07-27 13:16:00

标签: sql amazon-redshift query-performance

背景:我是Redshift和PostgreSQL的新手,并且想知道如何提高查询性能。我需要有关 执行时间 已用内存量或我运行的查询中其他相关指标的反馈。

问题:是否有一个简单的SQL命令/方法(?)(至少一个粗略的想法)来确定查询中哪些区域需要花费最多的时间来执行?

其他信息:我经常使用这样的通用表表达式:

WITH level1 as (SELECT Customerid 
                FROM customer_tbl
                WHERE year > 2000), 
level2 as (SELECT level1.Customerid,
                  purchasing_tbl.item,
                  purchasing_tbl.price
           FROM level1
           LEFT JOIN purchasing_tbl
                  ON purchasing_tbl.id = level1.Customerid

通常,这种类型的结构可能具有10个以上的级别,通常包括很多麻烦(就更多的联接而言,情况是,窗口函数具有不同的聚合)。

在尝试提高性能时,了解例如与level2相比,level10花费了多少时间。

客户端:我使用DBeaver 5.1.1。

2 个答案:

答案 0 :(得分:0)

STL_QUERY是Redshift中的一个系统视图,其中包含查询时间: https://docs.aws.amazon.com/redshift/latest/dg/r_STL_QUERY.html

从stl_query中选择开始时间,结束时间*,其中querytxt ='' 按启动时间顺序排序 限制100;

答案 1 :(得分:0)

有很多方法可以了解次优查询。

下面的链接提供了不同的步骤来进行相同的检查。

https://docs.aws.amazon.com/redshift/latest/dg/query-performance-improvement-opportunities.html#suboptimal-data-distribution

AWS提供了一些实用程序-在GIT Hub中可用。

https://github.com/awslabs/amazon-redshift-utils

这两种材料在调整查询方面都非常有用。

关于, 拉玛