设为首页 收藏本站
查看: 701|回复: 0

[经验分享] Oracle与集算器对比测试报告

[复制链接]

尚未签到

发表于 2016-8-4 09:09:45 | 显示全部楼层 |阅读模式
1.  测试目的
针对相同的硬件环境和计算任务,对比Oracle和集算器的性能差异,为客户选型提供参考。
2.  硬件环境
设备数量:1
CPU16 Intel(R) Xeon(R) CPU E5620  @ 2.40GHz
内存:20G
3. 软件环境
操作系统:CentOS6.4 64
JDK1.6 64
4.  测试对象
Oracle11g(64位),本文中简称为Oracle
集算器:v3.1。集算器按照数据存储方式的不同分为“文本文件、行式二进制文件(不分段文件)、行式二进制(分段文件)和列式二进制文件”四种不同测试对象,本文中简称为集算器文本、集算器行存、集算器行存分段、集算器列存。
5.   方案说明
对比的相同点:
1、Oracle和集算器运行于相同的硬件和操作系统之上,执行任务的时候没有其他负载的干扰。
2、执行的任务输入数据、算法和输出数据均相同。
3、对外提供调用接口相同,都是JDBC调用,返回结果集。
对比的不同点:
1、存储方式不同,Oracle是内部存储数据,对外表现为数据表;集算器是利用操作系统存储数据,表现为操作系统本地文件,具体的又有文本文件、行式二进制文件和列式二进制文件三种。
  2、算法实现的方式不同,Oracle是以sql的方式来实现算法的;集算器是以网格程序脚本来实现算法。
 
6.   分组汇总
6.1.算法说明
输入:采用一个宽表A和一个窄表B来作为输入。A表有100个字段,6900万行记录,占用硬盘空间80GB 表有10个字段,11亿行记录,占用硬盘空间80G
计算:针对表每张表中的14个字符串类型的字段(g1g2g3g4)做分组,对14个数值型的字段(n1n2n3n4)做汇总sum计算。
输出:g1g2g3g4sum(n1)sum(n2)sum(n3)sum(n4)组成的结果表C
说明A表字段多,所以采用集算器列存二进制文件的方式是有意义的。B表字段较少,因此不采用集算器二进制列存的方式,仅对比Oracle、集算器文本和集算器行存(二进制)三个测试对象。
6.2. Oracle sql示例
A表查询sql4个分组字段4个汇总字段)
Select g1,g2,g3,g4,sum(n1),sum(n2),sum(n3),sum(n4) from A group by g1,g2,g3,g4
B表查询sql4个分组字段4个汇总字段)
Select g1,g2,g3,g4,sum(n1),sum(n2),sum(n3),sum(n4) from B group by g1,g2,g3,g4
 
6.3.  集算器 脚本示例
主程序(1个分组字段一个汇总字段部分)

DSC0000.jpg
 

子程序groupsub.dfx
DSC0001.jpg


子程序groupsubb.dfx
DSC0002.jpg
  

子程序groupsubc.dfx
DSC0003.jpg
 
6.4.  测试结果及分析
6.4.1A表(宽表)并行数为1(无并行)
统计计算所用时间,单位:秒。

DSC0004.jpg
 


算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(列存)

结果行数

1分组1汇总
232

402

295

42

34

1分组4汇总
248

435

296

62

34

4分组1汇总
263

461

290

101

1464

4分组4汇总
285

502

313

121

1464

 
分析:
1、由于列式存储对性能提高明显,所以集算器列存计算时间最短性能最高;Oracle因为是行式存储所以性能次之;因为是单进程没有并发的情况,所以集算器行存和集算器文本性能较低,两者之中集算器行存是二进制所以比集算器文本要快。
2、在每个测试对象内部对比,一般来说算法越复杂计算时间越长,因此1分组1汇总计算最快,4分组4汇总最慢。
 
6.4.2.   A表(宽表)并行数为4
 
统计计算所用时间,单位:秒。

DSC0005.jpg
 


算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(列存)

结果行数

1分组1汇总
259

274

295

43

34

1分组4汇总
272

275

297

56

34

4分组1汇总
286

264

315

99

1464

4分组4汇总
294

265

314

113

1464

 
结果分析:列式存储对性能提高的作用较大。
 
6.4.3 B表(窄表)并行数为1(无并行)
 
统计计算所用时间,单位:秒。

DSC0006.jpg
 


算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

1分组1汇总
456

630

538

296

1分组4汇总
637

933

694

446

4分组1汇总
1139

1170

888

714

4分组4汇总
1246

1537

1080

936

 
 
6.4.4 B表(窄表)并行数为4
 
统计计算所用时间,单位:秒。

DSC0007.jpg
 
算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

1分组1汇总
482

175

383

155

1分组4汇总
664

258

478

155

4分组1汇总
965

314

650

197

4分组4汇总
974

393

729

235

 
6.4.5 B表(窄表)并行数为8
 
统计计算所用时间,单位:秒。

DSC0008.jpg
 


算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

1分组1汇总
486

183

436

159

1分组4汇总
675

161

537

176

4分组1汇总
976

191

681

162

4分组4汇总
968

220

761

169

 
6.5.  进一步的对比分析
 
6.5.1并发数量对A表(宽表)计算性能的影响
 
这里以A表(宽表)的4分组4汇总的测试数据来横向对比一下,不同并发数量对计算性能的影响。

DSC0009.jpg
 


并行数

Oracle

集算器
(文本)

集算器
(行存)

集算器
(列存)

结果行数

1并行
285

502

313

121

1464

4并行
294

265

314

113

1464

 
分析:并行计算对集算器文本性能提高明显,其他测试对象不明显。原因在于集算器文本是分段多游标读取数据的,集算器行存和列存都是单个二进制文件,无法多游标分段读取。如果事先将文件分段保存成多个,就可以用分段多游标读取可以提升速度。Oracle并行速度提高不明显的原因应该是内部机制造成。
 
6.5.2 并发数量对B表(窄表)计算性能的影响
这里以B表(窄表)的4分组4汇总的测试数据来横向对比一下,不同并发数量对计算性能的影响。

DSC00010.jpg
 
 
并行数

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

1并行
1246

1537

1080

936

4并行
974

393

729

235

8并行
968

220

761

169

 
结果分析:并行计算对集算器行存分段和集算器文本性能提高明显,其他测试对象不明显。原因在于集算器行存分段和集算器文本是分段多游标读取数据的,集算器行存是单个二进制文件,无法多游标分段读取。集算器行存分段是事先将文件分段保存成多个,就可以用分段多游标读取可以提升速度。Oracle并行速度提高不明显的原因应该是内部机制造成。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252536-1-1.html 上篇帖子: Oracle数据库的几种启动和关闭方式 下篇帖子: Oracle RAC环境下如何更新patch(Rolling Patch)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表