2012-12-17 3 views
1

postgres 클라이언트가 장기 실행 쿼리를 실행 중입니다. 클라이언트는 SIGTERM을 수신합니다. 이상적으로 클라이언트가 SIGTERM을 트랩하고 pg_cancel_backend(pid)을 전송하여 쿼리를 정리 한 다음 종료하십시오.어떻게 클라이언트 측 신호를 트랩하고 백엔드에서 postgresql 쿼리를 종료합니까?

이것은 클라이언트 - 서버 데이터베이스 아키텍처에 공통적 인 문제인 것처럼 보일 수 있지만 해결책을 찾을 수 없습니다. 대신 쿼리가 완료 될 때까지 계속 진행되므로 불필요한 리소스가 사용됩니다.

어떻게 클라이언트가 백엔드 쿼리의 PID를 확실하게 결정할 수 있습니까? (나는 백엔드 쿼리를 대화식으로보고 발급 된 쿼리와 일치하는 것으로 보이는 것을 선택하는 것을 의미하지는 않습니다.) 예를 들어, 영구 데이터베이스 연결과 관련된 PID가 있습니까?

Ctrl-C를 누를 때 psql을 사용할 때 어떻게 작동합니까?

답변

1

pg_backend_pid()을 사용하면 현재 연결에 PID을 얻을 수 있습니다.

세부 사항 here.

+0

9.2 만 사용자가 자신의 전화를 취소 할 수 있습니다. 이전 버전에서는 수퍼 유저로 새로운 연결이 필요했습니다. –

관련 문제