按总运行时间,执行时间,等待/排队时间列出Redshift中的热门查询?

时间:2019-07-05 12:10:38

标签: sql amazon-web-services amazon-redshift

我知道Amazon为Redshift提供了各种管理脚本,例如:

https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminScripts/top_queries.sql

它按运行时列出了​​最热门的查询,我也发现了类似的情况:

https://chartio.com/learn/amazon-redshift/identifying-slow-queries-in-redshift/

但是我想知道是否有一个查询与上述查询类似,但除了执行时间外还显示队列/等待时间?

这篇文章:

How can I get the total run time of a query in redshift, with a query?

我收集到stl_query表包括执行时间+等待时间,但是stl_wlm_query包括total_exec_time,这只是执行时间。

更新:我得到了下面的内容,这些内容可以满足我的要求,但似乎只能返回上个月左右的数据,对我如何获得旧数据有任何想法吗?

    SELECT
w.userid,
w.query,
w.service_class_start_time AS "Day",
w.total_queue_time / 60000000 AS "Total Queue Time Minutes",
w.total_exec_time / 60000000 AS "Total Exec Time Minutes",
w.total_queue_time / 60000000 + w.total_exec_time / 60000000 AS "Total Time  Minutes"
FROM
stl_wlm_query w
ORDER BY
6 DESC

2 个答案:

答案 0 :(得分:0)

该查询正在使用stl_wlm_query表。

来自STL Tables for Logging - Amazon Redshift

  

要管理磁盘空间,STL日志表仅保留大约两到五天的日志历史记录,具体取决于日志使用情况和可用磁盘空间。如果要保留日志数据,则需要定期将其复制到其他表或将其卸载到Amazon S3。

答案 1 :(得分:0)

以下查询将按执行时间列出最热门的查询,但正如John上面提到的,只会返回两到五天的日志历史记录。

SELECT
w.userid,
w.query,
w.service_class_start_time AS "Day",
w.total_queue_time / 60000000 AS "Total Queue Time Minutes",
w.total_exec_time / 60000000 AS "Total Exec Time Minutes",
w.total_queue_time / 60000000 + w.total_exec_time / 60000000 AS "Total Time  Minutes"
FROM
stl_wlm_query w
ORDER BY
6 DESC