【IRIS/Cache】グローバルの大きさを知る(%GSIZE)

はじめに

グローバルのサイズを知る事で、どの程度の期間でどの程度大きくなるかが、おおよそ予測が出来るようになります。

グローバルの成長が予測出来たら、DATファイルの必要サイズも予測する事が可能になります。

今回は、グローバルサイズを算出するコマンドをご紹介致します。

%GSIZE

同コマンドは、実行ネームスペースを選ばない為、どのネームスペースから実行しても問題ありません。

調査の対象は、DATファイル単位になります。
対象DATファイルの全グローバルか、特定のグローバルかを選択する事が可能です。

全グローバル対象とした設定方法

では、実際に全グローバルを対象とした出力コマンドを実行してみましょう。

d ^%GSIZE
SAMPLE>d ^%GSIZE
 
 
Directory name: d:\irisdb\sample\ => [DATファイルのフォルダパス入力(D:\IRISDB\SAMPLE-DATA)]
 
All Globals? No => [y(yes)]
 
57 items selected from
57 available globals
Show details?? No => [Enter(No)]
Device: [ファイルパス入力(D:\Temp\output\all_global.txt)]
Parameters? "WNS" => [Enter]

「Yes =>」「No =>」と聞かれた場合は、Enterで初期値が入力されます。
「details」に関しては、後ほど詳細に記載致します。

では、出力結果の「all_global.txt」を見てみましょう。

                                           Global Size Display of d:\irisdb\sample-data\
                                                        8:00 AM  Apr 14 2024

 ~ 略 ~

    developer.data.SampleD   62934    developer.data.SampleI   38187

 ~ 略 ~

      TOTAL: 1116062

「developer.data.SampleD」に対し、62,934と表示されています。
これは、developer.data.SampleDが62,934ブロック使用している意味になります。

ブロックとは、グローバルが格納される箱で、通常のサイズは8KBになります。
そのためグローバルサイズの計算式は下記になります。

w 62934 * 8 / 1024
491.671875

491.67MBのサイズと分かります。

特定のグローバルを対象とした設定方法

次は、グローバルを絞って調査を行いたいと思います。
調査対象のグローバルを入力して下さい。「*」はワイルドカードです。

SAMPLE>d ^%GSIZE
 
 
Directory name: d:\irisdb\sample\ => [DATファイルのフォルダパス入力(D:\IRISDB\SAMPLE-DATA)]
 
All Globals? No => [Enter(No)]
Global ^[対象グローバル入力(developer.data*)]
Global ^[Enter]
22 globals selected from 57 available globals.
 
Show details?? No => [Enter(No)]
Device: [ファイルパス入力(D:\Temp\output\target_global.txt)]
Parameters? "WNS" => [Enter]

では、出力結果の「target_global.txt」を見てみましょう。
調査対象のグローバルが、全て「developer.data.~」となっている事が分かります。

                                           Global Size Display of d:\irisdb\sample-data\
                                                        8:22 AM  Apr 14 2024

  developer.data.Patient10D   71425 developer.data.Patient10I   50669
~ 略 ~
    developer.data.SampleD    62934    developer.data.SampleI   38187

      TOTAL: 1116027

DATファイルが巨大な場合、全グローバルを対象とするとかなりの時間がかかります。
その場合は、調査対象のグローバルを絞って実施した方が良いですね。

詳細を表示する(details = yes)

今までのコマンドは、各グローバルの使用ブロック数を表示するだけでした。

通常であれば特に問題無いと思いますが、さらに詳細な情報が必要になる場合があります。

「Show details?? No => 」時に「y」と入力すると、さらに具体的な情報を取得する事が出来ますが、コマンドの完了時間がかなり遅くなるデメリットが存在します。

実際に実行してみましょう。

SAMPLE>d ^%GSIZE
 
 
Directory name: d:\irisdb\sample\ => [DATファイルのフォルダパス入力(D:\IRISDB\SAMPLE-DATA)]
 
All Globals? No => [Enter(No)]
Global ^[対象グローバル入力(developer.data*)]
Global ^[Enter]
22 globals selected from 57 available globals.
 
Show details?? No => [y(yes)]
Device: [ファイルパス入力(D:\Temp\output\target_global_details.txt)]
Parameters? "WNS" =>

結構な時間がかかりましたが、さて結果は・・・

directory: d:\irisdb\sample-data\
Page: 1                           GLOBAL SIZE                                                                            14 Apr 2024
                                                                                                                             8:30 AM
      Global        Blocks       Bytes Used  Packing   Contig.
      --------    --------  ---------------  -------   -------
      developer.data.Patient10D
                    71,425      518,177,312     89 %    71,336

~ 略 ~


      TOTAL         Blocks       Bytes Used  Packing   Contig.
      --------    --------  ---------------  -------   -------
                  1,116,027   7,892,925,336     87 %   620,493
項目名説明
Globalグローバル名称
Blocks使用ブロック数 (今まで表示していた値)
Bytes Used実際のデータサイズ
Packingブロックの充填率
Contig.ブロックの最大連続数
Packing

グローバルはブロックに格納されますが、若干余裕を残した状態にしています。
これは、格納したグローバルが増えた場合、100%を超えるとブロックが分割する事になります。
それを防ぐために若干の余裕を残す形になっています。

メンテナンス以外でユーザが充填率を操作する方法はありません。

Contig.

DATファイル内で、ブロックが連続している最大数が表示されます。
データを連続的に読み込む場合、ブロックが連続している方が効率が良いとされます。

ブロックの分割や、他のグローバルが書き込んだり等々で、自然に使用している上では、中々連続性を得る事は難しいです。

詳細情報で得られる内容が、かなり充実している事が分かります。
特に「Packing」や「Contig.」に関しては、しばらく運用していくと自然と値が下がってきたりしますが、定期的にメンテナンスをする必要性はないです。

メンテナンスの方法に関しては、別途ご紹介いたします。

終わりに

今回は、グローバルのサイズを計るコマンドについてご紹介致しました。

M言語は他のDBと比較すると、かなり高速でデータの書き込みと取得が行えます。
とくにメンテナンスしなくても、その速度をある程度維持する事は可能ですが、可能であれば時折メンテナンスを行う事をお勧めいたします。

快適な環境を維持するのは、気持ちいいですよね。