`
datamachine
  • 浏览: 163476 次
社区版块
存档分类
最新评论

Oracle与集算器对比测试报告

 
阅读更多

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个分组字段一个汇总字段部分)



 

子程序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并行速度提高不明显的原因应该是内部机制造成。

  • 大小: 54.3 KB
  • 大小: 13.7 KB
  • 大小: 14 KB
  • 大小: 13.4 KB
  • 大小: 38.7 KB
  • 大小: 45.9 KB
  • 大小: 48 KB
  • 大小: 40.9 KB
  • 大小: 42.5 KB
  • 大小: 31.3 KB
  • 大小: 45.5 KB
0
0
分享到:
评论

相关推荐

    oracle与mysql 性能的对比

    Oracle 与 MySQL 性能对比 Oracle 与 MySQL 是两种流行的关系数据库管理系统,分别由 Oracle Corporation 和 MySQL AB(现在属于 Oracle Corporation)开发。它们之间的性能对比是数据库管理员和开发者们关心的热门...

    《Oracle datapump、exp和RMAN的对比测试报告》V2.0

    ### Oracle Datapump、Exp与RMAN的对比测试知识点解析 #### 一、测试目的 本次测试旨在评估Oracle Datapump、Exp与RMAN三种工具在相同环境下进行数据库备份时的性能表现。主要关注点包括执行时间以及生成备份文件的...

    Oracle中比对2张表之间数据是否一致的几种方法

    如果两张表的结构相同,但不需要特别高级的功能(比如详细报告),可以使用`EXCEPT`或`MINUS`关键字来对比数据。 1. **检查源表中存在而目标表中不存在的数据**: ```sql SELECT * FROM source_table MINUS ...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    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保护模式 ...

    Oracle数据库性能测试软件swingbench

    它可以创建大规模的数据集,用于填充测试环境中的表,以便在压力测试时提供充足的工作负载。 2. **Workload Scripts**:Swingbench支持自定义工作负载脚本,这些脚本可以模拟各种数据库操作,如查询、插入、更新和...

    【标准】Oracle Database版本平台兼容性列表

    Oracle数据库的版本通常按照主要版本号、次要版本号和补丁集来划分,例如11g、12c、19c等。每个主要版本下又有多个更新版本,如11.2、12.1、12.2等。这些版本可能支持不同的操作系统,包括但不限于Linux、Windows、...

    ORACLE SQL优化工具sqlhc

    总的来说,`sqlhc`工具集是Oracle数据库管理员的有力助手,能够帮助他们更好地理解和优化SQL查询性能,提升数据库的整体运行效率。通过深入学习和熟练运用这些工具,你将能够更有效地管理和维护你的Oracle数据库系统...

    PostgreSQL和Oracle区别

    **Oracle**中有一个特殊的“DUAL”表,常用于测试或执行简单的SQL查询。而在**PostgreSQL**中,可以通过创建一个视图(`VIEW`)来模拟这个行为,确保跨数据库的程序兼容性。 ### 5. 关联查询差异 - **Oracle**支持...

    Oracle 11.2 Concept翻译-升级指南

    - 对比测试结果,注意异常情况并解决。 - 必要时重复步骤1、2和3的第一部分,直至测试升级成功并适用于所有必要的应用程序。 - **步骤4: 准备并保存生产数据库** - 准备生产数据库以确保顺利升级到Oracle 11g。 ...

    Mysql数据库导入Oracle

    MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,可能因为业务需求或者系统升级而需要将数据从MySQL迁移到Oracle。在这个过程中,我们需要了解两者之间的差异,以及如何有效地进行数据转换和导入。...

    oracle pl/s手册

    - **ORACLE–调试器**:允许用户配置调试器的行为。 - **ORACLE–输出**:提供了关于输出窗口设置的选项。 - **ORACLE–跟踪**:介绍了如何启用和配置追踪功能。 - **ORACLE–概览图**:提供了概览图相关设置的选项...

    SQL_Server,Oracle,DB2数据库SQL语句比较

    标题与描述均聚焦于SQL Server, Oracle, 和DB2数据库中的SQL语句比较,这是一个对IT专业人士特别是数据库管理员(DBA)、开发人员以及对数据库技术感兴趣的人来说极为实用的主题。以下是对给定文件中提及的关键知识点...

    Oracle SQL高级编程 中文版

    5. **集合操作**:UNION、INTERSECT和EXCEPT操作可以合并或对比多个查询的结果集,这对于数据整合和比较十分实用。 6. **索引与优化**:书中会涵盖索引的创建、管理、优化策略,包括B树索引、位图索引、函数索引等...

    golden系列oracle数据库查看工具

    同时,GoldView32还可以生成性能报告,提供历史数据对比,以便分析性能变化趋势,为优化策略提供数据支持。 PLEdit32是PL/SQL代码编辑器,专门用于编写和调试Oracle的存储过程、函数和触发器。它具备代码高亮、自动...

    C#对于Oracle游标一般处理程序速度的测试

    3. 数据处理方式:对比一次性加载所有数据与使用游标逐行处理的效率。 4. 并发处理:在多线程环境中,测试并发访问同一游标或不同游标的效果。 5. 存储过程:Oracle存储过程可以封装复杂的逻辑,包括游标操作。测试...

    pl/sql developer oracle 工具

    PL/SQL Developer是一款由Allround Automations公司开发的专门针对Oracle数据库的集成开发环境(IDE),它为编写、测试和调试PL/SQL代码提供了一整套高效且用户友好的工具。Oracle数据库是世界上最广泛使用的数据库...

    oracle数据库关于exists使用

    ### Oracle数据库中Exists与In的使用详解 #### 一、Exists 的使用方法 在Oracle数据库中,`EXISTS` 是一种常用的子查询操作符,用于判断子查询是否有结果返回。如果子查询至少返回一行数据,则 `EXISTS` 表达式的...

Global site tag (gtag.js) - Google Analytics