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

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

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

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

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

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

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

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

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


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

函数switch可将字段值替换为记录引用,从而实现预关联。

后续业务算法中,可以直接引用其他表的字段,从而提升关联计算的性能,如下:

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

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

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

代做工资流水公司湖州制作银行对公流水莆田工资流水单制作宿迁工资流水单制作铜陵打银行对公流水镇江打印转账银行流水柳州查询房贷银行流水潍坊银行流水账单代办德阳对公流水查询青岛工资证明报价开封个人工资流水 模板吉林签证工资流水办理重庆银行流水单代办唐山个人流水制作西安车贷银行流水 模板唐山制作工资流水app截图湘潭薪资流水淄博办理入职工资流水盐城工资流水单多少钱柳州入职银行流水价格保定制作银行流水修改保定办理车贷银行流水潮州房贷银行流水 制作石家庄办理薪资银行流水保定房贷工资流水 代开合肥打印背调工资流水临沂办银行对公流水株洲办房贷流水湖州企业对私流水开具铜陵代开工资流水账单柳州背调流水多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化