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

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

[复制链接]

尚未签到

发表于 2016-8-4 11:34:04 | 显示全部楼层 |阅读模式
7.多表连接
7.1.算法说明
输入:
本测试采用一组宽表和一组窄表来作为输入,宽表组和窄表组只是字段不同,参加运算的字段和算法都一样。
宽表组:数据t表(或者文件)是事实表,共100个字段,6900万行,占硬盘80GDiDj表示维表,都是100列,1000万行,占硬盘10G
窄表组:数据t表(或者文件)是事实表,共10个字段,11亿行,占硬盘80GDiDj表示维表,都是100列,1000万行,占硬盘10G
其中:
t表选出字段为sum(t11)sum(t12)di选出字段为sum(di11)dj选出字段为sum(dj11)
dj表与dj表连接是左连接:di.di23=dj.dj23
di分组字段为di31dj分组字段为dj31
计算:
计算分为三种:
t*di
t表与di表连接左连接:t.t21=di.di21
连接之后按照di31分组求sum
t*di*dj
t表与di表连接左连接:t.t21=di.di21
t表与dj表连接是左连接:t.t22=dj.dj22
连接之后按照di31dj31分组求sum
t*(di*dj)
t表与di表连接左连接:t.t21=di.di21
di表与dj表连接是左连接:di.di23=dj.dj23
连接之后按照di31dj31分组求sum
输出:
连接、分组求和之后的结果。
说明:
宽表组表字段多,所以采用集算器列存二进制文件的方式是有意义的。窄表组表字段较少,因此不采用集算器二进制列存的方式,对比Oracle、集算器文本、集算器行存和集算器行存分段四个测试对象。
 
7.2.Oracle sql示例
t*di:
Select sum(t.t11),sum(t.t12),sum(di.di11)
from t left join di on di21=t.t21
group by di.di31
 
t*di*dj:
Select sum(t.t11),sum(t.t12),sum(di.di11),sum(dj.dj11)
from t left join di on di.di21=t.t21 left join dj on dj.dj22=t.t22
group by di.di31,dj.dj31
 
t*(di*dj):
Select sum(t.t11),sum(t.t12),sum(di.di11),sum(dj.dj11)
from t left join dion di.di21=t.t21 left join dj on dj.dj23=di.di23
group by dj.dj31
7.3.集算器脚本示例
  main.dfx
DSC0000.jpg
 
joinsub.dfx
DSC0001.jpg
 
 joinsubb.dfx
DSC0002.jpg
 
7.4.测试结果和分析
  7.4.1 宽表组并行数1(无并行
   DSC0003.jpg
 

算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(列存)

T*D
435

543

340

131

T*D*D
549

612

382

185

T*(D*D)
500

553

340

137

 
结果分析:
1、测试对象之间对比,由于列式存储对性能提高明显,所以集算器列存计算时间最短性能最高;其他三个测试对象因为是行式存储所以性能较低;由于事实表和维表之间存在外键关系,因此集算器行存可以采用较快的switch方法来实现jion,所以比oracle稍快。
 
7.4.2宽表组并行数4

DSC0004.jpg
 


算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(列存)

T*D
421

338

325

55

T*D*D
595

358

325

72

T*(D*D)
416

348

332

64

 
结果分析:
1、测试对象之间对比,由于列式存储对性能提高明显,所以集算器列存计算时间最短性能最高;其他三个测试对象因为是行式存储所以性能较低;由于事实表和维表之间存在外键关系,因此集算器行存可以采用较快的switch方法来实现jion,所以比oracle稍快。集算器文本采用4个节点同时并行计算,所以超过了oracle的性能。
 
7.4.3窄表组并行数1(无并行)
  DSC0005.jpg
 
算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

T*D
508

1824

1415

1330

T*D*D
4846

2920

2540

2355

T*(D*D)
3684

2142

1663

1479

性能排名:
算法

1

2

3

4

T*D
Oracle

集算器
(行存)

集算器
(行存分段)

集算器
(文本)

T*D*D
集算器
(行存分段)

集算器
(行存)

集算器
(文本)

Oracle

T*(D*D)
集算器
(行存分段)

集算器
(行存)

集算器
(文本)

Oracle

结果分析:
1T*D算法而言,oracle性能具备明显的优势。
2、其他两种算法,集算器的计算步骤是人为决定的。由于事先知道事实表和维表之间的外键关系,并且知道表大小差异,可以采用最快的switch方法来计算。而oracle采用自动优化的方式,不够灵活,所以较慢。
 
7.4.4 窄表组并行数4
  DSC0006.jpg
 
算法

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

T*D
1676

462

537

353

T*D*D
4527

788

743

641

T*(D*D)
3298

531

576

420

 
结果分析:
1、集算器的计算步骤是人为决定的。由于事先知道事实表和维表之间的外键关系,并且知道表大小差异,可以采用最快的switch方法来计算。而oracle采用自动优化的方式,不够灵活,所以较慢。
 
7.5.进一步的对比分析
以窄表组的T*(D*D)的测试数据来横向对比一下,不同并发数量对计算性能的影响。

DSC0007.jpg
 


并行数

Oracle

集算器
(文本)

集算器
(行存)

集算器
(行存分段)

1并行
3684

2142

1663

1479

4并行
3298

531

576

420

 
结果分析:并行计算对集算器性能提高明显,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-252704-1-1.html 上篇帖子: 关于Oracle Stream的安装、配置和使用 下篇帖子: Failed to upgrade Oracle Cluster Registry configuration(root.sh)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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