利用有序高效实施交并差集合运算

本文探讨了在大数据场景下如何利用有序计算提高交并差集合运算的性能。通过一个实际的评测用例,展示了如何使用集算器 SPL 语言,特别是在处理105亿行数据时,设计出高效算法。测试结果显示,SPL 实现的交集和并集运算性能显著提升,但差集运算由于数据特征仍存在性能瓶颈。
摘要由CSDN通过智能技术生成

【摘要】

      看起来很简单的集合运算放在大数据的场景下,如果还想获得高性能就需要充分了解数据特征和计算特征才能设计出高效算法。充分利用序运算就是一种好办法!

 

      交并差是常见的集合运算,SQL 中对应的 intersect/union/minus 计算也很简单。不过当数据量较大时,这类集合运算性能往往偏低,尤其当参与计算的数据量超过内存容量时,性能表现会十分糟糕。

       本文专门针对这种情况下的高性能计算(HPC)需求,讨论如何使用集算器 SPL 语言通过有序计算思路显著提高大数据量下交并差三类集合运算的性能。下面讨论中使用了一个实际用户在数据库选型时的评测用例:数据基于数据库的 2 个表,共计 105 亿行数据,执行相关运算后,以输出第一批 500 条记录所用时间来衡量哪个数据库性能更优。

 

测试环境

类别

配置

机型

X86

CPU

E5-2680 v4 @ 2.40GHz

内存

512GB

数据硬盘存储

SAS 3TB

集群数量

4 台

网络环境

万兆

MPP 数据库资源配置(单节点)

硬盘:SSD 1.9T

内存:20GB(JVM) +   12GB(分片库)

集算器资源配置(单节点)

硬盘:SAS 1T

内存:120GB

操作系统

CentOS6.8(64 位)

 

数据描述

数据情况

表名称

数据量

数据结构

数据内容

A

103.68亿

52个字段,a1为timestamp。其他字段为字符型,长度=10

a1为1天的时间均匀分布数据,时间跨度为5天(每秒24000条),其他字段数据随机生成。

B

1728.048万

2个字符字段,长度=10

2个字段生成规律依照A表的a3和a7字段

 

索引

数据表

数据库索引

A表

a1、a3、a7字段建立btree索引,a4建立基于btree的varchar_pattern_ops索引。

B表

b1、b2字段建立btree索引

 

样例数据

a1-a52 列值:

2018-01-0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值