gpt4 book ai didi

postgresql - 如何在 Postgres 同步复制中禁用未提交的读取?

转载 作者:行者123 更新时间:2023-11-29 12:56:13 26 4
gpt4 key购买 nike

我已经设置了带有同步复制的 PostgreSQL 9.5,请参阅:

postgres=# show synchronous_commit;
synchronous_commit
--------------------
on

假设我有

postgres=# select * from test;
id | value
----+--------
1 | value1

然后如果我关闭同步备用并发出

update test set value = 'value2' where id = 1;

如预期的那样,它挂起(因为备用数据库没有确认它)。

但是,如果我现在按 Ctrl-C,我会得到:

^CCancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
UPDATE 1

然后新的、仅在本地提交的值出现在查询中!

postgres=# select * from test;
id | value
----+--------
1 | value2

这是为什么?

为什么 Postgres 允许我读取未写入至少 2 台机器的配置?我希望读取旧数据 value1

我能否更改其行为以仅返回同步提交的数据?

相关未回答的问题:

相关代码:

最佳答案

正如 Craig Riger 所解释的那样,这是该功能现在的一个缺点。

请注意,只有一个备用数据库的同步复制设置,其中备用数据库已关闭,将被视为已关闭或功能失调。这就是为什么如果您不想减少您的可用性,您至少需要两个同步备用服务器。

关于postgresql - 如何在 Postgres 同步复制中禁用未提交的读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42686097/

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