Мы планируем полный синхронный кластер PG с 3 узлами, но мы спросили себя, возможно ли иметь асинхронный кластер с частичными синхронными коммитами.
Обычно вы делаете свой кластер полностью синхронным, и вы можете указать отдельные транзакции как асинхронные, установив «SET LOCAL synchronous_commit TO OFF». Есть и другой способ или нет?
Да, можно сделать наоборот.
Просто настройте его как обычный синхронный кластер, но установите synchronous_commit = off
в postgresql.conf
. Затем:
SET LOCAL synchronous_commit TO ON
в транзакциях, которые вы хотите совершать синхронно.
Однако имейте в виду, что синхронная фиксация заставит предыдущие фиксации сбрасываться до того, как она сможет зафиксироваться. Итак, если вы делаете коммиты 1, 2, 3, 4, 5, [sync]6, 7, 8
, затем фиксирует с 1 по 6 включающий должен быть сброшен до того, как фиксация 6 сообщит об успехе.