STV_RECENTS - Amazon Redshift

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

STV_RECENTS

使用 STV_RECENTS 資料表找出目前使用中並在最近針對資料庫執行之查詢的相關資訊。

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

此資料表中的部份或所有資料也會在 SYS 監控檢視 SYS_QUERY_HISTORY 中找到。SYS 監視檢視中的資料會格式化為更易於使用和理解。我們建議您使用 SYS 監控檢視進行查詢。

Troubleshooting with STV_RECENTS

STV_RECENTS 對於確定查詢或查詢集合目前是否正在執行或已完成特別有用。它也會顯示查詢執行的持續時間。這對於了解哪些查詢長時間執行很有幫助。

您可以將 STV_RECENTS 聯結至其他系統檢視,例如 STV_INFLIGHT,以收集有關執行查詢的其他中繼資料。(範例查詢部分中有一個範例展示如何執行此操作。) 您也可以使用此檢視中的傳回記錄以及 Amazon Redshift 主控台中的監控功能,進行即時疑難排解。

補充 STV_RECENTS 的系統檢視包括 STL_QUERYTEXT (會擷取 SQL 命令的查詢文字),以及 SVV_QUERY_INFLIGHT (會將 STV_INFLIGHT 連接到 STL_QUERYTEXT)。

資料表欄

欄名稱 資料類型 描述
userid integer 產生項目之使用者的 ID。
status character(20) 查詢狀態。有效值為 RunningDone
starttime timestamp 查詢開始的時間。
持續時間 integer 工作階段開始之後的時間 (微秒)。
user_name character(50) 執行處理程序者的使用者名稱。
db_name character(50) 資料庫的名稱。
query character(600) 查詢文字,最多 600 個字元。任何額外的字元都會被截斷。
pid integer 與查詢關聯之工作階段的處理程序 ID,已完成之查詢的此 ID 一律為 -1。

範例查詢

若要判斷目前正在資料庫上執行的有哪些查詢,請執行下列查詢:

select user_name, db_name, pid, query from stv_recents where status = 'Running';

以下範例輸出顯示執行於 TICKIT 資料庫的單一查詢:

user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;

下列範例傳回正在執行或在佇列中等待執行之查詢 (如果有) 的清單:

select * from stv_recents where status<>'Done'; status | starttime | duration |user_name|db_name| query | pid -------+---------------------+----------+---------+-------+-----------+------ Running| 2010-04-21 16:11... | 281566454| dwuser |tickit | select ...| 23347

除非您正在執行多個並行查詢,而且其中部分查詢位於佇列中,否則此查詢不會傳回結果。

以下範例延伸之前的範例。在此情況中,真正「進行中」(執行中而非等待中) 的查詢會排除在結果之外:

select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...

如需疑難排解查詢效能的詳細提示,請參閱對查詢進行故障診斷