OBIEE中的缓存

BIEE的缓存是基于文件的,而不是在内存中,缓存文件以.tbl为扩展名。缓存对于提高查询效率很有帮助,它可以让查询直接从缓存文件中产生结果,而不用访问数据库,避免了数据库查询和网络传输上的时间损耗。但cache也带来其它问题,如缓存管理(如何提高cache命中率?怎样保持cache的中的数据不会过期?),占用物理资源等。

开启BIEE中的缓存NQSConfig.ini配置文件中,将[CACHE]部分的ENABLE设置为YES

管理缓存

  • NGSConfig.ini中配置缓存大小,缓存条目单体大小,缓存条目数量等信息(参数含义见下文)
  • Administration中控制缓存
    • Manage > Cache中可以强制刷新缓存(refresh),可以看到NGSConfig的配置信息(show info),以及当前的缓存内容,并且可以对已有缓存进行管理,查看其sql,将其手动清除purge
    • 在物理层中,可以对单个表设置是否缓存,以及缓存过期时间

 

缓存的清除

  • 缓存数目达到MAX_CACHE_ENTRIES定义的数目时,系统会将最久远的cache清除来缓存新的
  • 缓存到了物理表定义的过期时间时,会被清除
  • Cache Manager中手工清除cache

Seeding Cache:其思想是在终端用户去跑报表之前,我们先手工或自动去跑报表,让cache生成于系统之中,之后用户再运行的时候就可以利用到缓存了

  • 通过手工方式去跑报表
  • 通过ibot设置定期运行报表:要在delivers中创建ibot,并且在destination标签页中设置勾选Oracle BI server cache选项

查询没有被缓存的几种情况

  1. 非缓存的SQL。如果SQL中包含Current_Timestamp, Current_Time,Rand, Populate, or a parameter marker,这时查询将不被缓存
  2. Non-cacheable表。如果一个查询相关的物理表在Oracle BI Server资料库中被标记为Non-cacheable,则不会被缓存
  1. 缓存命中。通常情况缓存命中的查询将不会被缓存,除了POPULATE_AGGREGATE_ROLLUP_HITS参数为YES的情况。
  2. Cache本身没被启动。在NQSConfigENABLE = YES条件下可以开启缓存
  1. 结果集太大。如果结果集有太多行,超过了MAX_ROWS_PER_CACHE_ENTRY,该条目不会被缓存;如果结果集占用空间太大,超过了MAX_CACHE_ENTRY_SIZE,该条目不会被缓存
  1. Cache中参数设置不合理:如果MAX_CACHE_ENTRY_SIZEDATA_STORAGE_PATH路径能承受的大小还要大,那就无法缓存了
  2. 查询在presentation server被取消或者查询超时,则不会创建缓存
  3. OracleBI sever是集群的。集群中,查询缓存存在本地,而不会被传播,比如在节点1产生查询,缓存被存到该节点,而不会在节点2中也生成。

NQSconfig.ini文件中Cache相关的参数:

  1. Cache默认是开启的(ENABLE=YES),但在开发环境中可以将其关闭以提高效率
  1. 通过DATA_STORAGE_PATHS参数指定缓存的存放目录以及缓存大小,可以设置多个缓存,以逗号分隔,缓存最大不要超过4GB;在同一磁盘设备上设置多个缓存目录并不能提高性能,通常对每个磁盘设备设置一个缓存目录即可,如果超过一个,磁盘I/O加大会损害性能。
  1. MAX_ROWS_PER_CACHE_ENTRY,设置查询结果集中的最大行数,用来限制查询缓存的存储,如果一个查询超过这个指定值,该查询不会被缓存;为0时无限制
  1. MAX_CACHE_ENTRY_SIZE,设置每个缓存条目的最大值,如果超过该值则不会被缓存(即单个缓存文件的大小)
  2. MAX_CACHE_ENTRIES:设置缓存中被允许的缓存条目最大值(即共有多少缓存文件)。如果达到、超过最大值,系统会将最久远的cache清除来缓存新的。
  3. POPULATE_AGGREGATE_ROLLUP_HITS,该参数用来确定是否合计之前的缓存查询结果集,然后创建一个新缓存查询条目来累积缓存命中率。默认值为NO把这个参数设置为YES的话,可以提高查询性能,但是会使更多的条目加到缓存中去,增加了缓存压力。比如一个查询语句为sales by region通常我们可以从缓存中sales by districtregion解析。但是该参数为YES情况下,sales by region也会以新的条目加入到缓存中去。
  4. USE_ADVANCED_HIT_DETECTION:该参数为缓存命中提供了一个扩展的查询算法,具体算法还不清楚。这个扩展查询算法会影响性能。默认情况下参数设置为NO
  5. MAX_SUEXPR_SEARCH_DEPTH:该参数用来配置命中探测器查询一个不精确匹配查询表达式的深度。该参数默认值为5。如果该参数使用默认值,而查询表达式为sin(cos(tan(abs(round(trunc(profit))))))则不会命中。因为该表达式级别为7。修改参数到7的时候则能命中。
  6. GLOBAL_CACHE_STORAGE_PATH:该参数指定的路径用来存储集群的共享缓存条目。集群的所有节点使用同一个路径。
  7. MAX_GLOBAL_CACHE_ENTRIES:上述路径中保存缓存的最大条目数
  8. CACHE_POLL_SECONDS:每个节点从GLOBAL_CACHE_STORAGE_PATH指定的共享路径中取缓存数据的间隔,单位为秒
  9. CLUSTER_AWARE_CACHE_LOGGING:该参数用来开启集群缓存日志,用来故障处理。默认值为NO

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26742541/viewspace-740359/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26742541/viewspace-740359/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值