本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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)
如需疑難排解查詢效能的詳細提示,請參閱查詢疑難排解。