記事
Toshihiko Minamoto · 2022年8月25日 2m read

クラス/テーブルのサイズ情報を計算する

その昔、クラス/テーブルのデータ、ストリーム、インデックスのサイズを判断するのは簡単なことでした。%GSIZE を実行して、D、S、I グローバルをそれぞれ確認するだけで済みました。

ところが最近では、シャーディングや、最適化されたグローバル名、分離されたグローバルのインデックスでは以下のような %GSIZE 出力が生成されます。

            Global Size Display of /irissys/data/IRIS/mgr/irisshard/
                              1:35 PM  Dec 02 2020

          IRIS.Msg       1     IRIS.MsgNames       1     IRIS.SM.Shard       1
       IS.DGoWeK.1   24359       IS.DGoWeK.2       3       IS.DGoWeK.3    2810
       IS.DGoWeK.4    2542        IS.V0Zli.1     373        IS.V0Zli.2       2
        IS.k22Ht.1  238028        IS.k22Ht.2       3        IS.k22Ht.3   25819
        IS.k22Ht.4    7426       ISC.Src.Jrn       1           ROUTINE       1
           oddBIND       1            oddCOM       1            oddDEF       1
            oddDEP       1            oddEXT       1           oddEXTR       1
            oddMAP       1           oddMETA       1            oddPKG       1
           oddPROC       1        oddPROJECT       1            oddSQL       1
 oddStudioDocument       1     oddStudioMenu       1           oddTSQL       1
            oddXML       1           rBACKUP       1              rINC       1
          rINCSAVE       1            rINDEX       1       rINDEXCLASS       1
         rINDEXEXT       7         rINDEXSQL       1              rMAC       1
          rMACSAVE       1              rMAP       1              rOBJ       1

      TOTAL:  301403

もちろん、ストレージ定義を追ってこれをデコードすれば、容量がなくなっていることを理解することは可能ですが、以前ほど明確ではなくなっています。

クラス、そのサイズ、および関数に関連するグローバルを示すカスタム tvf を ClassSize クエリしましょう。

これは以下の 2 つの引数で呼び出します。

  • package - 永続クラスを検索する場所
  • fast - true の場合は割り当てられた空間のみを返します。

シャーディングされたクラスとシャーディングされてないクラスが組み合わされている場合には、以下のように表示されます。

現在のところ、シャードクラスでは、現在のシャードに関する情報のみが返されるという制限があります。

1
0 26
ディスカッション (0)2
続けるにはログインするか新規登録を行ってください