IT/DBMS

[PostGreSQL] 현재 실행중인 SQL 조회, 종료

알 수 없는 사용자 2022. 11. 28. 07:08
반응형

목차

    image source:https://namu.wiki/w/PostgreSQL

     

    PostGreSQL 현재 실행중인 SQL 조회, 종료

    현재 실행중인 SQL 조회 쿼리😊

    select  * 
    from pg_stat_activity
    ;

    컬럼 정보

    image source:https://kwomy.tistory.com/80

     

    lock 걸린 테이블 조회🙄

    SELECT t.relname, 
    	   l.locktype, 
           page, 
           virtualtransaction, 
           pid, 
           mode, 
           granted 
    FROM pg_locks l, pg_stat_all_tables t 
    WHERE l.relation = t.relid ORDER BY relation asc
    ;

    현재 테이블에 lock을 확인 할 수 있다. 기본적으로 대부분의 lock 테이블은 괜찮으나

    RowExclusiveLock 이 검색된다면 해당 테이블에 접근이 지연되어 다른 쿼리에도 영향을 미칠 수 있으므로 반드시 잡고있는 트랜잭션이나 서버 상태 등을 점검하여 lock을 해제 해 주는 작업이 필요하다.

     

    해당 작업 종료😎

    pg_cancel_backend(int pid)

    SELECT pg_cancel_backend(int pid);
    -- ex pg_stat_activity에서 조회한 pid값을 매개변수 값으로 넣어줌
    SELECT pg_cancel_backend(20020);

    return 값 : true or false

    pg_cancel_backend는 해당 pid만 중지시킴, 이렇게 해서 종료가 안될 경우도 있음

    이 경우 pg_terminate_backen로 중지시킨 후 다시 pg_cancel_backend()를 다시 실행

     

    pg_terminate_backen(int pid)🙂

    select pg_terminate_backen(int pid);
    -- ex) pg_stat_activity에서 조회한 pid값을 매개변수 값으로 넣어줌
    select pg_terminate_backen(20020);

    pg_terminate_backend는 해당 PID와 연계된 모든 상위 쿼리 프로세스를 종료시킨다.

    return 값 : true or false

     

    참조 : Kwomy's DB World님 블로그, 2021.06.30, https://kwomy.tistory.com/80

     

    [PostgreSQL] 테이블 lock 조회 및 kill하기

    현재 수행중인 SQL 전체 조회 select datname, pid, usename, application_name, client_addr, client_port, backend_start, query_start, wait_event_type, state, backend_xmin query from pg_stat_activity; 위..

    kwomy.tistory.com

    반응형