Cognos BIでは、レポート参照時のクエリーの実行モードとして、動的クエリーモード(DQM)と互換クエリーモード(CQM)が存在します。
いまどきのCognos BIでは、DQMがデフォルトになっていますが、DQMではレポート実行時にCognos BIサーバー上のJVMメモリー(Query Service)にキャッシュを保持し、再利用によるパフォーマンスの向上が図られています。
このキャッシュの保持期間について、特にRelational Modelでの動作について、きちんと説明されている情報があまり無いので、私なりの理解をまとめておきます。
##DQMの基本情報
Dynamic Query Mode(DQM)の基本情報は、何と言ってもCookbookを参照する事が一番です。
DQMのキャッシュがどのようなものかの基本的な話はこちらをご参照下さい。
The Cognos BI 10.1.1 Dynamic Query Cookbook
http://www.ibm.com/developerworks/data/library/cognos/infrastructure/cognos_specific/page529.html
##DQMのDMR & OLAPモデルでのキャッシュ保持期間
DMR(Dimensionally Modeled Relational)とOLAPでのキャッシュ保持期間について説明します。
念のため、DMRとはデータソースとしてはリレーショナルなデータベース(OracleやDB2等)ですが、以下のCognosのサンプルのモデルのように、標準ディメンションや数値ディメンションなどで構成される、階層構造を定義したモデルとなります。
OLAPとは、Cognos TM1やSAP BWやOracle Essbase等の、Cubeベースのデータソースのモデルとなります。
キャッシュ保持期間は、デフォルトで24時間となっていて、
C:\Program Files\ibm\cognos\c10_64\configuration\xqe.securecache.config.xmlの中の、clearCacheEveryXminituesの箇所で指定できます。
24時間はキャッシュが作成されてから24時間となり、キャッシュが作成されてから、他のレポート実行で再利用されたかどうかは関係がありません。
Automatic cache clearing
http://www.ibm.com/support/knowledgecenter/en/SSEP7J_10.2.1/com.ibm.swg.ba.cognos.ug_cra.10.2.1.doc/c_dqm_qry_srvc_auto_cache_clr.html
##DQMのリレーショナルモデルでのキャッシュ保持期間
現在ではDQMがデフォルトとなっていますので、実際の使用用途は、このケースが最も一般的と思います。
データソースとしてはリレーショナルデータベースで、先ほどのDMRのような階層構造を持たない一般的なモデルです。
このモデルでのDQMキャッシュ保持期間は、こちらのQuery Serviceのパラメーターの「アイドル接続タイムアウト」の期間で決まります。
ちなみにこのキャッシュ保持は、他のレポートが実行されると、例えキャッシュが再利用されていなくても、タイムアウトのカウントはその時点からにリセットされます。
最大値は65536秒なので、もしそれ以上の期間のキャッシュを保持したいのであれば、ダミーのレポートを定期的にスケジュールで実行するなど、工夫が必要です。
##DQMキャッシュのクリアーについて
Cognos Administrationの「キャッシュをクリア」からDMR,OLAP,リレーショナルモデルに関わらずクリアは可能で、APIを用いてコマンドラインからのクリアも可能です。
Clear everything in the cache
http://www.ibm.com/support/knowledgecenter/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.ug_cra.10.2.2.doc/t_asg_clear_qs_cache.html#ASG_clear_qs_cache
Query service command-line API
http://www.ibm.com/support/knowledgecenter/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.ug_cra.10.2.2.doc/c_dqm_qry_srvc_api.html