interboy
作者interboy·2010-05-07 12:58
软件开发工程师·北京中电普华信息技术有限公司

cognos查询临时文件(UDA文件)的分析

字数 1040阅读 4760评论 4赞 15
前两天论坛里有人提问关于tmp文件夹下uda开头文件的问题。这个可以确定的是Cognos即席查询报表执行时产生的临时文件。这里需要谈一下查询组件的几个属性,处理(Processing)属性,有“默认(default)”“仅数据库(database only)”“仅限本地(limited local)”几个选项,默认情况下查询先转换为Cognos SQL提交给报表服务器,然后将SQL语句转换为应用数据库本地执行的SQL语句,进行数据库处理。若设置为仅数据库则查询所对应的SQL不经报表服务器处理全部转换为数据库能够执行的本地数据库SQL,从而提升报表处理速度,如果将该属性设置为"仅限本地",则将报表页面生成的SQL先进行必要的报表服务器运算,然后再将剩余的部分提交给数据库进行本地SQL的处理,异构数据库的关连展现时cognos采用“仅限本地”进行处理。
查询的“使用本地高速缓存(Use Local Cache)”属性中可以为查询设置是否使用本地缓存。如果将该属性设置为Yes,则启用服务器的本地缓存,服务器将为查询结果保存在session中,当用户在浏览器内再次打开同一张报表时,查询结果将取自缓存,从而减轻了数据库的负载压力;如果将该属性设置为No,则禁用服务器的本地缓存,查询结果全部取自数据库的实时数据。
  前面介绍的两个属性貌似与uda开头的文件有关,但本人经过测试(8.3)发现,不管处理选择数据库还是本地,不管是否启用本地高速缓存,uda文件都会出现,而且有规律。1:分页处理时uda文件会随着向下翻页而不断增加,当往回翻页时,uda文件大小不变。可以推断uda文件缓存了查询展现的结果集。
2:当数据量较小而没有产生分页时则uda文件大小为0
3:当启用高速缓存时关闭报表页面uda文件不会被清空,若禁用高速缓存则关闭报表清空uda文件内容


分析:我们说点击上一页、下一页cognos会用高亲和力连接来处理请求,而上一页和下一页的实现上存在着较大的区别,向下翻页会根据高亲和力请求上下文中包含的游标信息通过滚动游标获取下一页的数据,这样做效率最高。而向上翻页却不可能用游标来实现,因为游标只能向下滚动,而不能向上滚动,所以我认为向上翻页cognos是从uda文件中获取的数据。所以当做数据量较大的即席查询时若有条件可以把tmp文件夹到一个空间较大的高速磁盘上。也会有助于提升报表展现性能。
注意:若启用了高速缓存可能会导致结果集与数据库不同步,建议将其禁用

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

15

添加新评论4 条评论

cognos_baoyzcognos_baoyz研发工程师北京泛鹏天地科技有限公司
2016-05-12 11:26
优质好文
hellocognoshellocognos软件架构设计师IBM
2013-08-16 11:54
谢谢,高手就是高手
aqiang_007aqiang_007软件开发工程师longtop
2012-02-08 17:45
谢谢分享,知识又增加了
liuyangliuyang项目经理skyon
2010-06-09 09:32
感谢楼主分享,顺带问一句,.dmc文件知不知道为何产生
Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广