某个PG数据库专家说,不要用PG的两阶段提交,性能差的很。
那么差到什么程度呢?没有数据的说辞,不足信(PS:不见黄河不死心)
众所周知,两阶段比一阶段多了一次数据库操作,那么性能会差多少呢?
以下基于pg 11.6测试的结果,测试开关事务为500000,每次事务提交一条数据。
- PGDATA存储在虚拟机挂在的磁盘中
线程数 | 事务方式 | 所有线程总耗时合计 | TPS |
---|---|---|---|
1 | 普通事务 | 366999 | 1360 |
1 | 普通事务 | 367831 | 1359 |
1 | 两阶段 | 736021 | 679 |
1 | 两阶段 | 711244 | 703 |
10 | 普通事务 | 611475 | 8177 |
10 | 普通事务 | 598544 | 8354 |
10 | 两阶段 | 1214929 | 4115 |
10 | 两阶段 | 1200585 | 4165 |
20 | 普通事务 | 697869 | 14538 |
20 | 普通事务 | 706102 | 14162 |
20 | 两阶段 | 1407506 | 7105 |
20 | 两阶段 | 1389176 | 7199 |
磁盘实在是烂,所以再测试一个数据放在内存中的数据。
- PGDATA存储在/dev/shm"内存"中
线程数 | 事务方式 | 所有线程总耗时合计 | TPS |
---|---|---|---|
1 | 普通事务 | 81874 | 6107 |
1 | 普通事务 | 80941 | 6177 |
1 | 两阶段 | 152552 | 3278 |
1 | 两阶段 | 151460 | 3301 |
10 | 普通事务 | 116791 | 42811 |
10 | 普通事务 | 121387 | 41190 |
10 | 两阶段 | 208169 | 24019 |
10 | 两阶段 | 213138 | 23459 |
20 | 普通事务 | 244842 | 40843 |
20 | 普通事务 | 241036 | 41488 |
20 | 两阶段 | 352789 | 28345 |
20 | 两阶段 | 350499 | 28531 |
网友评论