STL_QUERYTEXT - Amazon Redshift

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;