【发布时间】:2021-08-18 07:20:47
【问题描述】:
我找不到任何地方对此进行了定义,因此向大家寻求帮助。我在 plgpsql 中有一个长时间运行的存储过程(5 秒),但需要为特定部分放置一个锁,因此计划使用 pg_advisory_xact_lock。但我显然不想锁定整个 5 秒,所以想知道我是否将存储过程分解为 2 个或更多存储过程 - 一个调用其他存储过程的主要存储过程,它如何与事务锁一起工作?每个存储过程是否都算作一个事务,所以当该存储过程完成(提交)时锁会结束?还是整个存储过程调用链都算作一个事务?
即如果我有
procedure A
call procedure B
call procedure C
end
如果我在程序 B 中放置一个事务锁,它会在程序 C 开始之前解锁吗?还是会锁定直到过程 A 返回?
感谢您提供的任何帮助或指向我在哪里可以找到此信息的指示。
【问题讨论】:
标签: sql postgresql concurrency locking plpgsql