PG vs. Oracle Sysbench 0.5 测试
一、目的
此次测试的目的,仅作为Oracle向PostgreSQL迁移的广义性能对比参考,应用针对性测试后续跟进。
二、测试
测试工具统一采用Sysbench 0.5版本,此版本的一个亮点是测试模型使用lua脚本。用户可以根据自己的业务模型进行随意定制。比以往版本更加灵活,去除了以前业务模型单一的诟病。
另外测试人员还可以指定测试结果展示时间间隔;以前版本只能在测试结束后,查看压测结果数据。目前sysbench 0.5对Oracle支持不好。我自己编写了针对oracle数据库的lua脚本。
但是多线程这块,需要自己编写脚本;num thread参数,对Oracle来讲作用不大,随着并行加大,tps并没有上升。
PostgreSQL以及Oracle位于同一台数据库服务器;进行分开独立压测。
硬件配置如下:
CPU: Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz,12 cores
内存:PG和oracle内存设置一样,均为10G。
存储:同为SSD存储
性能测试对比图如下。其中蓝色线条代表PG tps,红色线代表Oracle tps。64个并发下,同时达到tps最高点;Oracle最高tps为47K,PG为41K。
之后tps趋于稳定(但rt会增加,主要原因为超过系统最大并发能力后,sys switch 增加),这比之于没有使用thread pool的 MySQL有很大的优势。
如果MySQL没有使用thread pool,超过最高tps后,随着并发线程的增大,呈明显下降趋势。这也是为什么MySQL5.6增加thread pool 的主要原因。
三、总结
1.性能:从以上测试来看,PG和Oracle在使用sysbench 默认自带业务模型时,Oracle性能比PG好10-18%左右。
2.功能:因此次采用的模型为sysbench自带业务模型。此业务模型只是单表主健访问、索引列访问与更新;没有表关联,基本上为数据库最简单功能。但事务模型比较复杂,
其中包含10个主健查询,4个范围以及带order by 查询,2个update,1个insert,1个delete。
因此本次测试不具有有业务代表性,主要为:
I.多表关联:使用Oracle数据库的应用,都比较传统。多表关联非常普遍。在处理表join method, join order等上面,oracle数据库在性能上比较有优势。
II.嵌套SQL处理:Oracle数据库的应用,在分页上基本上是用嵌套来处理的。那就会出现一个SQL,既有嵌套又有关联的情况。此类属于复杂SQL。
基于以上考虑,接下来的压测,需要将务模型整合到sysbench 0.5中,对复杂SQL进行压测。以评估PostgreSQL与Oracle在处理复杂SQL上的性能差距。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30088583/viewspace-1391275/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30088583/viewspace-1391275/