New replication mode: write
От | Fujii Masao |
---|---|
Тема | New replication mode: write |
Дата | |
Msg-id | CAHGQGwFmB7PvDvoRWPq6dQ1TZzd81pi7xZoTwJXXgPQfdapJ+g@mail.gmail.com обсуждение исходный текст |
Список | pgsql-hackers |
Hi, http://archives.postgresql.org/message-id/AANLkTilgyL3Y1jkDVHX02433COq7JLmqicsqmOsbuyA1%40mail.gmail.com Previously I proposed the replication mode "recv" on the above thread, but it's not committed yet. Now I'd like to propose that mode again because it's useful to reduce the overhead of synchronous replication. Attached patch implements that mode. If you choose that mode, transaction waits for its WAL to be write()'d on the standby, IOW, waits until the standby saves the WAL in the memory. Which provides lower level of durability than that current synchronous replication (i.e., transaction waits for its WAL to be flushed to the disk) does. However, it's practically useful setting because it can decrease the response time for the transaction, and causes no data loss unless both the master and the standby crashes and the database of the master gets corrupted at the same time. In the patch, you can choose that mode by setting synchronous_commit to write. I renamed that mode to "write" from "recv" on the basis of its actual behavior. I measured how much "write" mode improves the performance in synchronous replication. Here is the result: synchronous_commit = on tps = 424.510843 (including connections establishing) tps = 420.767883 (including connections establishing) tps = 419.715658 (including connections establishing) tps = 428.810001 (including connections establishing) tps = 337.341445 (including connections establishing) synchronous_commit = write tps = 550.752712 (including connections establishing) tps = 407.104036 (including connections establishing) tps = 455.576190 (including connections establishing) tps = 453.548672 (including connections establishing) tps = 555.171325 (including connections establishing) I used pgbench (scale factor = 100) as a benchmark and ran the following command. pgbench -c 8 -j 8 -T 60 -M prepared I always ran CHECKPOINT in both master and standby before starting each pgbench test, to prevent CHECKPOINT from affecting the result of the performance test. Thought? Comments? Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
Вложения
В списке pgsql-hackers по дате отправления: