728x90
💡 Today I Learned 요약 (26회차)
- Redshift에서는 세션 보호를 위해 특정 쿼리 동작 중에 추가 쿼리 동작을 잠글 수 있다.
- 쿼리를 통해 잠금 처리된 쿼리를 확인하고 종료시켜 롤백할 수 있다.
AWS Redshift에서 block이 걸려서 쿼리가 지연될 때 확인하고 종료하는 방법
Redshift에서 풀스캔 쿼리가 아닌데 이유 없이 돌고 있을 경우 잠금(block) 처리된 것을 의심할 수 있다. 보통은 block을 유발한 쿼리가 완료되면 block이 풀리고 후속 쿼리가 실행이 되지만 데이터 전처리 도중 다른 쿼리가 동작하여 block이 발생할 경우 시간에 쫓기게 될 수 있다. 그럴 때 확인 방법 및 종료, 쿼리 확인 방법에 대해 정리한다.
redshift 문서에서 정의하는 쿼리 잠금의 종류는 아래와 같다.
1. AccessExclusiveLock : UNLOAD, SELECT, UPDATE 또는 DELETE 작업 중에 획득
2. AccessShareLock : UNLOAD, SELECT, UPDATE 또는 DELETE 작업 중에 획득
3. ShareRowExclusiveLock : COPY, INSERT, UPDATE 또는 DELETE 작업 중에 획득
block 상태를 확인하기 위해서는 Redhisft에서 아래 쿼리를 입력하여 blocking_pid를 확인한다.
select a.txn_owner, a.txn_db, a.xid, a.pid, a.txn_start, a.lock_mode, a.relation as table_id,nvl(trim(c."name"),d.relname) as tablename, a.granted,b.pid as blocking_pid ,datediff(s,a.txn_start,getdate())/86400||' days '||datediff(s,a.txn_start,getdate())%86400/3600||' hrs '||datediff(s,a.txn_start,getdate())%3600/60||' mins '||datediff(s,a.txn_start,getdate())%60||' secs' as txn_duration
from svv_transactions a
left join (select pid,relation,granted from pg_locks group by 1,2,3) b
on a.relation=b.relation and a.granted='f' and b.granted='t'
left join (select * from stv_tbl_perm where slice=0) c
on a.relation=c.id
left join pg_class d on a.relation=d.oid
where a.relation is not null;
해당되는 pid를 확인했으면 아래 쿼리로 해당 프로세스를 강제로 종료할 수 있다. 아래 쿼리가 실행되면 동작중인 쿼리의 트랜잭션은 롤백된다.
select pg_terminate_backend({PID});
해당 PID의 쿼리를 확인하고 싶다면 아래 쿼리를 입력하면 된다.
select query, trim(querytxt) as sqlquery, *
from stl_query where pid = {PID}
order by query desc;
#aws 관련 리서치 내역:
728x90
'CLOUD' 카테고리의 다른 글
[TIL] Docker 기본 실행 명령어 221108 (0) | 2022.11.08 |
---|---|
[TIL] AWS CLI s3 sync를 사용하여 파일 전송하기 221028 (0) | 2022.10.28 |
[TIL] AWS redshift에 Copy 명령어로 csv 데이터 적재 시 csv 내에 json이 포함되어 있을 때 고려해야 할 데이터 변환 파라미터 종류 221026 (0) | 2022.10.26 |
[TIL] AWS Athena에서 쿼리 진행 상태 확인하기 (0) | 2022.10.05 |
[TIL] AWS Athena에서 Json 값 추출 220927 (0) | 2022.09.27 |
[TIL] AWS cli를 사용해서 s3 파일 일괄 다운받기 220921 (0) | 2022.09.21 |