我知道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
答案 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