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

问题描述 投票:0回答:3

我知道 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/

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

摘自这篇文章:

如何通过查询获取 Redshift 中查询的总运行时间?

我发现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
sql amazon-web-services amazon-redshift
3个回答
0
投票

该查询正在使用

stl_wlm_query
表。

来自 用于日志记录的 STL 表 - Amazon Redshift

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


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

0
投票
SELECT user_id,
       query_id,
       transaction_id,
       session_id,
       status,
       trim(database_name) AS database_name,
       start_time,
       end_time,
       result_cache_hit,
       elapsed_time,
       queue_time,
       execution_time,
       planning_time,
       trim(query_text) as query_text,
       query_label
FROM sys_query_history
WHERE query_type = 'SELECT'
AND query_label = 'Monday'
AND result_cache_hit = 'false'
ORDER BY execution_time DESC
© www.soinside.com 2019 - 2024. All rights reserved.