viernes, 22 de agosto de 2014

Como hacer un GSIZE

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:

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.