当前位置: 首页 > news >正文

性能优化技巧 - 集群维表

事实表和维表进行关联计算时,需要对维表进行频繁的随机访问,因此维表要尽量放在内存中,才能提高关联计算的性能。如果维表较大,单机内存放不下,就应该考虑用集群方式,将维表分段读入多台机器的内存。下面举例说明集群维表的用法。

假设有2个计算节点,分别为127.0.0.1:8281、127.0.0.1:8282。执行如下脚本,可将产品表加载到节点机内存中:
1
A2:语句fork可在多个节点机上并行执行任务,其中[1,20000000]是第1台节点机的入口参数。

B2:各节点按入口参数分别查询产品表。其中1号节点取出编号在1-20000000之间的产品。需要注意的是:各节点数据不能有重合,需按维表主键排序,需用key函数建立物理键。

B3:函数env用来在节点机设置全局变量,各节点机变量名相同,。

接下来实现业务算法:
2
A2:按名字product在各节点机寻找全局变量,返回集群维表。注意集群维表是个远程引用,对应的数据在各节点机。

A3:从数据库取出订单事实表。事实表通常数据量较大,需要用游标返回。事实表的来源不限于数据库,任意游标都可以。

A4:对事实表和集群维表进行关联计算。除了cs.switch()函数,也可以用cs.join()函数进行关联计算。

A5:对关联结果进一步计算,这里以分组汇总为例。

 

上述例子中,集群维表来自于数据源,底层数据结构为序表,但序表无压缩,占用空间较大。如果以SPL组表为数据源,则内存中的数据结构为内表,而内表有压缩,占用空间较小。

假设维表已分成2份,各自存为组表,名字都叫product.ctx,分别放置在两个节点机的0数据区上,则加载数据的脚本如下:
3
A1:在各节点机的0数据区,寻找名为product.ctx的组表,定义为分布组表。

A2:将分布组表加载到各节点机内存,形成集群维表。

A3:在汇总机定义全局变量product,指向集群维表。

实现业务算法的脚本如下:
4
A2:直接用全局变量名product引用集群维表,并参与关联计算。

相关文章:

  • 不同机器下,游戏编程如何保证物体移动具有相同的速度
  • 量子通信是个鸡肋,没有证券分析师说得那么好
  • 微信,QQ这类IM app怎么做——谈谈Websocket
  • DRF如何序列化外键的字段
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • iOS开发UI篇—CAlayer层的属性
  • Surrogate data 代理数据
  • 延迟
  • 网络设备
  • 马哥2016全新Linux+Python高端运维班第二周作业
  • 如何搭建配置php开发环境
  • 选择阿里云数据库HBase版十大理由
  • 使用airbnb的eslint
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 《编码的法则--C++实用经验》
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 5、React组件事件详解
  • Facebook AccountKit 接入的坑点
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • laravel5.5 视图共享数据
  • Promise初体验
  • 对象管理器(defineProperty)学习笔记
  • 高度不固定时垂直居中
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 如何学习JavaEE,项目又该如何做?
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用agvtool更改app version/build
  • 学习ES6 变量的解构赋值
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​批处理文件中的errorlevel用法
  • #define
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)逆序输出字符串
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***测试-HTTP方法
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net wcf memory gates checking failed
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET学习教程二——.net基础定义+VS常用设置
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .pub是什么文件_Rust 模块和文件 - 「译」