В настоящее время я использую postgres в качестве своей базы данных, которую я подключил к веб-приложению.
В некоторых случаях я заметил, что в базе данных накапливаются блокировки, в основном AccessSharedLocks (при выполнении запроса: select * from pg_locks).
Одна вещь, которую я заметил, состоит в том, что для отмены процесса, который получает блокировку, вы можете использовать pg_cancel_backend (pid), но иногда я понимаю, что это не всегда работает !! И мне любопытно узнать почему. Это то, что эта функция отправляет SIGINT в базу данных, чтобы завершить его изящно? это означает, что он не выключит его немедленно?
Существует pg_terminate_backend, но я предпочитаю не использовать это.
Любой совет о том, почему pg_cancel_backend работает с перебоями (или хотя бы какое-нибудь объяснение), был бы признателен).
спасибо.