4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SPSS ModelerのDBキャッシュの動き

Last updated at Posted at 2021-03-05

SPSS Modelerのキャッシュは処理の途中結果を保存しておく機能です。
SQLプッシュバックとデータベース・キャッシングの機能を有効にしておくと、SQLプッシュバックが有効な処理はデータベースの一時テーブルをつくって、そこに保存することができます。

#1. 設定
ストリームのオプション設定でSQL最適化とデータベース・キャッシングにチェックを入れます。

image.png

image.png

動きを確認するためにSQLをログに記録するオプションにもチェックを入れます。
image.png

#2. DBキャッシュ
単純な条件抽出を行う処理を用意しました。これはSQLプッシュバックが可能です。

image.png

このノードのキャッシュを有効にします。
image.png

実行します。

image.png

以下のようになります。キャッシュのアイコンがディスクの絵になって緑になりました。

image.png

①一時表が作られています。

[2021-03-05 17:27:07] SQL を実行中: DECLARE GLOBAL TEMPORARY TABLE "SESSION".CLEMTMP151212791 ( "M_CD" VARCHAR(10),"UP_TIME" INTEGER,POWER INTEGER,TEMP INTEGER,PRES INTEGER,"ERR_CD" VARCHAR(10) ) ON COMMIT PRESERVE ROWS NOT LOGGED

②WHERE条件を含むSQLプッシュバックした内容を一時表に書き出しています。

[2021-03-05 17:27:09] SQL をプレビュー中: INSERT INTO "SESSION".CLEMTMP151212791 ("M_CD","UP_TIME",POWER,TEMP,PRES,"ERR_CD") 
SELECT T0."M_CD" AS C0,T0."UP_TIME" AS C1,T0.POWER AS C2,T0.TEMP AS C3,T0.PRES AS C4,T0."ERR_CD" AS C5 
FROM HWV53816."COND2N_E" T0 
WHERE (T0."M_CD" = '1000')

③一時表から読みだしています。この時にWHERE条件はなくなっています。

[2021-03-05 17:27:09] SQL を実行中: SELECT T0."M_CD" AS C0,T0."UP_TIME" AS C1,T0.POWER AS C2,T0.TEMP AS C3,T0.PRES AS C4,T0."ERR_CD" AS C5 
FROM "SESSION".CLEMTMP151212791 T0

キャッシュされた表がある状態で再度実行を行います。
image.png

すると先ほど作られた表からのみ読んでいて、もともとのテーブルへのアクセスがなくなっています。キャッシュする前までの処理をショートカットすることができました。

image.png

#3. DBキャッシュが効かない場合
DBキャッシュが効くのはSQLプッシュバックが効く処理だけです。SQLプッシュバックが効かない場合は、Modeler内に一時ファイルをつくってデータをキャッシュします。

試しに@INDEXというSQLプッシュバックが効かない処理をいれて、キャッシュする設定をして実行してみます。
image.png

以下のようにキャッシュされたテーブルから読んでいますが、新たな一時表は作られておらず、キャッシュのアイコンも書類のようなアイコンが緑になっています。

image.png

これを再度実行しますと、今度はもう一時表へのSELECTが行われません。Modeler Serverを使っていればModeler Server、使っていなければModeler Clientに一時ファイルをつくって、キャッシュしていますので、DBアクセス自体が発生していません。

image.png

#4. 注意事項

  • Db2の場合DBキャッシュは一時表で作られますので、Db2との接続が切れると自動的に削除されます。
  • DBによっては実表で作られることもあります。その場合はストリームを閉じた時点でDROP TABLEで削除されます。ですので、ストリームが異常終了した場合にはゴミ表が残ってしまうことがあります。
  • 一時表にはパーティションキーやINDEXはありませんので、処理によっては効率が悪くなることもあります。パーティションキーやINDEXなどでチューニングしたい場合にはDBエクスポートで実表で中間テーブルを作成してください。

#5. 環境
Modeler18.2.2
Windows 10
Db2 on Cloud

#6. 参考
ノードのキャッシュ・オプション
https://www.ibm.com/support/knowledgecenter/ja/SS3RA7_18.2.2/modeler_mainhelp_client_ddita/clementine/cache_options.html

Modelerデータ加工Tips#01-「キャッシュ」で後続処理の効率をアップ | IBM ソリューション ブログ https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-01/

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?