PostgreSQL을 통한 프로세스 확인 및 처리 kill

4517 단어 PostgreSQLSQLtech
최근에는 포스트포스트 SQL의 록을 자주 만난다.
확인과kill과정을 남기는 방법을 잊기 어렵다.

대상

  • PostgreSQL로 프로세스를 확인하고 싶은 사람
  • PostgreSQL로 처리하고 싶은 사람
  • 컨디션

  • PostgreSQL12
  • 프로세스 확인


    저도 SQL 해설을 썼는데 관심 있으면 참고할 수 있어요.
    sql
    select
      sel.pid as プロセス ID,
      sel.start as 開始時刻,
      sel.sql as 実行 SQL
    from
      (
        select
          pg_stat_get_backend_pid(sgbi.bid) as pid,
          pg_stat_get_backend_activity_start(sgbi.bid) as start,
          pg_stat_get_backend_activity(sgbi.bid) as sql
        from
          (
            select
            pg_stat_get_backend_idset() as bid
          ) as sgbi
      ) as sel
    where
      sel.sql <> '' -- 現在実行中の SQL が存在する場合のみ取得
      -- and
      -- sel.procpid ='' -- プロセス ID が特定できればここで指定
    order by
      pid desc; -- プロセス ID 順にソート
    ;
    
    SQL의 설명
    통계 정보 함수를 사용하여 각 정보를 얻다.
    중점 부분을 발췌하여 해설을 진행하다.
    행수
    코드
    설명
    8
    pg_stat_get_backend_pid
    백엔드 ID 번호와 연관된 프로세스 ID 가져오기
    9
    pg_stat_get_backend_activity_start
    백엔드 ID 번호와 연관된 프로세스 시작 시간 가져오기
    10
    pg_stat_get_backend_activity
    백엔드 ID 번호 가져오기
    14
    select pg_stat_get_backend_idset
    백엔드 ID 번호와 연결된 실행 SQL 가져오기

    프로세스 호출 방법


    킬의 방법은 두 가지가 있다.
    킬을 할 수 있다는 점에서는 같지만 행동이 다르니 주의하세요.

    pg_cancel_백킹으로.


    실행 중인 SQL을 취소합니다.
    아직 세션이 있기 때문에 데이터베이스에 더 이상 연결할 필요가 없다.
    sql
    SELECT pg_cancel_backend(int:プロセス ID);
    
    프로세스 ID: 프로세스 확인을 통해 얻은 프로세스 ID

    pg_terminate_백킹으로.


    세션을 분리합니다.
    세션이 닫혔습니다. 데이터베이스에 다시 연결해야 합니다.
    sql
    SELECT pg_terminate_backend(int:プロセス ID);
    
    프로세스 ID: 프로세스 확인을 통해 얻은 프로세스 ID

    좋은 웹페이지 즐겨찾기