その昔、クラス/テーブルのデータ、ストリーム、インデックスのサイズを判断するのは簡単なことでした。%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 の場合は割り当てられた空間のみを返します。
シャーディングされたクラスとシャーディングされてないクラスが組み合わされている場合には、以下のように表示されます。
現在のところ、シャードクラスでは、現在のシャードに関する情報のみが返されるという制限があります。