gpt4 book ai didi

sql - 如何释放可能的 Postgres 行锁?

转载 作者:太空狗 更新时间:2023-10-30 01:38:34 25 4
gpt4 key购买 nike

我通过 phpPgAdmin 界面在一个大型 PostgreSQL 表上运行了一条更新语句。由于运行时间过长而超时。

我现在可以更新该表中的一些行,但不是全部。尝试更新某些行会挂起。

行是否锁定?如何允许更新这些行?

最佳答案

可以看到锁。

这是一个比直接使用 pg_locks 更容易的 View :

CREATE OR REPLACE VIEW public.active_locks AS 
SELECT t.schemaname,
t.relname,
l.locktype,
l.page,
l.virtualtransaction,
l.pid,
l.mode,
l.granted
FROM pg_locks l
JOIN pg_stat_all_tables t ON l.relation = t.relid
WHERE t.schemaname <> 'pg_toast'::name AND t.schemaname <> 'pg_catalog'::name
ORDER BY t.schemaname, t.relname;

然后您只需从 View 中选择:

SELECT * FROM active_locks;

并杀死它:

SELECT pg_cancel_backend('%pid%');

其他解决方案: http://wiki.postgresql.org/wiki/Lock_Monitoring

关于sql - 如何释放可能的 Postgres 行锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com