7.多表连接
7.1.算法说明
输入:
本测试采用一组宽表和一组窄表来作为输入,宽表组和窄表组只是字段不同,参加运算的字段和算法都一样。
宽表组:数据t表(或者文件)是事实表,共100个字段,6900万行,占硬盘80G;Di、Dj表示维表,都是100列,1000万行,占硬盘10G。
窄表组:数据t表(或者文件)是事实表,共10个字段,11亿行,占硬盘80G;Di、Dj表示维表,都是100列,1000万行,占硬盘10G。
其中:
t表选出字段为sum(t11)、sum(t12),di选出字段为sum(di11),dj选出字段为sum(dj11);
dj表与dj表连接是左连接:di.di23=dj.dj23
di分组字段为di31,dj分组字段为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
连接之后按照di31和dj31分组求sum;
t*(di*dj):
t表与di表连接左连接:t.t21=di.di21,
di表与dj表连接是左连接:di.di23=dj.dj23,
连接之后按照di31和dj31分组求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
joinsub.dfx
joinsubb.dfx
7.4.测试结果和分析
7.4.1 宽表组并行数1(无并行)
算法 |
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
算法 |
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(无并行)
算法 |
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 |
结果分析:
1、T*D算法而言,oracle性能具备明显的优势。
2、其他两种算法,集算器的计算步骤是人为决定的。由于事先知道事实表和维表之间的外键关系,并且知道表大小差异,可以采用最快的switch方法来计算。而oracle采用自动优化的方式,不够灵活,所以较慢。
7.4.4 窄表组并行数4
算法 |
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)的测试数据来横向对比一下,不同并发数量对计算性能的影响。
并行数 |
Oracle |
集算器 |
集算器 |
集算器 |
1并行 |
3684 |
2142 |
1663 |
1479 |
4并行 |
3298 |
531 |
576 |
420 |
结果分析:并行计算对集算器性能提高明显,Oracle则不明显。
相关推荐
字符集不仅影响着数据的准确性和一致性,还与全球化应用、数据迁移和数据交换密切相关。本篇将深入探讨Oracle字符集的查看、修改、导入导出以及转换原理。 一、Oracle字符集的查看 在Oracle中,可以通过以下SQL...
本文将详细介绍一个基于Oracle数据库的生产和测试数据库表结构对比工具,帮助你理解其工作原理和应用价值。 这个工具的主要目的是解决生产环境与测试环境之间数据库表结构不一致的问题。在开发过程中,开发者通常会...
最后,"Oracle字符集(5).txt"可能涉及数据导入导出与字符集的关联,如使用SQL*Loader、EXPDP/IMPDP时的字符集设置,以及如何确保导出的数据在导入到不同字符集的环境中时仍能正确显示。 总的来说,这个Oracle字符...
### Oracle RAC 功能测试方案详解 #### 一、引言 Oracle Real Application Clusters (RAC) 是一种高可用性、高性能的企业级数据库解决方案。本文档旨在提供一个全面的Oracle 11g RAC安装后的功能测试方案,主要包括...
### Oracle字符集的查看与客户端字符集的修改 #### 一、Oracle字符集的基本概念 在Oracle数据库系统中,字符集(charset)是用于表示文本数据的编码方式。正确设置和管理字符集对于确保数据的一致性和正确性至关重要...
在Oracle数据库管理与应用开发中,字符集的正确配置至关重要,尤其是在处理不同字符集之间的数据交换时。本文将深入探讨Oracle字符集的相关概念,包括如何通过设置环境变量来修改客户端字符集,以此解决因字符集差异...
Oracle 与 MySQL 性能对比 Oracle 与 MySQL 是两种流行的关系数据库管理系统,分别由 Oracle Corporation 和 MySQL AB(现在属于 Oracle Corporation)开发。它们之间的性能对比是数据库管理员和开发者们关心的热门...
本报告将详述一次Oracle数据库的异机恢复测试过程,旨在检验数据库在异常情况下的恢复能力,确保业务连续性。 一、测试背景 Oracle数据库作为全球广泛使用的数据库管理系统,其稳定性和恢复机制对企业的运营具有...
数据库做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条 SQL快速生成大量的测试数据的方法。 产生测试数据的SQL如下...
Oracle测试表及数据.txt
标题中的“DB2和Oracle对比”意味着我们将探讨这两款企业级数据库管理系统——Oracle数据库和IBM的DB2——在性能、功能、成本、易用性、安全性以及市场占有率等方面的差异。 Oracle数据库是由Oracle公司开发的一款...
《针对Linux与Oracle的多服务器图形对比监控系统》是一篇探讨如何在Linux环境下对Oracle数据库进行多服务器图形化监控的文章。作者江竟敏和黄忠东来自浙江大学计算机科学与技术学院,他们提出了一种创新的方法来解决...
通过学习将Oracle和Hive的常用函数整理出来做了个对比,提供他们各自支持的常用函数。
总结来说,"数据库对比工具(支持sqlserver ,oracle)"是数据库管理员和开发人员不可或缺的辅助工具,它提高了工作效率,减少了因数据结构不一致导致的问题,确保了数据库升级过程的顺利进行。无论是对SQL Server...
Oracle Swingbench是一款强大的数据库性能测试工具,主要用于模拟真实业务负载,对Oracle数据库系统进行压力测试。Swingbench是由Oracle公司开发的,它以其灵活、可定制性和能够模拟各种复杂业务场景而闻名。这款...
Oracle、SQL Server 及 MySQL 对比 Oracle、SQL Server 及 MySQL 是目前最流行的三大关系数据库管理系统,各有其优缺点。本文将从表空间、查询语句、事务、分区表和分区索引、优缺点等方面对三者进行比较。 表空间...
标题“Oracle创造测试数据”指的是在Oracle数据库环境中创建模拟真实业务场景的数据,这对于软件测试、性能测试、系统分析等过程至关重要。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能使得...
Oracle性能测试是数据库管理员和IT专业人员至关重要的任务,它涉及到评估Oracle数据库系统的运行效率,以确保数据处理速度、响应时间和资源利用率等关键指标达到预期标准。以下是对Oracle性能测试的详细解读: 一、...
oracle RAC 在IBM小型机上的测试报告,双节点RAC的各项测试内容,单双节点的RAC性能测试内容,三节点RAC的RAC性能测试内容,RMAN测试,exp,imp测试,大批量呼叫数据测试,大批量查询测试,大事物测试,load balance...