找文章 / 找答案
精选问答 更多内容

[专家分享] 【内存优化】内存优化之我要省省省!!!!

美滋滋白银二 显示全部楼层 发表于 2021-12-14 17:51:34 |阅读模式 打印 上一主题 下一主题
最近客户这边遇到了几次宕机问题,主要原因就是内存溢出了。
所以关于优化内存方面,我想随便聊一聊,如有不对的地方,还请不吝赐教。

永洪BI服务的内存分配是在安装产品是默认服务器的一半来设定的,比如你的服务器硬件内存是16G,那么安装BI的时候,默认最大内存就是8G,这个数值在产品安装完成后,也可以手动修改,具体修改方法我就不阐述了。可以参考下这个帖子。


不过这个是基于物理内存的前提下进行的设置,今天我要聊的是在不变更BI可使用内存设置的前提下,我们该做些什么来减少BI的内存使用。


---------敲黑板----------


我们要做的事情,就是给BI服务器减负,需要做的事情,能不让BI做就尽量不要让BI来做!!
BI要做的事情,就应该只是负责展示数据!让数据可视化!让数据有价值!让数据飞 。。。。。。


-------黑板敲完了--------


那么我们都该用什么手段来惯着BI,让他这么懒下去呢 :)


1.从数据集下手


   我们大部分接触和使用的都是SQL数据集,而在建立SQL数据集的时候,我们应该注意以下几点:


   1.1 不需要的项目不要抽取

         我们在做数据集的时候,要注意我们报表要使用哪些信息,不使用的信息坚决不要,因为你从数据库抽取出来的数据都是放在BI端的内存中供报表使用的。
         所以你抽取的项目越多,占用的内存自然也就越多。


         例:我有一个数据表,表中有年度字段,月度字段,产品分类字段,销售额字段。该表记录了所有每个年度中每个月度每个产品分类的销售情况。
         如果我们的报表不考虑月度的分析,只关心每个年度的销售情况,那么我们在抽取数据时,就不要抽取月度字段。只抽取年度,产品分类,销售额就够了。
         在此我也想特别说明一下,有些同学为了省事,直接写 select * from table ,这样的话,你会无条件把对应数据表中的所有项目全抽出来,虽然这样在写SQL时很简单,不用一个一个去写要抽取的数据字段,后期用着也方便,不用考虑哪个字段少抽取了,还得修改数据集,但是这样做带来的就是最大的浪费内存。
          这个做法是最不可取的。


   1.2 别人能做的事情就让别人做,我懒我自豪

         啥意思呢?其实就是在抽取数据的时候,能让数据库做的事情,我们就尽量让数据库去做,而不是我们抽取完数据后,在通过新建表达式等方式来新增一些报表需要用来展示的字段。

         比如数据库表中有预计销售额和实际销售额两个字段,那么我们在报表展示的时候,想展示达标率,如果我们在创建数据集的时候,只抽取了这两个字段,我们就需要新增计算列,用实际销售额/预计销售额来计算达标率,这个计算就变成了在BI端来实施,就会占用BI端的内存,而如果你在创建数据集的时候,就把这个计算一并抽取出来,比如 select 实际销售额.预计销售额,实际销售额/预计销售额 as 达标率 from table ,这样的话,就相当于把计算达标率这个工作推给了数据库去做,就不会占用BI的内存了。所以能让别人去做的事情,我们为啥要傻傻的自己去干呢 :)

   1.3  减少数据抽取行数
      
        顾名思义,其实宗旨也是不需要的坚决不要。啥意思呢?比如我们报表只关心当前年度的数据展示,那么我们在创建数据集抽取数据时,就应该加上限定条件,只抽取当前年度的数据,不要一股脑的把所有数据都抽取出来。那么有同学问了,我在报表展示的时候,不仅想展示当前年度的,我也想看历史年度数据该怎么办呢?

         这个时候,我们该选择使用参数数据集,关于参数数据集的具体做法,有别的帖子介绍过,可以参考这个帖子。

        通过在数据集的抽取SQL中,增加参数设定,来达到抽取某些范围内的数据,从而减少与数据库的数据吞吐量来达到减少BI服内存使用的结果。

2.从报表下手
   

      关于这一点,我能想到的就是尽量减少脚本的使用,因为你所有的脚本运行都是要在BI端执行的,会吃BI端的内存。还有就是如何优化你的脚本,同样的功能,不同的脚本可能带来同样的效果,那么谁的脚本写的漂亮,写的更精简,谁的内存使用更合理,这都是有直接关系的。这个就要靠多年的编程经验来积累了。总之,原则上能不使用脚本的尽量不使用,必须使用的时候,就要考虑如何编写的更精简,变量使用上更合理。

      好了,今天就浅谈这些吧,关于内存优化肯定还有很多方方面面可以挖掘的,还希望各位看官楼下补充  :)









回复

使用道具 举报

精彩评论5

Hey·Siri青铜四 来自手机 显示全部楼层 发表于 2021-12-14 18:57:51
强{:11:}
回复

使用道具 举报

Yonghong-Club 显示全部楼层 发表于 2021-12-15 16:50:25
回复

使用道具 举报

小赞 显示全部楼层 发表于 2021-12-16 18:25:56
好厉害哦
回复

使用道具 举报

Carl.Hui青铜四 显示全部楼层 发表于 2022-6-10 15:02:52
本帖最后由 Carl.Hui 于 2022-6-10 15:04 编辑

file:///C:\Users\DONGLI~1\AppData\Local\Temp\SGPicFaceTpBq\43788\1B2602D1.png
回复 支持 反对

使用道具 举报

7岁并入国家电网铂金三 显示全部楼层 发表于 2022-6-15 10:39:09
虽然不懂,但是大受震撼
回复 支持 反对

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部