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