En los buenos tiempos, calcular el tamaño de los datos, flujos e índices para una clase/tabla era fácil - solo había que ejecutar %GSIZE
y revisar los globals D, S, e I, respectivamente.
Sin embargo, hoy en día el sharding, los nombres de los globals optimizados y los índices en globals separados producen una salida %GSIZE
parecida a esta:
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
Claro, se pueden seguir las definiciones de almacenamiento y descodificar para entender a donde se fue el espacio, pero ya no es obvio.
Introduce en ClassSize query una función con valores de tabla (tvf) personalizada, que muestre los globals relacionados con las clases, su tamaño y su función.
Llámala con dos argumentos:
- package: dónde buscar clases persistentes
- fast: si es verdadero devuelve solo el espacio asignado
Esta es la apariencia de una combinación de clases sharded y non-sharded:
La limitación es que, de momento, solo la información sobre el shard actual es devuelta para las clases sharded.