微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – Postgres数据库锁定:查询永远运行

我的一个 python脚本在Postgres数据库上运行了一些ALTER TABLE查询.发生了一些错误,桌子被锁定了.当我在任何这些表上运行任何查询时,它会告诉我Query Query并没有任何反应.
目前,我只能通过关闭我的系统并重新启动它来删除此锁.请告诉我一个更好的方法.这是一个 Windows主机.
你应该检查锁:
SELECT l.*,a.*
  FROM pg_locks l
  JOIN pg_stat_activity a USING (pid)
 WHERE NOT granted;

您将看到等待会话的列表.以下内容

SELECT l.*,a.*
  FROM pg_locks l
  JOIN pg_stat_activity a USING (pid)
 WHERE granted
   AND (database,relation) IN (SELECT database,relation
                                 FROM pg_locks WHERE NOT granted);

将为您提供阻止会话列表.如果使用psql,use expanded output获取每行列数输出,则最好查看此类信息.

我建议你也看看this wiki page和这个问题:Postgresql DROP TABLE doesn’t work
(虽然它在那里讲DROP TABLE,但它可能会有所帮助).

在您的情况下,我建议您确定阻止会话并尝试找出阻止他们的原因.根据我的经验,最典型的情况是 – 有人忘了在COMMIT之后按下输入并出去吃午饭.如果你确定这不会伤害你的系统,你可以杀死阻塞会话:

SELECT pg_terminate_backend(pid);

原文地址:https://www.jb51.cc/postgresql/191743.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐