2017-01-04 104 views
1

我正在使用紅移對一些查詢進行基準測試,以便我可以對我在表格中進行的更改(如添加編碼和運行真空)進行智能說明。我可以使用LIKE子句查詢stl_query表以查找我感興趣的查詢,所以我有查詢ID,但像stv_query_summary這樣的表/視圖太精細,我不確定如何生成我需要的摘要!如何通過查詢獲取紅移查詢的總運行時間?

gui儀表板顯示我感興趣的指標,但格式很難存儲以供以後分析/比較(換句話說,我想避免截圖)。有沒有一種好的方法來重新生成SQL選擇的視圖?

+0

AWS Admin/Redshift部分以GUI格式共享大量類似的信息。 – kadalamittai

+0

對 - 我想避免使用gui,因爲我想將這些結果存儲在其他地方以供進一步分析。我可以複製和/或採取截圖,但這並不理想。 –

+0

是有道理的。幾乎所有繪製在aws登錄紅移控制檯中的數據都可以以表格的形式提供。 SVV,STL等,如果你正在尋找列/行數據你可以使用它。 – kadalamittai

回答

1

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

一些usefuls工具/腳本這裏是剝離出來給你以毫秒爲單位查詢運行時間表示腳本之一。與過濾器玩,排序等,以顯示你正在尋找的結果:

select userid, label, stl_query.query, trim(database) as database, trim(querytxt) as qrytext, starttime, endtime, datediff(milliseconds, starttime,endtime)::numeric(12,2) as run_milliseconds, 
     aborted, decode(alrt.event,'Very selective query filter','Filter','Scanned a large number of deleted rows','Deleted','Nested Loop Join in the query plan','Nested Loop','Distributed a large number of rows across the network','Distributed','Broadcasted a large number of rows across the network','Broadcast','Missing query planner statistics','Stats',alrt.event) as event 
from stl_query 
left outer join (select query, trim(split_part(event,':',1)) as event from STL_ALERT_EVENT_LOG group by query, trim(split_part(event,':',1))) as alrt on alrt.query = stl_query.query 
where userid <> 1 
-- and (querytxt like 'SELECT%' or querytxt like 'select%') 
-- and database = '' 
order by starttime desc 
limit 100 
0

要添加到亞歷克斯的答案,我想評論說stl_query表有不便之處,如果查詢是在隊列運行之前那麼隊列時間將包含在運行時間中,因此運行時不會是查詢性能的非常好的指標。

要理解查詢的實際運行時間,請在stl_wlm_query上檢查total_exec_time。

select total_exec_time 
from stl_wlm_query 
where query='query_id'