一時グローバル
temporary global
一時的にグローバルにセットするときに普通のグローバルにセットしていませんか?
ORACLEでの一時表と同様に、Cache'にも一時グローバルという仕組みがあります。
一時グローバルを使うと、データベース領域を無駄に使用しなかったりジャーナルに記録されなかったりするので、パフォーマンスが良くなるそうです。
一時グローバルにはCacheTempとプロセスプライベートグローバルという2種類のものがあります。 次のような違いがあるようです。
|
CacheTemp |
プロセスプライベートグローバル |
使い方 |
グローバル名をCacheTempで始める。(注) ^CacheTempAAA など。 |
グローバル名の前に||を追加する。 ^||AAA など。 |
参照可能な範囲
スコープ |
そのシステム内から参照可能 |
そのプロセス内のみ参照可能 |
自動的に消滅するタイミング |
Cache'の再起動時 |
使用したプロセスの終了時 |
使い方
特に意識することなく、普通のグローバルと同様にSet,Killできます。
処理中のプロセスだけが参照できればよい場合はプロセスプライベートグローバルを、そうでない場合はCacheTempを使用すれば良いと思います。
(注)
^CacheTempと同様な動作をするものとして^mtempなどもあります。
マニュアルではシステムもCacheTempを使用するので、衝突を防ぐため^CacheTempUserでグローバル名を始めることが勧められています。
既存プログラムで使用する
既存プログラムで一時領域として^Workというグローバルを使っていたとします。
CacheTempを使ってパフォーマンス向上を行なおうとするなら、簡単に実現する方法があります。
それは、グローバルマッピングを使用する方法です。
^WorkグローバルをCacheTempデータベースにマッピングすることで、^Workグローバルは^CacheTempと同じように動作します。
^CacheTempと同じように動作するので、^Workの中身は再起動時に全て破棄されることに注意してください。
|