안녕하세요. 다시 궁금한 것이 있어서 글을 올립니다.
Postgresq을 운영하다 cancel 혹은 terminate 하고 싶은 쿼리가 있을 때 아래의 두가지 함수를 이용합니다.
pg_terminate_backend
pg_cancel_backend
문제는... 위의 두 함수로도 종료가 되지 않는 쿼리가 존재할 때가 간혹 있습니다.
rollback을 수행해서 cancel 이나 terminate가 느린 건가... 확인을 해보지 못했지만... 그렇지는 않은 것 같습니다.
(30분 정도 기다리다가 위의 두함수를 실행했는데... 프로세스가 1일 넘게 종료되지 않았습니다. disk io 나 lock 문제 역시 확인했지만 아니었습니다.)
이럴때 os 에서 해당 pid를 kjill -9 로 종료하면 여러 문서나 web 페이지에서 언급하듯이 Postgresql이 자동으로 restart 해버립니다.
위의 두 함수로도 cancel 이나 terminate 가 안되는 경우에 Postgresql 이 restart 를 피하면서 목적을 달성할 수 있는 방법이 있는지 궁금합니다.
|