我知道 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/
但是我想知道是否有一个查询与上述查询类似,但除了执行时间之外还显示队列/等待时间?
摘自这篇文章:
我发现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
该查询正在使用
stl_wlm_query
表。
来自 用于日志记录的 STL 表 - Amazon Redshift:
为了管理磁盘空间,STL 日志表仅保留大约 两到五天的日志历史记录,具体取决于日志使用情况和可用磁盘空间。如果您想保留日志数据,您需要定期将其复制到其他表或卸载到 Amazon S3。
以下查询将按执行时间列出热门查询,但正如 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
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