Postgresql 两阶段提交性能差到什么程度?(三)

2021-05-11  本文已影响0人  onmeiei

补测了一个复杂场景,即数据库存在流复制的情况下,普通事务提交和两阶段提交的性能差异是不是很大呢?

Prepare Transaction的处理只会发生在主库上,从库根本就看不到两阶段的事务,理论上没有影响的。

同步流复制

首先,同步流复制情况下,仅测试20个并发,每个Batch为10的情况。

普通事务耗时,2153393ms;两阶段耗时,2365860ms
相对于没有同步流复制的情况,耗时都有增加,这个是预期内的。

有无同步流复制的达成率,普通事务耗时增加8%,两阶段耗时增加13%。
同步流复制情况下,普通事务对比两阶段的达成率为91%,达成率略有下降(无流复制情况下,达成率可以达到96%)。

异步流复制

再测试一下异步流复制的情况下,情况是否有所不同。
同样仅测试一个场景(测试20个并发,每个Batch为10)

普通事务耗时,2044819ms;两阶段耗时,2133728ms。

有无同步流复制的达成率,普通事务耗时增加2.6%,两阶段耗时增加2.6%。
异步流复制情况下,普通事务对比两阶段的达成率为96%,达成率完全一致。

结论

同步流复制,对普通事务和两阶段事务的影响略有不同,同步流复制对两阶段事务的影响略大(需要抓一下流量包,看看具体有什么不同,因为理论上是一致的才对)

而异步流复制,对普通事务和两阶段事务的影响是一样的。

上一篇下一篇

猜你喜欢

热点阅读