

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 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
<a name="r_STL_QUERY"></a>

데이터베이스 쿼리에 대한 실행 정보를 반환합니다.

**참고**  
STL\_QUERY 및 STL\_QUERYTEXT 뷰에는 기타 유틸리티나 DDL 명령이 아닌 쿼리 정보만 저장됩니다. Amazon Redshift에서 실행되는 모든 문에 대한 목록 및 정보는 STL\_DDLTEXT 보기와 STL\_UTILITYTEXT 보기에 대한 쿼리를 실행하여 확인할 수 있습니다. Amazon Redshift에서 실행되는 모든 문에 대한 전체 목록은 SVL\_STATEMENTTEXT 보기에 대한 쿼리를 실행하여 확인할 수 있습니다.

STL\_QUERY는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 [시스템 테이블 및 뷰에 있는 데이터의 가시성](cm_chap_system-tables.md#c_visibility-of-data) 섹션을 참조하세요.

이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 [SYS\_QUERY\_HISTORY](SYS_QUERY_HISTORY.md)에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.

쿼리 텍스트 길이가 4,000자를 초과하는 경우 STL\_QUERY는 잘린 데이터만 표시합니다. 전체 쿼리 텍스트를 얻으려면 행 전체에 걸쳐 쿼리 텍스트에 UNION을 사용하면 됩니다.

**참고**  
실행된 쿼리가 포함된 트랜잭션이 성공적으로 커밋되었는지 확인하려면 시스템 테이블과 `sys_transaction_history` 테이블 간에 조인 작업을 수행해야 합니다. 예제:  

```
SELECT 
    stlq.xid AS transaction_id,
    stlq.query AS query_id,
    TRIM(stlq.querytxt) AS query_text,
    th.status AS transaction_status
FROM 
    stl_query stlq
LEFT JOIN 
    sys_transaction_history th ON stlq.xid = th.transaction_id;
```

## 테이블 열
<a name="sub-r_STL_QUERY-table-columns"></a>


| 열 이름  | 데이터 유형  | 설명  | 
| --- | --- | --- | 
| userid | 정수 | 항목을 생성한 사용자의 ID. | 
| 쿼리  | 정수 | 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다. | 
| 레이블  | character(320)  | 쿼리 실행에 사용되는 파일의 이름 또는 SET QUERY\_GROUP 명령을 사용하여 정의되는 레이블. 쿼리가 파일 기반이 아니거나 QUERY\_GROUP 파라미터가 설정되지 않은 경우, 이 필드의 값은 default입니다. | 
| xid  | bigint  | 트랜잭션 ID. | 
| pid  | 정수  | 프로세스 ID. 일반적으로 한 세션의 모든 쿼리는 동일 프로세스에서 실행됩니다. 따라서 동일 세션에서 일련의 쿼리를 실행하는 경우에는 이 값은 대부분 같은 값을 유지합니다. Amazon Redshift는 특정한 내부 이벤트 이후에 활성 세션을 다시 시작하고 새 PID를 할당할 수도 있습니다. 자세한 내용은 [STL\_RESTARTED\_SESSIONS](r_STL_RESTARTED_SESSIONS.md) 섹션을 참조하세요. | 
| 데이터베이스 | 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  | 정수  | 쿼리가 시스템에 의해 중지되거나 사용자에 의해 취소되는 경우, 이 열에 1이 포함됩니다. 쿼리를 끝까지 실행한 경우에는(클라이언트에게 결과를 반환하는 단계까지 포함) 이 열에 0이 포함됩니다. 결과가 수신되기 전에 클라이언트 연결이 끊어지면 쿼리가 백엔드에서 성공적으로 완료되더라도 취소됨(1)으로 표시됩니다. | 
| insert\_pristine  | 정수  |  현재 쿼리를 지금/이전에 실행했을 때 쓰기 쿼리를 지금/이전에 실행할 수 있는 여부입니다. 1 = 쓰기 쿼리가 허용되지 않음. 0 = 쓰기 쿼리가 허용됨. 이 열은 디버깅 시 사용하도록 되어 있습니다. | 
| concurrency\_scaling\_status | 정수  | 쿼리가 기본 클러스터에서 실행되었는지 아니면 동시성 확장 클러스터에서 실행되었는지를 나타냅니다. 가능한 값은 다음과 같습니다.<br />0 - 기본 클러스터에서 실행되었습니다.<br />1 - 동시성 확장 클러스터에서 실행되었습니다.<br />1보다 큼 - 기본 클러스터에서 실행되었습니다. | 

## 샘플 쿼리
<a name="r_STL_QUERY-sample-queries"></a>

다음은 가장 최근 쿼리 5개를 나열하는 쿼리입니다.

```
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;
```