STV_INFLIGHT - Amazon Redshift

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

STV_INFLIGHT

使用 STV_INFLIGHT 資料表來判斷正在叢集中執行的查詢為何。如果您要進行疑難排解,檢查長時間執行查詢的狀態會很有幫助。

STV_INFLIGHT 不會顯示僅限於領導節點的查詢。如需詳細資訊,請參閱僅限領導節點函數。所有使用者都可看見 STV_INFLIGHT。超級使用者可以看見所有資料列;一般使用者只能看見自己的資料。如需詳細資訊,請參閱系統資料表和檢視中資料的可見性

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

使用 STV_INFLIGHT 進行疑難排解

如果您使用 STV_INFLIGHT 對查詢或查詢集合的效能進行疑難排解,請注意下列事項:

  • 長時間運行的開放交易通常會增加負載。這些開啟的交易可能會導致其他查詢的執行時間較長。

  • 長時間執行的 COPY 和 ETL 任務佔用大量運算資源,可能會影響在叢集上執行的其他查詢。在大多數情況下,將這些長時間執行的工作移至低使用率的時間,可提高報告或分析工作負載的效能。

  • 有些檢視會提供相關資訊給 STV_INFLIGHT。其中包括擷取 SQL 命令查詢文字的 STL_QUERYTEXT,以及將 STV_INFLIGHT 連接至 STL_QUERYTEXT 的 SVV_QUERY_INFLIGHT。您也可以搭配 STV_RECENTS 使用 STV_INFLIGHT 進行疑難排解。例如,STV_RECENTS 可以指出特定查詢處於執行中完成狀態。將這些資訊與 STV_INFLIGHT 的結果結合在一起,可以為您提供有關查詢屬性和運算資源影響的更多資訊。

您也可以使用 Amazon Redshift 主控台監控執行中的查詢。

資料表欄

欄名稱 資料類型 描述
userid integer 產生項目之使用者的 ID。
分割 integer 查詢執行時所在的分割。
query integer 查詢 ID。可用於聯結其他系統資料表與檢視。
label character(320) 用於執行查詢的檔案名稱,或以 SET QUERY_GROUP 命令定義的標籤。如果查詢不是檔案型,或未設定 QUERY_GROUP 參數,則此欄位為空白。
xid bigint 交易 ID。
pid integer 處理程序 ID。工作階段中的所有查詢都是在相同的處理程序中執行,所以若您在相同的工作階段中執行一系列查詢,則此值通常會保持不變。您可以使用此資料欄來聯結至 STL_ERROR 資料表。
starttime timestamp 查詢開始的時間。
text character(100) 查詢文字,如果陳述式超過限制,將會截斷為 100 個字元。
suspended integer 查詢是否已遭停用。0 = false;1 = true。
insert_pristine integer 當目前查詢正在執行時,寫入查詢是否能夠執行。1 = 不允許寫入查詢。0 = 允許寫入查詢。此欄位適用於偵錯。
concurrency_scaling_status integer

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

0 - 執行於主要叢集

1 - 執行於並行擴展叢集

範例查詢

若要檢視目前正在資料庫上執行的所有使用中查詢,請輸入下列查詢:

select * from stv_inflight;

以下範例輸出顯示有兩個查詢正在執行,包括 STV_INFLIGHT 查詢本身以及從名為 avgwait.sql 的指令碼執行的查詢:

select slice, query, trim(label) querylabel, pid, starttime, substring(text,1,20) querytext from stv_inflight; slice|query|querylabel | pid | starttime | querytext -----+-----+-----------+-----+--------------------------+-------------------- 1011 | 21 | | 646 |2012-01-26 13:23:15.645503|select slice, query, 1011 | 20 |avgwait.sql| 499 |2012-01-26 13:23:14.159912|select avg(datediff( (2 rows)

下列查詢會選擇幾個欄,包括 concurrency_scaling_status。此欄指出是否要將查詢傳送至並行擴展叢集。如果該值對於某些結果是 1,則表示正在使用並行擴展運算資源。如需詳細資訊,請參閱並行擴展

select userid, query, pid, starttime, text, suspended, concurrency_scaling_status from STV_INFLIGHT;

範例輸出會顯示傳送至並行擴展叢集的一個查詢。

query | pid | starttime | text | suspended | concurrency_scaling_status --------+---------+----------------------------|------------------------|---------------|------------------------------- 1234567 | 123456 | 2012-01-26 13:23:15.645503 | select userid, query... 0 1 2345678 | 234567 | 2012-01-26 13:23:14.159912 | select avg(datediff(... 0 0 (2 rows)

如需疑難排解查詢效能的詳細提示,請參閱查詢疑難排解