打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
性能优化技巧 - 内存关联计算

关联动作会严重影响性能,SPL支持内存预关联,可以加快关联动作,从而提升性能。

为了理解关联动作对性能的影响,下面设计一套Oracle关联表,以及无关联的宽表,并执行同样的计算。

关联表的结构和关系如下:

                                             

数据量:通话记录表(百万条)、用户表(十万条)、开户网点(一万条),代理商表(一万条)。

计算目标:求通讯总成本,即所有呼出用户和呼入用户分别对应的网点均摊成本、代理商均摊成本之和。

将关联结果写入另一张表,形成无关联的宽表:

下面的SPL脚本,用来说明关联动作对性能的影响:

可以看到,关联比无关联慢12.6倍(25802/2055),会严重影响计算性能。

SPL可以通过预关联来提升关联动作的性能。首先加载数据到内存,代码如下:

为了直观理解预关联对计算性能的提升,下面同样用SPL预关联和宽表做比较。

可以看到,预关联比宽表慢6倍(13272/2210),相对于关联表比宽表慢的12.6倍,已经有较大幅度的提升。在宽表时,SPL计算性能和ORACLE几乎相同(2210:2055),但在有关联时,预关联的SPL计算速度已经明显超出临时关联的ORACLE了(13272:25802)。

需要注意的是,上述算法虽然使用了宽表做对比,但并不是说宽表可以代替关联表。事实上,宽表会浪费大量空间,还会造成创建、同步等维护困难,实际项目中很少用到。而预关联使用引用来建立关联,不会创造新表,不会浪费空间,不需要同步数据。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Hadoop/Spark 太重,esProc SPL 很轻
宽表为什么横行?
做 SQL 性能优化真是让人干瞪眼
十个最流行的Oracle性能指标,DBA必知
基于裸数据的异地数据库性能诊断与优化
腾讯大讲堂38-Oracle基础体系结构及性能优化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服