Redshift查询永远挂起,PG_TERMINATE_BACKEND不起作用

时间:2015-09-22 23:05:45

标签: intellij-idea amazon-redshift

我使用IntelliJ Ultimate来查询Redshift,以及调试一些python代码,这些代码在Redshift中进行简单的单行插入。通常,insert语句在不到一秒的时间内完成,但它开始挂起。似乎查询正在等待另一个查询所持有的锁。

我使用这些查询(以及其他查询)来查看发生了什么:

select t."table", l.*, q.*
from stv_locks l
join svv_table_info t on (l.table_id = t.table_id)
join stl_query q on (l.lock_owner = q.xid)

select * from stv_inflight;

select * from stv_sessions;

我发现调试器中以前运行的python代码仍然保持写锁定,即使在进程退出之后也是如此。我确定有问题的pid是30461,所以我试图用:

杀死会话
select pg_terminate_backend(30461);

然而,这似乎没有任何效果。参考Amazon's documentation for pg_terminate_backend,我也尝试在有问题的陈述中使用CANCEL命令:

cancel 1311;

当我尝试执行时,IntelliJ似乎没有将此语句发送到服务器,因此我使用了psql命令行工具。执行后,问题仍然存在,尽管有大量的谷歌搜索我无法找到答案。似乎我可能必须重新启动Redshift实例以释放锁定。

1 个答案:

答案 0 :(得分:0)

事实证明,解决方案是重启我的IDE。即使我尝试在IntelliJ数据库控制台中断开与Redshift的连接,它似乎仍然存在导致问题的连接。退出IDE后,立即释放锁定,因为我验证了查询:

select * from stv_locks