一、压测目的
前面使用Sysbench 默认事务模型,已经对PG和Oracle进行了压测,在性能上没有明显的区分度。
为了更细粒度了解PG和oracle分别在insert,update,delete上的区别,特进行此次压测。另外也是为了Oracle向PG迁移时,提供基本性能数据支持。
二、压测结果
此次压测,PG和Oracle位于相同主机上,压测时分别独立进行。
PG版本:Portions Copyright (c) 2004-2013, EnterpriseDB Corporation 9.3AS
Oracle版本:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
硬件配置如下:
CPU:Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz,12 cores,24lcpu
内存:PG shared_buffer 为20G,其它默认; Oracle SGA 20G,PGA 2G,Shared pool 2G,其它默认
硬盘:同为SSD存储,INTEL SSDSC2BB480G4 447G,8个盘做了Raid 5
压测详细结果如下:
1.Insert
单独insert压测,PG比Oracle的性能要好。PG可以达到33.8K tps,而Oracle只能达到23.5K左右。Oracle主要等待在"buffer busy wait"和“enq:TX-index contention"上。
原因是:ID采用sequence取值,为了性能,已经加cache 2000。但是索引树右侧扩展时,”9-1“分裂为主要性能影响点。另外ID取值离散后,应该也会有性能上提升。
2.Update不带索引列
Update不带索引列时,Oracle性能比PG要好,Oracle最高能达到42K tps,PG在36K左右。达到高点后,两都均表现非常稳定。
3.Update带索引列
Update带索引列时,PG比Oracle稍好,PG最高在42.5K,Oracle达到40K tps。
4.Delete
delete操作时,Oracle的性能也比PG要好。Oracle能达到73.3K,而PG在65.4K左右。
三、压测总结
以上各种测试,IO完全没有问题,到最后,基本上是Oracle和PG在内存结构与算法上的比较。到达高点后,CPU使用均在100%左右;而后随着连接并发数增大,CPU sys不断提升。这在预期之内,
因并发数增大后,CPU switch 增加。另外,达到高点后,Oracle和PG性能表现都非常稳定。下次将对复杂SQL,如嵌套查询,表关联等进行压测。