STL_LOAD_COMMITS - Amazon Redshift

STL_LOAD_COMMITS

데이터 로드를 추적하거나 문제를 해결하기 위한 정보를 반환합니다.

이 뷰는 데이터베이스 테이블에 로드되는 각 데이터 파일의 진행 상황을 기록합니다.

STL_LOAD_COMMITS는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.

참고

STL_LOAD_COMMITS에는 기본 클러스터에서 실행되는 쿼리만 포함됩니다. 동시성 조정 클러스터에서 실행되는 쿼리는 포함되지 않습니다. 기본 및 동시성 조정 클러스터 모두에서 실행되는 쿼리에 액세스하려면 SYS 모니터링 뷰인 SYS_LOAD_DETAIL을 사용하는 것이 좋습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다.

테이블 열

열 명칭 데이터 유형 설명
userid 정수 항목을 생성한 사용자의 ID.
쿼리 정수 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다.
slice 정수 이 항목에서 로드되는 조각
name character(256) 시스템 정의 값
filename character(256) 추적 중인 파일 이름
byte_offset 정수 이 정보는 내부 전용입니다.
lines_scanned 정수 로드 파일에서 스캔되는 라인 수. 이 라인 수는 실제로 로드되는 행의 수와 다를 수도 있습니다. 예를 들어 로드 작업은 COPY 명령의 MAXERROR 옵션에 따라 스캔 도중에도 다수의 불량 레코드를 허용할 수도 있기 때문입니다.
오류 정수 이 정보는 내부 전용입니다.
curtime 타임스탬프 이 항목이 마지막으로 업데이트된 시간
status 정수 이 정보는 내부 전용입니다.
file_format character(16) 로드 파일의 형식입니다. 가능한 값은 다음과 같습니다.
  • Avro

  • JSON

  • ORC

  • PARQUET

  • 텍스트

is_partial 정수 true(1)인 경우 COPY 작업 중에 입력 파일이 범위로 분할됨을 나타내는 값입니다. 이 값이 false(0)이면 입력 파일이 분할되지 않습니다.
start_offset bigint COPY 작업 중에 입력 파일이 분할되는 경우 분할의 오프셋 값(바이트 단위)을 나타내는 값입니다. 각 파일 분할은 해당 start_offset 값과 함께 별도의 레코드로 기록됩니다. 파일이 분할되지 않은 경우 이 값은 0입니다.
copy_job_id bigint 복사 작업 식별자입니다. 0은 작업 식별자가 없음을 나타냅니다.

샘플 쿼리

다음은 마지막 COPY 작업의 세부 정보를 반환하는 예입니다.

select query, trim(filename) as file, curtime as updated from stl_load_commits where query = pg_last_copy_id(); query | file | updated -------+----------------------------------+---------------------------- 28554 | s3://dw-tickit/category_pipe.txt | 2013-11-01 17:14:52.648486 (1 row)

다음은 TICKIT 데이터베이스에 새로운 테이블 로드 항목을 저장하는 쿼리입니다.

select query, trim(filename), curtime from stl_load_commits where filename like '%tickit%' order by query;
query | btrim | curtime -------+---------------------------+---------------------------- 22475 | tickit/allusers_pipe.txt | 2013-02-08 20:58:23.274186 22478 | tickit/venue_pipe.txt | 2013-02-08 20:58:25.070604 22480 | tickit/category_pipe.txt | 2013-02-08 20:58:27.333472 22482 | tickit/date2008_pipe.txt | 2013-02-08 20:58:28.608305 22485 | tickit/allevents_pipe.txt | 2013-02-08 20:58:29.99489 22487 | tickit/listings_pipe.txt | 2013-02-08 20:58:37.632939 22593 | tickit/allusers_pipe.txt | 2013-02-08 21:04:08.400491 22596 | tickit/venue_pipe.txt | 2013-02-08 21:04:10.056055 22598 | tickit/category_pipe.txt | 2013-02-08 21:04:11.465049 22600 | tickit/date2008_pipe.txt | 2013-02-08 21:04:12.461502 22603 | tickit/allevents_pipe.txt | 2013-02-08 21:04:14.785124 22605 | tickit/listings_pipe.txt | 2013-02-08 21:04:20.170594 (12 rows)

레코드가 이 시스템 뷰의 로그 파일에 작성된다고 해서 저장 트랜잭션(containing transaction)에서 로드가 성공적으로 커밋되었다는 것을 의미하지는 않습니다. 로드 커밋 여부를 확인하려면 STL_UTILITYTEXT 뷰에 대한 쿼리를 실행하여 COPY 트랜잭션과 일치하는 COMMIT 레코드를 찾습니다. 예를 들어 다음 쿼리는 STL_UTILITYTEXT에 대한 하위 쿼리를 기준으로 STL_LOAD_COMMITS 테이블과 STL_QUERY 테이블을 조인합니다.

select l.query,rtrim(l.filename),q.xid from stl_load_commits l, stl_query q where l.query=q.query and exists (select xid from stl_utilitytext where xid=q.xid and rtrim("text")='COMMIT'); query | rtrim | xid -------+---------------------------+------- 22600 | tickit/date2008_pipe.txt | 68311 22480 | tickit/category_pipe.txt | 68066 7508 | allusers_pipe.txt | 23365 7552 | category_pipe.txt | 23415 7576 | allevents_pipe.txt | 23429 7516 | venue_pipe.txt | 23390 7604 | listings_pipe.txt | 23445 22596 | tickit/venue_pipe.txt | 68309 22605 | tickit/listings_pipe.txt | 68316 22593 | tickit/allusers_pipe.txt | 68305 22485 | tickit/allevents_pipe.txt | 68071 7561 | allevents_pipe.txt | 23429 7541 | category_pipe.txt | 23415 7558 | date2008_pipe.txt | 23428 22478 | tickit/venue_pipe.txt | 68065 526 | date2008_pipe.txt | 2572 7466 | allusers_pipe.txt | 23365 22482 | tickit/date2008_pipe.txt | 68067 22598 | tickit/category_pipe.txt | 68310 22603 | tickit/allevents_pipe.txt | 68315 22475 | tickit/allusers_pipe.txt | 68061 547 | date2008_pipe.txt | 2572 22487 | tickit/listings_pipe.txt | 68072 7531 | venue_pipe.txt | 23390 7583 | listings_pipe.txt | 23445 (25 rows)

다음 예에서는 is_partial 및 start_offset 열 값을 강조 표시합니다.

-- Single large file copy without scan range SELECT count(*) FROM stl_load_commits WHERE query = pg_last_copy_id(); 1 -- Single large uncompressed, delimited file copy with scan range SELECT count(*) FROM stl_load_commits WHERE query = pg_last_copy_id(); 16 -- Scan range offset logging in the file at 64MB boundary. SELECT start_offset FROM stl_load_commits WHERE query = pg_last_copy_id() ORDER BY start_offset; 0 67108864 134217728 201326592 268435456 335544320 402653184 469762048 536870912 603979776 671088640 738197504 805306368 872415232 939524096 1006632960