我在pgsql中并行执行多个查询时遇到了死锁。它抛出异常
Detail: Process 6656 waits for ShareLock on transaction 609600; blocked by process 8616.
Process 8616 waits for ShareLock on transaction 609603; blocked by process 6656.
Hint: See server log for query details.
在这里如何找到哪个进程(查询)是6656?
答案 0 :(得分:1)
如果您的pgsql版本> = 9.2,则锁定查询将在那里
select * from pg_stat_activity where pid=6656
如果你的pgsql版本< 9.2,锁定查询不会出现
select * from pg_stat_activity where procpid=6656
为了杀死进程
select pg_terminate_backend(pid_to_kill);
或
select pg_cancel_backend(pid_to_cancel);
如果您使用的是pg_cancel_backend
,我建议您选择pg_terminate_backend
代替PGPOOL
作为首选。