

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# STL\_QUERY\_METRICS
<a name="r_STL_QUERY_METRICS"></a>

包含已在使用者定義的查詢佇列 (服務類別) 中完成執行之查詢的指標資訊，例如已處理的資料列數目、CPU 用量、輸入/輸出和磁碟使用情形。若要檢視目前執行中之作用中查詢的指標，請參閱 [STV\_QUERY\_METRICS](r_STV_QUERY_METRICS.md) 系統檢視。

查詢指標每間隔一秒鐘取樣一次。因此，相同查詢的不同執行可能會傳回稍微不同的時間。另外，可能不會記錄執行時間不到一秒的查詢區段。

STL\_QUERY\_METRICS 會追蹤並彙總查詢、區段和步驟層級的指標。如需查詢區段和步驟的相關資訊，請參閱[查詢計劃和執行工作流程](c-query-planning.md)。許多指標 (例如 `max_rows`、`cpu_time` 等等) 是跨節點配量加總的。如需節點配量的相關資訊，請參閱[資料倉儲系統架構](c_high_level_system_architecture.md)。

若要判斷資料列報告指標的層級，請檢查 `segment` 和 `step_type` 資料欄。
+ 如果 `segment` 和 `step_type` 皆為 `-1`，則資料列報告查詢層級的指標。
+ 如果 `segment` 不是 `-1`，且 `step_type` 是 `-1`，則資料列報告區段層級的指標。
+ 如果 `segment` 和 `step_type` 皆不是 `-1`，則資料列報告步驟層級的指標。

[SVL\_QUERY\_METRICS](r_SVL_QUERY_METRICS.md) 檢視和 [SVL\_QUERY\_METRICS\_SUMMARY](r_SVL_QUERY_METRICS_SUMMARY.md) 檢視彙總此檢視中的資料，並以更易存取的形式呈現資訊。

所有使用者都可看見 STL\_QUERY\_METRICS。超級使用者可以看見所有資料列；一般使用者只能看見自己的資料。如需詳細資訊，請參閱[系統資料表和檢視中資料的可見性](cm_chap_system-tables.md#c_visibility-of-data)。

此資料表中的部份或所有資料也會在 SYS 監控檢視 [SYS\_QUERY\_DETAIL](SYS_QUERY_DETAIL.md) 中找到。SYS 監視檢視中的資料會格式化為更易於使用和理解。我們建議您使用 SYS 監控檢視進行查詢。

## 資料表欄
<a name="r_STL_QUERY_METRICS-table-rows2"></a>


| 欄名稱  | 資料類型  | Description  | 
| --- | --- | --- | 
| userid  | integer  | 執行產生此項目之查詢的使用者 ID。 | 
| service\_class  | integer  | 服務類別的 ID。查詢佇列定義於 WLM 組態。只會回報使用者定義之佇列的指標。 | 
| query | integer  | 查詢 ID。查詢欄可用於加入其他系統表格與檢視。 | 
| segment  | integer  | 區段號碼。查詢包含多個區段，每個區段包含一或多個步驟。查詢區段可平行執行。每個區段皆在單一程序中執行。如果區段值為 -1，指標區段值將累計至查詢層級。 | 
| step\_type  | integer  | 執行的步驟類型。如需步驟類型的說明，請參閱[步驟類型](r_STV_QUERY_METRICS.md#r_STV_QUERY_METRICS-step-type)。 | 
| starttime  | timestamp  | 查詢開始執行的 UTC 時間，精確度為 6 位數的小數秒。例如：2009-06-12 11:29:19.131358。 | 
| slices  | integer  | 叢集的分割數量。 | 
| max\_rows  | bigint  | 為步驟匯出的最大資料列數 (彙總所有分割)。 | 
| rows  | bigint  | 步驟處理的資料列數。 | 
| max\_cpu\_time  | bigint  | 已使用的最大 CPU 時間，以微秒為單位。在區段層級，區段中所有分割已使用的最大 CPU 時間。在查詢層級，任何查詢區段已使用的最大 CPU 時間。 | 
| cpu\_time  | bigint  | 已使用的 CPU 時間，以微秒為單位。在區段層級，所有分割的區段所使用的 CPU 總時間。在查詢層級，所有分割與區段的查詢 CPU 時間總和。 | 
| max\_blocks\_read  | integer  | 區段讀取的 1 MB 區塊最大數量 (彙總所有分割)。在區段層級，所有分割的區段所讀取的 1 MB 區塊最大數量。在查詢層級，任何查詢區段所讀取的 1 MB 區塊最大數量。 | 
| blocks\_read  | bigint  | 查詢或區段所讀取的 1 MB 區塊數。 | 
| max\_run\_time  | bigint  | 區段的最大經過時間 (以微秒為單位)。在區段層級，所有分割之區段的最大執行時間。在查詢層級，任何查詢區段的最大執行時間。 | 
| run\_time  | bigint  | 所有分割合計的總執行時間。執行時間不包含等待時間。<br />在區段層級，所有分割合計的區段執行時間。在查詢層級，所有分割與區段的查詢執行時間總和。因為此值為總和，因此執行時間與查詢執行時間無關。 | 
| max\_blocks\_to\_disk  | bigint  | 用來寫入中繼結果之磁碟空間的數量上限，以 MB 區塊表示。在區段層級，所有分割之區段已使用的最大磁碟空間量。在查詢層級，任何查詢區段已使用的最大磁碟空間量。 | 
| blocks\_to\_disk  | bigint  | 查詢或區段用來寫入中繼結果之磁碟空間的數量上限，以 MB 區塊表示。 | 
| step | integer  | 執行的查詢步驟。 | 
| max\_query\_scan\_size | bigint  | 查詢所掃描的最大資料大小，以 MB 為單位。在區段層級，所有分割之區段所掃描的最大資料大小。在查詢層級，任何查詢區段所掃描的最大資料大小。 | 
| query\_scan\_size | bigint  | 查詢所掃描的資料大小，以 MB 為單位。 | 
| query\_priority  | integer  | 查詢的優先順序。可能的值為 -1、0、1、2、3 和 4，其中 -1 表示不支援查詢優先順序。 | 
| query\_queue\_time | bigint  | 查詢排入佇列的時間 (毫秒)。 | 
| service\_class\_name | character(64) | 服務類別的名稱。 | 

## 範例查詢
<a name="r_STL_QUERY_METRICS-sample-query2"></a>

若要找出具有高 CPU 時間 (超過 1,000 秒) 的查詢，請執行下列查詢。

```
Select query, cpu_time / 1000000 as cpu_seconds
from stl_query_metrics where segment = -1 and cpu_time > 1000000000
order by cpu_time;

query | cpu_seconds
------+------------
25775 |        9540
```

若要找出具有傳回超過一百萬個資料列之巢狀迴圈聯結的使用中查詢，請執行下列查詢。

```
select query, rows 
from stl_query_metrics 
where step_type = 15 and rows > 1000000
order by rows;

query | rows      
------+-----------
25775 | 2621562702
```

若要找出已執行超過 60 秒，但已使用 CPU 時間少於 10 秒的使用中查詢，請執行下列查詢。

```
select query, run_time/1000000 as run_time_seconds
from stl_query_metrics 
where segment = -1 and run_time > 60000000 and cpu_time < 10000000;

query | run_time_seconds
------+-----------------
25775 |              114
```