概要
何度かCognosプロジェクトのパフォーマンスチューニング支援で見かけた問題です。
DMR(Dimensionally Modeled Relational)のモデルと、リレーショナルのモデルを1つのクエリー内に同居させていて、レポート実行のパフォーマンスが悪化している事例です。
説明
リレーショナルモデルとは、Framework Managerでモデルを作成した際に、下図の青枠のようなクエリーサブジェクトのセットとして構成されるモデルです。一般的に使用されているモデルです。
DMRとは、同じくFMでモデル作成時に、オレンジ枠のように階層構造を持ったディメンションベースで構成されているモデルです。

これらのモデルは、1つのパッケージ上に共存させることも、1つのクエリー上に共存させる事も可能なのですが、1つのクエリー上に共存させた場合、レポート実行時に「ローカル処理」が発生して、レポートのレスポンス遅延が現れやすくなります。
「ローカル処理」とは、リレーショナルモデル側の結果セットと、DMRモデル側の結果セットを結合する際に、データベース上で行うのではなく、Cognos BIノード上に両結果セットを持ってきて、Cognos BIノード上で結合処理を行う事を言います。
「ローカル処理」は、基本的に1CPUコアで処理されますので、データベース上で処理を行うより、処理時間が長時間化する事になります。
レポートを開発する際は、この様なDMRモデルとリレーショナルモデルの混在が無いか、常に注意する事が必要と覚えておいて頂ければと思います。