Cognos性能优化方法

彭令秋
2023-12-01
前段时间在使用Cognos时遇到很多的性能上得问题,花了很长时间都没有有效的解决。钱谢天偶尔在百度文库看到了一位高人的经验的分享,觉得很不错,以后肯定用的着,就拿过了,感谢前辈的分享精神。
1 提高访问数据库速度(ver8 only):
Cognos和数据库间参数在cer*\bin\cogdm**.ini文件中,(*根据版本不同是安装目录的数字,**根据连接的数据库不同,是对应数据库名称的关键字)以oracle数据库为例,参数在cogdmor.ini文件中,打开这个文件查找字符串Fetch Number of Rows=去掉这行前面的分号,将10改成2000; 这样这行就成了Fetch Number of Rows=2000,表示是每次从数据库取2000条数据。其他数据库基本上都有类似的配置。用以提高从数据库中提取数据的速度。
2 加大缓存:
cer*\bin\Cer*.ini(*根据版本不同是安装目录的数字):
[Services]
SortMemory=5120
(这里 SortMemory 单位是 2kbytes,5120代表 2k x 5120 = 10M)
(技巧:一般 SortMemory 取空闲内存的十分之一到八分之一大小)
[PowerPlay DataServer]
WriteCacheSize=16384
(这里 WriteCahceSize 单位是 Kbytes,16384 代表 16M)
(技巧:一般 WriteCacheSize 可以通过估计生成的cube大小得到,和生成的cube大小差不多就可以了)

在 2G 内存的环境中,如果加载操作系统完成,并启动所有所需服务后系统空闲 800M 内存空间,则可设置:
[Services]
SortMemory=51200
[PowerPlay DataServer]
WriteCahceSize=81920
3 启用多 CPU 读取数据源:
在 Transformer 中,点击开 DataSource 的属性页面:
[img]http://dl.iteye.com/upload/attachment/609730/86325159-d86e-3a2b-8c89-5da2255a2d50.png[/img]
可以看到下方有一个 Enable multi-processing 选项,选中它,即可实现在读取数据时启用多 CPU 处理。多 CPU 处理可以在读取大型数据源文件时起到很明显的性能提升,对于读取巨型文本数据源时性能提升特别明显。
4 调节Transformer 每次提交数据量
在cerx\bin\trnsfrmr.ini 文件中MaxTransactionNum的值为500000,可适当将其提高,比如改为MaxTransactionNum=1000000能减少Cube数据提交次数,缩短Cube生成时间。
5恰当放置暂存文件:
在 Transformer 中,点开 File 菜单中的 Preferences 对话框,切换到Directories 页:

[img]http://dl.iteye.com/upload/attachment/609737/8cfe8309-b66e-3c12-b6c4-943286d9af27.png[/img]
将 Data Temporary Files 和 Model temporary files 放到两个物理硬盘上,并且确认这两个物理硬盘是速度快且空余空间大的。
对于使用 IDE(ATA)硬盘的系统,把这两个暂存文件路径分别放到两个 IDE 控制器连接的硬盘上以避免出现等待,并最大限度的利用带宽。对于使用 SCSI 硬盘的系统,把这两个暂存文件分别放到两个物理硬盘上,即能实现最大的带宽占用,并尽量减少等待。如果有多余两个物理硬盘,可设置多个数据,暂存目录,中间用分号隔开就可以了。对于放置 Data temporary files 的硬盘,要求至少有数据量两倍的空余磁盘空间,比如说各个数据源的数据量总和有 3.2GB,则要求放置Data temporary files 的硬盘有6.4GB空余磁盘空间。对于放置 Model temporary files 的硬盘,要求有(模型大小+立方体大小)x2 的空余磁盘空间,因为模型和立方体体积都较小,所以一般硬盘都能满足要求。
6 优化参数提高cube在cognos8上的展示性能。
如果生成的立方体是通过cognos8平台进行展示,我们可以将D:\cognos\cer4\bin目录下的trnsfrmr.ini文件中的EnablePCOptimizer设置为1,从而优化立方体在cognos8上的表现。

7 恰当分配数据库和Cognos之间的运算。
OLAP服务器通常对类似数据库中分组,汇总这样的操作速度相对较快,如果SQL中有很多分组和汇总导致数据库返回数据速度比较慢时,可以尝试去掉分组和汇总,让OLAP服务器直接读取数据,使用OLAP的方式运算,大部分情况下能够明显的提高Cube生成速度。
8 恰当定义维度粒度
有时候维度最低层次的节点比较多,从而造成立方体过于庞大,此时可以分析如此细的粒度对分析人员有多大帮助?提高立方体粒度减小立方体大小可以说是最有效的提高访问速度的方法。对于细粒度汇总可以通过查询报表进行展示。

9 Cognos8服务器缓存的调节
\cognos\c8\configuration目录下 :
ppds_cfg.xml文件
ReadCacheSize=******
根据具体环境情况适当提高ReadCacheSize, 可减少用户访问时服务器的磁盘IO。提高访问速度。
10.通过crosstab caching提高cube访问速度,进入:transformer-cube属性-processing;通过开启crosstab caching 提高cube访问速度。但此方法会增加一定的cube体积。

[img]http://dl.iteye.com/upload/attachment/609742/cb2c51ee-aa33-3aa5-be42-42553c60824d.png[/img]
11.取消报表自动分组提高明细报表查询速度
如果报表要展现明细数据,不想使用任何汇总,我们可以到此报表对应的查询中将自动分组属性定义为否。这样Cognos8就不会自动向SQL语句中添加Group By语句了。

[img]http://dl.iteye.com/upload/attachment/609747/91ef0b6d-03fb-39b0-a8d2-b56703fd0be2.png[/img]
12.在大数据量报表中如无特别需要不要使用排序或MAX等函数
在大数据量报表中如果正常情况,Cognos8会根据先select出的记录展现出报表的第一页,后面的记录会根据我们点击下一页时继续select出来以此提高性能。但如果我们使用了排序或max等操作,那报表就只能将所有记录进行操作了。
13.通过修改Cognos Configuration配置提高Cognos8速度
如果我们的服务器配置较高(超过2G内存),我们就可以考虑通过增加分配给Cognos8的内存来提高其运行速度。进入Cognos Configuration。修改下列


[img]http://dl.iteye.com/upload/attachment/609749/e7d1472d-b894-3e35-ae9c-6aec58e6fe3f.png[/img]

[img]http://dl.iteye.com/upload/attachment/609751/39fc5fa2-239a-3e29-a068-39d004046dd2.png[/img]
 类似资料: