STL_QUERYTEXT
SQL 명령의 쿼리 텍스트를 수집합니다.
STL_QUERYTEXT 뷰에 대한 쿼리를 실행하여 다음 문에 대해 기록된 SQL을 수집합니다.
-
SELECT, SELECT INTO
-
INSERT, UPDATE, DELETE
-
COPY
-
UNLOAD
-
VACUUM 및 ANALYZE를 실행하여 생성된 쿼리
-
CREATE TABLE AS (CTAS)
일정 기간 위의 문 작업에 대한 쿼리를 실행하려면 STL_QUERYTEXT 뷰와 STL_QUERY 뷰를 조인합니다.
참고
STL_QUERY 및 STL_QUERYTEXT 뷰에는 기타 유틸리티나 DDL 명령이 아닌 쿼리 정보만 저장됩니다. Amazon Redshift에서 실행되는 모든 문에 대한 목록 및 정보는 STL_DDLTEXT 보기와 STL_UTILITYTEXT 보기에 대한 쿼리를 실행하여 확인할 수 있습니다. Amazon Redshift에서 실행되는 모든 문에 대한 전체 목록은 SVL_STATEMENTTEXT 보기에 대한 쿼리를 실행하여 확인할 수 있습니다.
STL_DDLTEXTSTL_UTILITYTEXT 및 도 참조하세요.SVL_STATEMENTTEXT
STL_QUERYTEXT는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 섹션을 참조하세요.
이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 SYS_QUERY_TEXT에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
userid | 정수 | 항목을 생성한 사용자의 ID. |
xid | bigint | 트랜잭션 ID. |
pid | 정수 | 프로세스 ID. 일반적으로 한 세션의 모든 쿼리는 동일 프로세스에서 실행됩니다. 따라서 동일 세션에서 일련의 쿼리를 실행하는 경우에는 이 값은 대부분 같은 값을 유지합니다. Amazon Redshift는 특정한 내부 이벤트 이후에 활성 세션을 다시 시작하고 새 PID를 할당할 수도 있습니다. 자세한 내용은 STL_RESTARTED_SESSIONS 섹션을 참조하세요. 이 열을 사용하여 STL_ERROR 뷰에 조인할 수 있습니다. |
쿼리 | 정수 | 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다. |
SEQUENCE | 정수 | 단일 문에 200자 이상이 포함된 경우, 해당 문에 대해 추가 행이 기록됩니다. 시퀀스 0이 첫 번째 행이고 1이 두 번째 행이 되는 방식입니다. |
텍스트 | character(200) | 200자씩 증가하는 SQL 텍스트. 이 필드에는 백슬래시(\\ ) 및 줄 바꿈(\n ) 등의 특수 문자가 포함될 수 있습니다. |
샘플 쿼리
PG_BACKEND_PID() 함수를 사용하여 현재 세션에 대한 정보를 가져올 수 있습니다. 예를 들어 다음은 현재 세션에서 완료된 쿼리에 대해 쿼리 ID와 쿼리 텍스트 일부를 반환하는 쿼리입니다.
select query, substring(text,1,60) from stl_querytext where pid = pg_backend_pid() order by query desc; query | substring -------+-------------------------------------------------------------- 28262 | select query, substring(text,1,80) from stl_querytext where 28252 | select query, substring(path,0,80) as path from stl_unload_l 28248 | copy category from 's3://dw-tickit/manifest/category/1030_ma 28247 | Count rows in target table 28245 | unload ('select * from category') to 's3://dw-tickit/manifes 28240 | select query, substring(text,1,40) from stl_querytext where (6 rows)
저장된 SQL 재구성
STL_QUERYTEXT의 text
열에 저장된 SQL을 재구성하려면 SELECT 문을 실행하여 text
열의 1개 이상의 부분에서 SQL을 생성합니다. 재구성된 SQL을 실행하기 전에 모든 (\n
) 특수 문자를 줄 바꿈으로 바꿉니다. 다음 SELECT 문의 결과는 query_statement
필드에서 재구성된 SQL의 행입니다.
SELECT query, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement, COUNT(*) as row_count FROM stl_querytext GROUP BY query ORDER BY query desc;
예를 들어 다음 쿼리는 열 3개를 선택합니다. 쿼리 자체는 200자 이상이며 STL_QUERYTEXT에 여러 부분으로 저장됩니다.
select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;
이 예제에서 이 쿼리는 STL_QUERYTEXT의 text
열에 많은 두 부분(행)으로 저장됩니다.
select query, sequence, text from stl_querytext where query=pg_last_query_id() order by query desc, sequence limit 10;
query | sequence | text -------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 45 | 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 45 | 1 | \nFROM stl_querytext;
STL_QUERYTEXT에 저장된 SQL을 재구성하려면 다음 SQL을 실행합니다.
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from stl_querytext where query=pg_last_query_id();
클라이언트에서 재구성된 SQL을 사용하려면 모든 (\n
) 특수 문자를 줄 바꿈으로 바꿉니다.
text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;