我的编程空间,编程开发者的网络收藏夹
学习永远不晚

大数据交叉报表性能优化实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

大数据交叉报表性能优化实例分析

这篇文章主要为大家分析了大数据交叉报表性能优化实例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“大数据交叉报表性能优化实例分析”的知识吧。

软硬件环境

OS:win7

Cpu:8 核

集算报表:1120 安装版

Jvm:1G

数据库:oracle11g

客户无法解决的问题:

有一个交叉汇总报表,其实格式很简单,行列各一个统计维度。但后台业务表的数据有 175 万条,且还要与其他表(大概在 7w 条左右)做 join,如果由 sql 来处理,可以想象到会慢到什么程度,关键受各种条件影响,能否查出数据都是问题。

注:ACCORECEIVE 表 175w 条数据

目前,测试 birt 需 5 分钟,借助各种中间表与视图。报表友商无法出表。

要求:能做出该报表在 web 展现,且重要的是速度要快,另外,数据(目前大概是 5 年数据)是实时增加的。

客户报表格式及目前所用 sql:

报表格式:

大数据交叉报表性能优化实例分析

Sql:

select LOCATIONS.loupan loupan,       LOCATIONS.LPORDERNUM,       nvl(ACCORECEIVE.RECEIVABLEAMOUNT, 0) yingshou,       chargeproct.Description CHARPNAME,       chargeproct.ordernum chordernum  from ACCORECEIVE,V\_LOCATION\_LP\_LG\_DY LOCATIONS,chargeproct   where ACCORECEIVE.Org\_Id = LOCATIONS.Org\_Id   and ACCORECEIVE.Sub\_Org\_Id = LOCATIONS.Sub\_Org\_Id   and ACCORECEIVE.Fk_Locationid = LOCATIONS.Locationid   and ACCORECEIVE.Fk_Chargeproctid = chargeproct.chargeproctid(+)   and ACCORECEIVE.Wf_Status not in('作废')

问题分析及解决方案

常规模式下,大数据要出交叉报表几乎很难,这里受 sql 效率慢、jvm 等的影响,一次如果把所有数据全部取出则必然极大可能内存溢出。另外,大数据表再有 join,即便能取,那取数速度上肯定也无法保证(sql join 的效率低),上面 sql 中能体现出所有问题。

解决方案:

为避免一次性取数内存溢出,可采用集算器游标 cursor 取数;  –cursor

去除不需要字段及 join 字段。分析后发现,客户实际不需要 org_id、sub_org_id 的关联;

取数后可根据客户所出报表对应做数据处理,这里可 groups 处理一次分组汇总;–替代报表表达式 group

为摆脱 sql join 效率低问题,可将 join 放在集算器内处理,这里 ACCORECEIVE 与 V_LOCATION_LP_LG_DY 表(query 即可,数据不大)分开取数;  –switch 连接

注:集算器中测试了两表 sql 中 join,时间大概需 5 分钟。

结合客户报表格式及所用的数据库表,可将上面 sql 中 chargeproct 表放到报表 sql 取数,因其仅体现显示值作用,且仅几十条数据。

集算脚本:

注:代码有每一步的作用说明

大数据交叉报表性能优化实例分析

关于“大数据交叉报表性能优化实例分析”就介绍到这了,更多相关内容可以搜索编程网以前的文章,希望能够帮助大家答疑解惑,请多多支持编程网网站!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

大数据交叉报表性能优化实例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

大数据交叉报表性能优化实例分析

这篇文章主要为大家分析了大数据交叉报表性能优化实例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“大数据交叉报表性能优化实例分析”的知识吧。软硬件环境OS
2023-06-04

MySQL数据库性能优化的示例分析

小编给大家分享一下MySQL数据库性能优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么做优化??因为数据量太多了,项目部署上线再到用户使用,每天
2023-06-22

HBase在实时数据分析与报表生成中的性能优势

HBase在实时数据分析与报表生成中展现出了显著的性能优势,这些优势使其成为处理大规模数据、需要低延迟应用场景的理想选择。以下是HBase在实时数据分析与报表生成中的性能优势:实时随机访问:HBase支持实时的随机读写操作,能够迅速地查询和
HBase在实时数据分析与报表生成中的性能优势
2024-10-22

【数据库优化实战案例】分享我优化数据库的经验,让你少走弯路,快速提升性能!

本文分享了优化数据库的经验,包括数据库设计、索引优化、查询优化等内容,帮助读者快速提升数据库性能。
【数据库优化实战案例】分享我优化数据库的经验,让你少走弯路,快速提升性能!
2024-02-10

如何设计一个优化的MySQL表结构来实现数据分析功能?

如何设计一个优化的MySQL表结构来实现数据分析功能?摘要:随着数据分析的兴起,构建一个高效的数据库表结构成为数据工程师面临的重要问题。本文将介绍如何设计一个优化的MySQL表结构来实现数据分析功能,包括表的规范化、索引的设计以及数据类型的
如何设计一个优化的MySQL表结构来实现数据分析功能?
2023-10-31

数据库压力测试案例分享:从真实案例中汲取经验,优化数据库性能,提升系统稳定性

数据库压力测试是确保数据库系统稳定性、性能的关键。本文将分享一个真实案例,讲述如何通过压力测试发现数据库存在的问题,并通过优化措施解决问题,从而提升数据库性能和稳定性。
数据库压力测试案例分享:从真实案例中汲取经验,优化数据库性能,提升系统稳定性
2024-02-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录