La verdad es que la documentación sobre el GSIZE no es muy clara, pero sin embargo es un comando muy útil porque nos permite ver la distribución del tamaño de la base de datos dentro de los globals, así podemos saber si los datos corresponden a objetos de una clase determinada, si los purgados se realizan correctamente, etc.
Para lanzar el GSIZE se hace desde el terminal:
Para lanzar el GSIZE se hace desde el terminal:
USER> zn "%SYS"
Cambiar al Namespace %SYS
%SYS>do ^%GSIZE
Lanzar el comando
Directory name: c:\intersystems\e2014\mgr\ =>
Aquí el script está preguntando el directorio donde está el CACHE.DAT del que quieres obtener las medidas. Por defecto sale el directorio de la base de datos de %SYS que normalmente no es la que queremos (Si pulsas RETURN cogerá esa). Hay que mirar la ruta donde está la base de datos de la que queremos las medidas y ponerla ahí.
All Globals? No => yes
Si elegimos "no" entonces tendremos que ir enumerando los globals que queremos analizar, por lo que normalmente elegiremos "yes"
^%nlsmisc contains no data
Include it anyway? No => no
Aquí pregunta si se incluyen los globals que no tienen datos. Lo habitual es elegir "no".
Exclude any other similar globals without asking again? Yes => yes
A partir de aquí aparece un listado con los globals descartados y finalmente aparece un mensaje similar a este:
46 items selected from
64 available globals
Show details?? No => yes
Debemos elegir "yes" para tener información detallada
Device: c:\intersystems\e2014\gsize_output.txt
Aquí el script nos pregunta el nombre del fichero para guardar los resultados, si lo dejamos vacío y pulsamos RETURN únicamente aparece en pantalla
Parameters? "WNS" =>
Pulsamos RETURN para escoger la opción por defecto
Directory name: c:\intersystems\e2014\mgr\ => CTRL+C
El script nos pregunta iterativamente para ir eligiendo una base de datos cada vez, cuando hayamos analizado todas las elegidas debemos hacer un CTRL+C para terminar
%SYS>
Al finalizar el proceso dispondremos de un fichero con contenido similar a este:
directory: c:\intersystems\e2014\mgr\
Page: 1 GLOBAL SIZE 31 Jul 2014
10:36 AM
Global Blocks Bytes Used Packing Contig.
-------- -------- --------------- ------- -------
% 2 13,020 80 % 0
%iKnow 115 835,164 89 % 114
%IS 1 1,940 24 % 0
%ISC.SASchema
1 612 7 % 0
%ISC.SASchema.Timestamp
1 148 2 % 0
%ISCLOG 5 36,860 90 % 3
%ISCStudioTemplate
1 6,492 80 % 0
%MV.DICTDICT 1 1,076 13 % 0
%MV.DICTMVPIDTAB
1 800 10 % 0
%MV.DICTSYSTEM
1 148 2 % 0
%MV.DICTTERMCMP
1 52 1 % 0
%MV.DICTTERMDEFS
1 52 1 % 0
%MV.DICTVOC 1 328 4 % 0
%MV.ERRMSG 7 40,269 70 % 5
%MV.NEWACC 1 7,996 98 % 0
%MV.TERMDEFS 6 35,900 73 % 5
%RS 1 836 10 % 0
%Studio.DocumentHistory
1 7,692 94 % 0
%SYS 4 24,248 74 % 0
CONFIG 7 38,824 68 % 2
ISC.Monitor.ComponentD
1 244 3 % 0
ISC.Monitor.Debug
1 28 0 % 0
ISC.Monitor.Health.AlertAge
1 36 0 % 0
ISC.Monitor.Health.Callback
1 32 0 % 0
ISC.Monitor.Health.Startwait
1 40 0 % 0
ISC.Monitor.Interval
1 32 0 % 0
ISC.Monitor.SensorObjectD
1 1,632 20 % 0
ISCMonitor 1 84 1 % 0
Monitor.ApplicationD
1 108 1 % 0
Monitor.ItemD
4 24,700 76 % 2
Monitor.ItemGroupD
1 3,108 38 % 0
NET 1 592 7 % 0
oddCOM 1,414 10,353,288 90 % 1,413
oddDEF 349 2,496,096 88 % 343
oddDEP 1 1,568 19 % 0
oddEXTR 122 882,192 89 % 121
oddMAP 202 1,473,292 89 % 201
oddPROC 313 2,254,060 88 % 312
oddSQL 81 585,328 89 % 79
rINC 97 709,092 90 % 95
directory: c:\intersystems\e2014\mgr\
Page: 2 GLOBAL SIZE 31 Jul 2014
10:36 AM
Global Blocks Bytes Used Packing Contig.
-------- -------- --------------- ------- -------
rINDEX 10 60,532 74 % 6
rINDEXCLASS 9 61,480 84 % 4
rINDEXSQL 8 52,316 80 % 6
rOBJ 2,014 14,248,363 87 % 1,285
ROUTINE 580 3,962,020 84 % 573
SYS 952 5,811,096 75 % 795
TOTAL Blocks Bytes Used Packing Contig.
-------- -------- --------------- ------- -------
6,326 44,033,816 85 % 5,364
Como se puede comprobar GSIZE lista cada uno de los globals existentes en la base de datos y para cada uno indica el número de bloques y los bytes usados dentro de los bloques.
Recordad que un bloque normalmente son 8KB de manera que 10 bloques pueden contener 10 x 8 x 1024 bytes = 81.920 bytes, si ese global por ejemplo indica que dentro de los 10 bloques solo tiene 60.532 bytes entonces la columna packing indicará 74%, eso quiere decir que el 74% está ocupado y el 100-74=26% está disponible y podrá ser usado.
1 comentario:
Gracias por el aporte David, aun para estás fechas no hay mucho acerca de esto.
Publicar un comentario