STL_QUERY - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

STL_QUERY

傳回有關資料庫查詢的執行資訊。

注意

STL_QUERY 和 STL_QUERYTEXT 檢視僅包含查詢的相關資訊,不包含其他公用程式和 DDDL 命令的相關資訊。如需 Amazon Redshift 執行之所有陳述式的清單和相關資訊,您也可以查詢 STL_DDLTEXT 和 STL_UTILITYTEXT 資料表視圖。如需 Amazon Redshift 運行之所有陳述式的完整清單,您可以查詢 SVL_STATEMENTTEXT 檢視。

為了管理磁碟空間,STL 日誌只會保留大約兩到五天的日誌歷史記錄,取決於日誌用量和可用的磁碟空間。如果想要保留日誌資料,則您需要定期將它複製到其他資料表或將它卸載至 Amazon S3。

所有使用者都可看見此視圖。超級使用者可以看見所有資料列;一般使用者只能看見自己的資料。如需詳細資訊,請參閱 系統資料表和檢視中資料的可見性

資料表欄位

資料欄名稱 資料類型 描述
userid integer 產生項目的使用者之 ID。
query integer 查詢 ID。查詢欄可用於加入其他系統表格與檢視。
label character(320) 用於執行查詢的檔案名稱,或以 SET QUERY_GROUP 命令定義的標籤。如果查詢不是檔案型,或未設定 QUERY_GROUP 參數,則此欄位值為 default
xid bigint 交易 ID。
pid integer 處理程序 ID。正常情況下,工作階段中的所有查詢都是在相同的處理程序中執行,所以若您在相同的工作階段中執行一系列查詢,則此值通常會保持不變。在特定內部事件後,Amazon Redshift 可能會重新啟動作用中工作階段並指派新的 PID。如需詳細資訊,請參閱 STL_RESTARTED_SESSIONS
database character(32) 當查詢發出時,要將使用者連接至其中的資料庫名稱。
querytxt character(4000) 查詢的實際查詢文字。
starttime timestamp 查詢開始執行的 UTC 時間,精確度為 6 位數的小數秒。例如:2009-06-12 11:29:19.131358
endtime timestamp 查詢完成執行的 UTC 時間,精確度為 6 位數的小數秒。例如:2009-06-12 11:29:19.131358
aborted integer 如果查詢已被系統停止或被使用者取消,則此資料欄包含1。如果查詢完成執行 (包括將結果傳回至用戶端),則此資料欄包含 0。如果用戶端在接收結果之前中斷連接,則查詢將標示為已取消 (1),即使它已在後端成功完成也一樣。
insert_pristine integer 當目前查詢正在執行時,寫入查詢是否能夠執行。此欄位適用於偵錯。
concurrency_scaling_status integer

指出查詢是執行於主要叢集或並行擴展叢集。可能的值如下:

0 - 執行於主要叢集

1 - 執行於並行擴展叢集

大於 1 - 執行於主要叢集

範例查詢

下列查詢會列出五個最新查詢。

select query, trim(querytxt) as sqlquery from stl_query order by query desc limit 5; query | sqlquery ------+-------------------------------------------------- 129 | select query, trim(querytxt) from stl_query order by query; 128 | select node from stv_disk_read_speeds; 127 | select system_status from stv_gui_status 126 | select * from systable_topology order by slice 125 | load global dict registry (5 rows)

下列查詢會針對 2013 年 2 月 15 日執行的查詢,依遞減順序傳回經過時間。

select query, datediff(seconds, starttime, endtime), trim(querytxt) as sqlquery from stl_query where starttime >= '2013-02-15 00:00' and endtime < '2013-02-16 00:00' order by date_diff desc; query | date_diff | sqlquery -------+-----------+------------------------------------------- 55 | 119 | padb_fetch_sample: select count(*) from category 121 | 9 | select * from svl_query_summary; 181 | 6 | select * from svl_query_summary where query in(179,178); 172 | 5 | select * from svl_query_summary where query=148; ... (189 rows)

下列查詢顯示查詢的佇列時間和執行時間。concurrency_scaling_status = 1 的查詢執行於並行擴展叢集。所有其他查詢皆執行於主要叢集。

SELECT w.service_class AS queue , q.concurrency_scaling_status , COUNT( * ) AS queries , SUM( q.aborted ) AS aborted , SUM( ROUND( total_queue_time::NUMERIC / 1000000,2 ) ) AS queue_secs , SUM( ROUND( total_exec_time::NUMERIC / 1000000,2 ) ) AS exec_secs FROM stl_query q JOIN stl_wlm_query w USING (userid,query) WHERE q.userid > 1 AND service_class > 5 AND q.starttime > '2019-03-01 16:38:00' AND q.endtime < '2019-03-01 17:40:00' GROUP BY 1,2 ORDER BY 1,2;