쿼리의 테이블 스캔 단계를 분석합니다. 스캔은 세그먼트에서 첫 번째 단계이기 때문에 이 테이블에서 행의 단계 번호는 항상 0입니다.
STL_SCAN은 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 섹션을 참조하세요.
참고
STL_SCAN에는 기본 프로비저닝된 클러스터에서 실행되는 쿼리만 포함됩니다. 동시성 크기 조정 클러스터 또는 서버리스 네임스페이스에서 실행되는 쿼리는 포함되지 않습니다. 기본 클러스터, 동시성 크기 조정 클러스터, 서버리스 네임스페이스 모두에서 실행되는 쿼리에 대한 설명 계획에 액세스하려면 SYS 모니터링 뷰인 SYS_QUERY_DETAIL을 사용하는 것이 좋습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
userid | 정수 | 항목을 생성한 사용자의 ID. |
쿼리 | 정수 | 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다. |
slice | 정수 | 쿼리가 실행 중인 슬라이스를 식별하는 번호. |
segment | 정수 | 쿼리 세그먼트를 식별할 수 있는 번호 |
step | 정수 | 실행된 쿼리 단계입니다. |
starttime | 타임스탬프 | 쿼리 시작 시간(UTC) 총 시간에는 대기 및 실행이 포함되며 소수점 이하 자릿수는 6자리입니다. 예를 들면 2009-06-12 11:29:19.131358 입니다. |
endtime | 타임스탬프 | 쿼리가 완료된 시간(UTC)입니다. 총 시간에는 대기 및 실행이 포함되며 소수점 이하 자릿수는 6자리입니다. 예를 들면 2009-06-12 11:29:19.131358 입니다. |
tasknum | 정수 | 단계 실행을 위해 할당된 쿼리 태스크 프로세스 수. |
rows | bigint | 처리된 총 행 수. |
bytes | bigint | 단계에서 출력되는 모든 행의 크기(바이트) |
fetches | bigint | 이 정보는 내부 전용입니다. |
type | 정수 | 스캔 유형의 ID. 유효한 값 목록은 아래 표를 참조하세요. |
tbl | 정수 | 테이블 ID. |
is_rrscan | character(1) | true(t)인 경우, 단계에서 범위 제한 스캔이 사용되었음을 나타냅니다. |
is_delayed_scan | character(1) | 이 정보는 내부 전용입니다. |
rows_pre_filter | bigint | 영구 테이블 스캔의 경우, 삭제 대기 행(고스트 행)을 필터링하고 사용자 정의 쿼리 필터를 적용하기 전에 내보낸 행의 총수. |
rows_pre_user_filter | bigint | 영구 테이블을 스캔할 때 삭제 표시된 행(고스트 행)을 필터링한 이후부터 사용자 정의 쿼리 필터를 적용하기 전까지 처리된 행의 수 |
perm_table_name | character(136) | 영구 테이블을 스캔할 때 스캔된 테이블의 이름 |
is_rlf_scan | character(1) | true(t)인 경우, 단계에서 저수준 필터링이 사용되었음을 나타냅니다. |
is_rlf_scan_reason | 정수 | 이 정보는 내부 전용입니다. |
num_em_blocks | 정수 | 이 정보는 내부 전용입니다. |
checksum | bigint | 이 정보는 내부 전용입니다. |
runtime_filtering | character(1) | true이면 실행 시간 필터가 적용되었음을 나타냅니다. |
scan_region | 정수 | 이 정보는 내부 전용입니다. |
num_sortkey_as_predicate | 정수 | 이 정보는 내부 전용입니다. |
row_fetcher_state | 정수 | 이 정보는 내부 전용입니다. |
consumed_scan_ranges | bigint | 이 정보는 내부 전용입니다. |
work_stealing_reason | bigint | 이 정보는 내부 전용입니다. |
is_vectorized_scan | character(1) | 이 정보는 내부 전용입니다. |
is_vectorized_scan_reason | 정수 | 이 정보는 내부 전용입니다. |
row_fetcher_reason | bigint | 이 정보는 내부 전용입니다. |
topology_signature | bigint | 이 정보는 내부 전용입니다. |
use_tpm_partition | character(1) | 이 정보는 내부 전용입니다. |
is_rrscan_expr | character(1) | 이 정보는 내부 전용입니다. |
scanned_mega_value | character(1) | 이 정보는 내부 전용입니다. 이 정보는 지정된 스캔 단계에서 큰 값을 스캔했는지 여부를 보여줍니다. 큰 값은 여러 블록에 저장됩니다. 블록 크기는 기본적으로 1MB이며, 큰 값은 기본 설정에서 1MB보다 큽니다. |
스캔 유형
유형 ID | 설명 |
---|---|
1 | 네트워크의 데이터 |
2 | 압축된 공유 메모리의 영구 사용자 테이블 |
3 | 임시 행 방향 테이블 |
21 | Amazon S3에서 파일을 로드합니다. |
22 | Amazon DynamoDB에서 테이블을 로드합니다. |
23 | 원격 SSH 연결을 통한 로드 데이터 |
24 | 원격 클러스터(정렬된 리전)의 로드 데이터. 이 유형은 크기를 조정하는 데 사용됩니다. |
25 | 원격 클러스터(정렬되지 않은 리전)의 로드 데이터. 이 유형은 크기를 조정하는 데 사용됩니다. |
28 | 여러 테이블에서 UNION ALL을 사용하여 시계열 뷰에서 데이터 읽기. |
29 | Amazon S3 외부 테이블에서 데이터 읽기. |
30 | Amazon S3 외부 테이블의 파티션 정보 읽기. |
33 | 원격 Postgres 테이블에서 데이터 읽기. |
36 | 원격 MySQL 테이블에서 데이터 읽기. |
37 | 원격 Kinesis 스트림에서 데이터 읽기. |
사용 노트
rows
값은 비교적 rows_pre_filter
값에 가까울 때가 가장 이상적입니다. rows
와 rows_pre_filter
사이의 차이가 크면 실행 엔진이 나중에 무시되는 행을 스캔한다는 것을 의미하지만, 이는 비효율적입니다. rows_pre_filter
값과 rows_pre_user_filter
값의 차이는 스캔 작업 시 고스트 행의 수를 의미합니다. 이때는 VACUUM을 실행하여 삭제 표시된 행을 제거하세요. rows
값과 rows_pre_user_filter
값의 차이는 쿼리에서 필터링되는 행의 수입니다. 사용자 필터로 인해 다수의 행이 무시되는 경우에는 sort 열 선택을 살펴보고, 그렇지 않고 정렬되지 않은 영역이 너무 커서 다수의 행이 무시되는 경우에는 VACUUM을 실행하세요.
샘플 쿼리
다음은 테이블에 삭제만 되고 아직 정리되지 않은 행(고스트 행)이 있기 때문에 rows_pre_filter
값이 rows_pre_user_filter
값보다 큰 것을 나타내는 예입니다.
SELECT query, slice, segment,step,rows, rows_pre_filter, rows_pre_user_filter
from stl_scan where query = pg_last_query_id();
query | slice | segment | step | rows | rows_pre_filter | rows_pre_user_filter
-------+--------+---------+------+-------+-----------------+----------------------
42915 | 0 | 0 | 0 | 43159 | 86318 | 43159
42915 | 0 | 1 | 0 | 1 | 0 | 0
42915 | 1 | 0 | 0 | 43091 | 86182 | 43091
42915 | 1 | 1 | 0 | 1 | 0 | 0
42915 | 2 | 0 | 0 | 42778 | 85556 | 42778
42915 | 2 | 1 | 0 | 1 | 0 | 0
42915 | 3 | 0 | 0 | 43428 | 86856 | 43428
42915 | 3 | 1 | 0 | 1 | 0 | 0
42915 | 10000 | 2 | 0 | 4 | 0 | 0
(9 rows)