Artículo
· 13 dic, 2023 Lectura de 2 min

Como obtener el tamaño de un global mediante programación

Preguntas frecuentes de InterSystems

Se puede obtener usando el comando Size query de la clase del sistema %SYS.GlobalQuery.

 

A continuación os dejo unos ejemplos de uso.

*Por favor comprueba la documentación de la clase para ver el detalle de las columnas y parámetros.

 

 set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(or CACHE.DAT) folder
 set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
 do rs.Execute(dir) // You can also specify a mask with the 3d parameter
 while (rs.Next()) { 
   set gname= rs.Get("Name") // global name
   set gsize= rs.Get("Used MB") // global size (MB)
   write gname," : ",gsize,!
 }

Si el tamaño de la variable global es grande, puede llevar un buen rato consultarlo. En estos casos, cuando ejecutes el comando Size query, pasale un 1 en el argumento de la 6ª posición y vuelve a ejecutar la consulta.

Al especificar el 6º argumento, obtiene el tamaño en modo simple. Los "MB usados" no se pueden obtener en el modo simple, pero se pueden consultar los "MB Asignados".

A continuación un ejemplo de la ejecución pasando el 6º argumento (Consultar MB asignados en lugar de usados).

 set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(or CACHE.DAT) folder
 set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
 do rs.Execute(dir,,,,,1) // You can also specify a mask with the 3d parameter
 while (rs.Next()) { 
   set gname= rs.Get("Name") // global name
   set gsize= rs.Get("Allocated MB") // global size (MB)
   write gname," : ",gsize,! 
 }
Comentarios (1)1
Inicie sesión o regístrese para continuar

Este tipo de utilidades siempre vienen bien! Como nota adicional, en la última versión de IRIS (2023.3), se ha implementado un nuevo algoritmo que mejora la velocidad de cálculo... Ahí va el link a las release notes: si alguno tiene un global bien crecidito, podría mandar tiempos de cálculo entre otras versiones y esta última... a ver la mejora.