Postgres的死锁

时间:2014-11-13 12:57:31

标签: postgresql

我在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?

1 个答案:

答案 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作为首选。