网站首页 > 技术文章 正文
关联动作会严重影响性能,SPL支持内存预关联,可以加快关联动作,从而提升性能。
为了理解关联动作对性能的影响,下面设计一套Oracle关联表,以及无关联的宽表,并执行同样的计算。
关联表的结构和关系如下:
数据量:通话记录表(百万条)、用户表(十万条)、开户网点(一万条),代理商表(一万条)。
计算目标:求通讯总成本,即所有呼出用户和呼入用户分别对应的网点均摊成本、代理商均摊成本之和。
将关联结果写入另一张表,形成无关联的宽表:
下面的SPL脚本,用来说明关联动作对性能的影响:
可以看到,关联比无关联慢12.6倍(25802/2055),会严重影响计算性能。
SPL可以通过预关联来提升关联动作的性能。首先加载数据到内存,代码如下:
函数switch可将字段值替换为记录引用,从而实现预关联。
后续业务算法中,可以直接引用其他表的字段,从而提升关联计算的性能,如下:
为了直观理解预关联对计算性能的提升,下面同样用SPL预关联和宽表做比较。
可以看到,预关联比宽表慢6倍(13272/2210),相对于关联表比宽表慢的12.6倍,已经有较大幅度的提升。在宽表时,SPL计算性能和ORACLE几乎相同(2210:2055),但在有关联时,预关联的SPL计算速度已经明显超出临时关联的ORACLE了(13272:25802)。
需要注意的是,上述算法虽然使用了宽表做对比,但并不是说宽表可以代替关联表。事实上,宽表会浪费大量空间,还会造成创建、同步等维护困难,实际项目中很少用到。而预关联使用引用来建立关联,不会创造新表,不会浪费空间,不需要同步数据。
猜你喜欢
- 2025-07-17 故障分析 | MySQL 派生表优化(mysql pipe)
- 2025-07-17 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
- 2024-10-23 Oracle日常维护内容 oracle系统维护
- 2024-10-23 一文看懂PG的表空间物理布局设计、布局及管理
- 2024-10-23 oracle19c上安装样例数据库 oracle数据库如何安装
- 2024-10-23 超详细的oracle DB体系结构图(三)
- 2024-10-23 每天一个入坑小技巧:MySql和oracle语法区别(今日追加)
- 2024-10-23 Oracle大数据量delete清空数据后查询依旧很慢
- 2024-10-23 从零开始学习Oracle之管理表空间 oracle表空间是什么意思
- 2024-10-23 让用户随心所欲地使用数据库需要国产数据库厂商不断地努力
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)