1. 测试目的
针对相同的硬件环境和计算任务,对比Oracle和集算器的性能差异,为客户选型提供参考。
2. 硬件环境
设备数量:1台
CPU:16核 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
内存:20G
3. 软件环境
操作系统:CentOS6.4 64位
JDK:1.6 64位
4. 测试对象
Oracle:11g(64位),本文中简称为Oracle。
集算器:v3.1。集算器按照数据存储方式的不同分为“文本文件、行式二进制文件(不分段文件)、行式二进制(分段文件)和列式二进制文件”四种不同测试对象,本文中简称为集算器文本、集算器行存、集算器行存分段、集算器列存。
5. 方案说明
对比的相同点:
1、Oracle和集算器运行于相同的硬件和操作系统之上,执行任务的时候没有其他负载的干扰。
2、执行的任务输入数据、算法和输出数据均相同。
3、对外提供调用接口相同,都是JDBC调用,返回结果集。
对比的不同点:
1、存储方式不同,Oracle是内部存储数据,对外表现为数据表;集算器是利用操作系统存储数据,表现为操作系统本地文件,具体的又有文本文件、行式二进制文件和列式二进制文件三种。
2、算法实现的方式不同,Oracle是以sql的方式来实现算法的;集算器是以网格程序脚本来实现算法。
6. 分组汇总
6.1.算法说明
输入:采用一个宽表A和一个窄表B来作为输入。A表有100个字段,6900万行记录,占用硬盘空间80G。B 表有10个字段,11亿行记录,占用硬盘空间80G。
计算:针对表每张表中的1到4个字符串类型的字段(g1、g2、g3、g4)做分组,对1到4个数值型的字段(n1、n2、n3、n4)做汇总sum计算。
输出:由g1、g2、g3、g4和sum(n1)、sum(n2)、sum(n3)、sum(n4)组成的结果表C。
说明:A表字段多,所以采用集算器列存二进制文件的方式是有意义的。B表字段较少,因此不采用集算器二进制列存的方式,仅对比Oracle、集算器文本和集算器行存(二进制)三个测试对象。
6.2. Oracle sql示例
A表查询sql(4个分组字段4个汇总字段)
Select g1,g2,g3,g4,sum(n1),sum(n2),sum(n3),sum(n4) from A group by g1,g2,g3,g4
B表查询sql(4个分组字段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个分组字段一个汇总字段部分)
子程序groupsub.dfx
子程序groupsubb.dfx
子程序groupsubc.dfx
6.4. 测试结果及分析
6.4.1A表(宽表)并行数为1(无并行)
统计计算所用时间,单位:秒。
算法 |
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
统计计算所用时间,单位:秒。
算法 |
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(无并行)
统计计算所用时间,单位:秒。
算法 |
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
统计计算所用时间,单位:秒。
算法 |
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
统计计算所用时间,单位:秒。
算法 |
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汇总的测试数据来横向对比一下,不同并发数量对计算性能的影响。
并行数 |
Oracle |
集算器 |
集算器 |
集算器 |
结果行数 |
1并行 |
285 |
502 |
313 |
121 |
1464 |
4并行 |
294 |
265 |
314 |
113 |
1464 |
分析:并行计算对集算器文本性能提高明显,其他测试对象不明显。原因在于集算器文本是分段多游标读取数据的,集算器行存和列存都是单个二进制文件,无法多游标分段读取。如果事先将文件分段保存成多个,就可以用分段多游标读取可以提升速度。Oracle并行速度提高不明显的原因应该是内部机制造成。
6.5.2 并发数量对B表(窄表)计算性能的影响
这里以B表(窄表)的4分组4汇总的测试数据来横向对比一下,不同并发数量对计算性能的影响。
并行数 |
Oracle |
集算器 |
集算器 |
集算器 |
1并行 |
1246 |
1537 |
1080 |
936 |
4并行 |
974 |
393 |
729 |
235 |
8并行 |
968 |
220 |
761 |
169 |
结果分析:并行计算对集算器行存分段和集算器文本性能提高明显,其他测试对象不明显。原因在于集算器行存分段和集算器文本是分段多游标读取数据的,集算器行存是单个二进制文件,无法多游标分段读取。集算器行存分段是事先将文件分段保存成多个,就可以用分段多游标读取可以提升速度。Oracle并行速度提高不明显的原因应该是内部机制造成。
相关推荐
Oracle 与 MySQL 性能对比 Oracle 与 MySQL 是两种流行的关系数据库管理系统,分别由 Oracle Corporation 和 MySQL AB(现在属于 Oracle Corporation)开发。它们之间的性能对比是数据库管理员和开发者们关心的热门...
### Oracle Datapump、Exp与RMAN的对比测试知识点解析 #### 一、测试目的 本次测试旨在评估Oracle Datapump、Exp与RMAN三种工具在相同环境下进行数据库备份时的性能表现。主要关注点包括执行时间以及生成备份文件的...
如果两张表的结构相同,但不需要特别高级的功能(比如详细报告),可以使用`EXCEPT`或`MINUS`关键字来对比数据。 1. **检查源表中存在而目标表中不存在的数据**: ```sql SELECT * FROM source_table MINUS ...
10.7.6 CHM与OSWatcher对比 10.8本章小结 第11章 最高可用性 11.1最高可用性架构 11.1.1 Data Guard优势 11.1.2客户端Failover 11.1.3 Data Guard配置 11.1.4 Standby数据库 11.1.5 Data Guard保护模式 ...
它可以创建大规模的数据集,用于填充测试环境中的表,以便在压力测试时提供充足的工作负载。 2. **Workload Scripts**:Swingbench支持自定义工作负载脚本,这些脚本可以模拟各种数据库操作,如查询、插入、更新和...
Oracle数据库的版本通常按照主要版本号、次要版本号和补丁集来划分,例如11g、12c、19c等。每个主要版本下又有多个更新版本,如11.2、12.1、12.2等。这些版本可能支持不同的操作系统,包括但不限于Linux、Windows、...
总的来说,`sqlhc`工具集是Oracle数据库管理员的有力助手,能够帮助他们更好地理解和优化SQL查询性能,提升数据库的整体运行效率。通过深入学习和熟练运用这些工具,你将能够更有效地管理和维护你的Oracle数据库系统...
**Oracle**中有一个特殊的“DUAL”表,常用于测试或执行简单的SQL查询。而在**PostgreSQL**中,可以通过创建一个视图(`VIEW`)来模拟这个行为,确保跨数据库的程序兼容性。 ### 5. 关联查询差异 - **Oracle**支持...
- 对比测试结果,注意异常情况并解决。 - 必要时重复步骤1、2和3的第一部分,直至测试升级成功并适用于所有必要的应用程序。 - **步骤4: 准备并保存生产数据库** - 准备生产数据库以确保顺利升级到Oracle 11g。 ...
MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,可能因为业务需求或者系统升级而需要将数据从MySQL迁移到Oracle。在这个过程中,我们需要了解两者之间的差异,以及如何有效地进行数据转换和导入。...
- **ORACLE–调试器**:允许用户配置调试器的行为。 - **ORACLE–输出**:提供了关于输出窗口设置的选项。 - **ORACLE–跟踪**:介绍了如何启用和配置追踪功能。 - **ORACLE–概览图**:提供了概览图相关设置的选项...
标题与描述均聚焦于SQL Server, Oracle, 和DB2数据库中的SQL语句比较,这是一个对IT专业人士特别是数据库管理员(DBA)、开发人员以及对数据库技术感兴趣的人来说极为实用的主题。以下是对给定文件中提及的关键知识点...
5. **集合操作**:UNION、INTERSECT和EXCEPT操作可以合并或对比多个查询的结果集,这对于数据整合和比较十分实用。 6. **索引与优化**:书中会涵盖索引的创建、管理、优化策略,包括B树索引、位图索引、函数索引等...
同时,GoldView32还可以生成性能报告,提供历史数据对比,以便分析性能变化趋势,为优化策略提供数据支持。 PLEdit32是PL/SQL代码编辑器,专门用于编写和调试Oracle的存储过程、函数和触发器。它具备代码高亮、自动...
3. 数据处理方式:对比一次性加载所有数据与使用游标逐行处理的效率。 4. 并发处理:在多线程环境中,测试并发访问同一游标或不同游标的效果。 5. 存储过程:Oracle存储过程可以封装复杂的逻辑,包括游标操作。测试...
PL/SQL Developer是一款由Allround Automations公司开发的专门针对Oracle数据库的集成开发环境(IDE),它为编写、测试和调试PL/SQL代码提供了一整套高效且用户友好的工具。Oracle数据库是世界上最广泛使用的数据库...
### Oracle数据库中Exists与In的使用详解 #### 一、Exists 的使用方法 在Oracle数据库中,`EXISTS` 是一种常用的子查询操作符,用于判断子查询是否有结果返回。如果子查询至少返回一行数据,则 `EXISTS` 表达式的...