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

书接上回。
上篇中测试了一个事务提交一条数据的情况,但现实中一个事务往往操作多条记录(增删改)。产生的磁盘IO比一个事务提交一条数据多了不少。

下文中测试一个事务提交10条数据的情况,主要和上篇中的测试结果对比,看一下趋势。

以下基于pg 11.6测试的结果,测试开关事务为500000,每次事务提交十条数据。

  • PGDATA存储在虚拟机挂在的磁盘中
线程数 事务方式 所有线程总耗时合计 TPS
1 普通事务 1028293 486
1 普通事务 1023322 489
1 两阶段 1506393 332
1 两阶段 1483806 337
10 普通事务 1663607 3006
10 普通事务 1667904 2998
10 两阶段 2560134 1953
10 两阶段 2518882 1985
20 普通事务 2567368 3895
20 普通事务 2560740 3905
20 两阶段 3273503 3055
20 两阶段 3237924 3088

同样,磁盘实在是烂,所以再测试一个数据放在内存中的数据。

  • PGDATA存储在/dev/shm"内存"中
线程数 事务方式 所有线程总耗时合计 TPS
1 普通事务 488569 1023
1 普通事务 534670 935
1 两阶段 575160 869
1 两阶段 594215 841
10 普通事务 764146 6543
10 普通事务 764494 6540
10 两阶段 850754 5877
10 两阶段 827988 6038
20 普通事务 1992769 5018
20 普通事务 1984047 5040
20 两阶段 2079837 4808
20 两阶段 2064065 4845

结论

两阶段提交相对于普通事务提交的达成率

先来看图,以普通事务的效率为1,两阶段对比普通事务的达成率如下。

两阶段对比普通事务的达成率
  • 看三条蓝色柱,更新单条数据时,与并发无关,达成率稳定在50%,即两阶段的效率是普通事务的一半。
  • 看每个并发中的,蓝色柱和灰色柱的比较或者橙色柱和黄色柱的对比,可以发现:当单个事务更新记录增加时,两阶段对比普通事务的达成率增加。即:两阶段所产生的性能下降,由于更新数据的条数增加,影响被稀释。
  • 看黄色柱,当IO性能提升后,高并发情况下,两阶段相对于普通事务的性能达成率接近100%。

再来看一下,TPS绝对值

  • IO很差,更新记录少(穷得很,设备老旧)
    普通事务可以达到每秒14350次事务提交,两阶段可以达到7152次事务提交,如果系统按二八原则运行,每天满负荷运行白天(8小时)的20%时间。
//普通事务
14350 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 8265万次事务提交

//两阶段提交
7152 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 4119万次事务提交
  • IO很差,更新记录多(依旧穷得很,设备老旧)
    普通事务可以达到每秒3900次事务提交,两阶段可以达到3071次事务事务提交,如果系统按二八原则运行,每天满负荷运行白天(8小时)的20%时间。
//普通事务
3900 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 2246万次事务提交

//两阶段提交
3071 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 1769万次事务提交
  • IO非常好,更新记录少(公司壕无人性,不差钱)
    普通事务可以达到每秒41165次事务提交,两阶段可以达到28438次事务事务提交,如果系统按二八原则运行,每天满负荷运行白天(8小时)的20%时间。
//普通事务
41165 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 23711万次事务提交

//两阶段提交
28438 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 16380万次事务提交
  • IO非常好,更新记录多(公司壕无人性,不差钱)
    普通事务可以达到每秒5029次事务提交,两阶段可以达到4826次事务事务提交,如果系统按二八原则运行,每天满负荷运行白天(8小时)的20%时间。
//普通事务
5029 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 2896万次事务提交

//两阶段提交
4826 事务/秒 * 8小时 * 3600秒/小时 * 0.2(二八原则) = 2780万次事务提交

以上数据还只是单PG数据库的性能数据,对于非互联网乃至于小型互联网企业都是完全够用的。

建议

如果业务可以妥协,不要用任何一种分布式事务。
如果必须用分布式事务,不要直接否定某一种方案,要基于自己的业务实际情况进行分析,从而找到最适合自己的方案。

例如,我们目前面临的问题,每天不到千万业务量接口调用量,数据库给到了几十套,单纯讨论性能上考虑的话,两阶段提交是完全够用的。

防杠声明

本内容只是针对两阶段和普通事务的提交效率进行了对比,不讨论其他风险。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容