hikeplayguitar
作者hikeplayguitar·2012-05-10 16:33
研发工程师·山东城市商业银行联盟

[转载]理解Cognos应用的原理与过程

字数 1103阅读 1706评论 0赞 0
     Cognos查询的主要过程为:
1、选择查询内容(报表或数据列)
2、输入运行参数(查询条件)
3、语法映射,翻译成具体的过程(执行计划)
4、业务数据库运行阶段
5、Cognos本地临时文件生成阶段。
6、结果数据生成阶段
7、数据返回阶段

    以上7个过程为Cognos查询执行的主要过程,是影响查询性能的主要环节,其实际执行的环节要多一些,比如服务器的指派、结果数据返回的异步轮询等。
 
上图中标注红色数字的执行路线为经常出问题的地方,下面分别加以说明:
1、该步骤产生性能的原因可能是从数据库中取回了过多的数字供用户选择,第二个就是在客户端(IE浏览器)中做过多复杂的处理。三个是用户选择的大量数据 提交给Cognos应用服务器。这个地方会成为瓶颈的原因是a客户端的可选数据是从数据层经应用层通过网络web协议传送给浏览器客户端;b浏览器客户端 对数据处理的能力比较弱;c选择的结果又经过网络到web层再到应用层传输。而网络的传输跨越了广域网环节。
4、主要是a数据库在处理过程可能接收到了Cognos语法解析器生成的低效SQL;b数据库生成了大量的数据记录返回给应用服务器(超过10000条);c Cognos产品本身在接收数据的过程采用了低效的算法(单线程处理,有可能未加文件系统写入缓存等IO优化策略)。
5、是生成结果文件的过程,在该过程中Cognos的算法存在问题,运行效率欠佳,一般每分钟生成20M数据,且只能单线程处理。该过程是由于最终需求引起的,虽然是影响性能的关键点,但是不是能够在设计阶段通过技术手段解决的,因此该问题以后会逐步讨论。
6、该过程是结果数据生成后通过网络传回客户端的过程,由于该过程一般通过广域网传输,可用带宽一般在512k以内,每分钟可能传输的数据量为3M,即便 按照1M的带宽,每分钟能够传送的数据量也只能6M,如果有一个数据量在20M的数据,传输过程即要花费3~4分钟的时间。
 
     通过详细分解Cognos查询的具体过程,我们可以看到,过程4中,SQL执行过程和临时文件(几个G通常是常见的)生成过程是我们在设计阶段最容易避免 性能问题的环节,因为其他环节要么受制于需求,要么受制基础设施(如网络)。因此后续关于通过设计优化性能的策略我们会通过这个环节给予详细描述。

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

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广