防止可能的PostgreSQL GUC参数竞争条件?

问题描述 投票:0回答:1

假设我有两个数据库客户端并行执行对PostgreSQL集群的查询。我决定我希望其中一个在2使用max_parallel_workers_per_gather,另一个在6使用。

所以,客户#1会做

exec("SET max_parallel_workers_per_gather=2; // A
SELECT * FROM large_scan; // B
");

客户端2将执行此操作

exec("SET max_parallel_workers_per_gather=6; // C
SELECT * FROM other_large_scan; // D
");

我期望序列A-> B-> C-> D,以便B和D都使用指定参数同时执行。但是序列A-> C-> B-> D可能吗?这将给两个客户6,这不是我想要的!

我正在使用SPI,我认为它不支持异步执行。

postgresql parallel-processing race-condition postgresql-12
1个回答
0
投票

在会话中设置参数通常是该会话本地的。执行顺序可以是A-> C-> B-> D,但这并不意味着B会注意C的工作。

© www.soinside.com 2019 - 2024. All rights reserved.