原创乱了浮生 最后发布于2020-01-07 11:00:38 阅读数 32 收藏
EPM版本:11.1.2.4
随着系统应用及时间的推移,存储在Essbase中的数据会越来越多且由于规则的计算,会产生大量空块,进而数据文件膨胀,最终导致在一些特定操作后刷库、重构时,消耗大量的时间重构数据文件,一次刷库、重构甚至耗时几小时!
理想状态下,我们应该在系统开放之前维护并刷库、重构,但实际情况中我们难免遇到预算等编制过程中需要新增科目等修改稠密维的操作,这个时候重构一次若耗时几小时会对业务造成很大的影响,是不能接受的。所以,提升刷新、重构效率是一件非常重要的事情。
那么,如何提升效率呢?
我们知道稀疏维修改,不会触发Essbase重构,所以速度很快,耗时大约在秒级。当做了一些特定操作,如稠密维新增member等,刷库时会触发Essbase重构,此时后台将对pag数据文件进行重构,数据越多、数据文件越大(空块会导致数据文件膨胀),重构速度越慢,所以优化的第一个方法就是减少数据文件的大小。
一、减少数据文件大小(操作需谨慎、操作前做好数据备份)
①历史数据归档迁移
将历史数据归档迁移到备份应用中,并将原应用中历史数据及其块删除,注意,如果仅使用cleardata那么仅仅是将数据清除,并不会将删除数据后的空块清掉,所以还需要clearblock操作,具体应用请参考官方文档;
②定期reset、reload数据,消除执行规则产生的空块
二、启用并行重构
减少数据文件大小后,是否还有其他方法能提升重构效率呢?答案是有的,那就是启用并行重构。
Essbase在进行重构操作时,默认是按照块的编码串行重构,这种方式效率并不高。官方提供了并行的方式以提升重构效率,我们可以通过设置essbase.cfg,启用并行重构并设置并行度。
(路径:/Middleware/user_projects/epmsystem2/EssbaseServer/essbaseserver1/bin/essbase.cfg,设置完需重启Essbase服务生效)
语法如下:
RESTRUCTURETHREADS [ appname [ dbname] ] n
示例及说明:
RESTRUCTURETHREADS 8 /对Essbase全局设置重构并行线程为8/
RESTRUCTURETHREADS Sample 8 /对Sample应用的所有数据库设置重构并行线程为8/
RESTRUCTURETHREADS Sample Basic 8 /对Sample应用的Basic数据库设置重构并行线程为8/
RESTRUCTURETHREADS xxxxx Basic 8 /对所有应用的Basic数据库设置重构并行线程为8/
按照上述语法,我们可以根据自己的需要,全局、分应用、分数据库的设置重构并行线程。
要注意的是,由于我们各自系统所在服务器配置情况千差万别,并行线程设置的推荐值也不完全一致,官方给了如下建议值,我们可以根据自己的情况选择适合的并行线程。
————————————————
版权声明:本文为CSDN博主「乱了浮生」的原创文章,遵循 CC 4.0 BY-SA 版权协议
原文链接:https://blog.csdn.net/Thx_God/java/article/details/103870581