グローバルのサイズをプログラミングで取得する方法
これは InterSystems FAQ サイトの記事です。
システム提供の %SYS.GlobalQueryクラス の Size クエリーを使用することで取得できます。
使用例は、以下のサンプルコードをご参照ください。
※カラムやパラメータの指定はクラスリファレンスをご確認ください。
set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
do rs.Execute(dir) // 第3引数でマスク指定も可
while (rs.Next()) {
set gname= rs.Get("Name") // グローバル名
set gsize= rs.Get("Used MB") // グローバルサイズ(MB)
write gname," : ",gsize,!
}
グローバル変数のサイズが大きい場合、取得時間がかかる場合もあります。その場合、Size クエリー 実行時、第 6 引数に 1 を指定してクエリを再実行してみてください。
第 6 引数の指定により、簡易モードでサイズを取得します。簡易モードのため「Used MB」は取得できませんが、「Allocated MB」は取得できます。
以下、第 6 引数を指定した場合の実行例です(Used MB ではなく、Allocated MB を取得しています)。
set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
do rs.Execute(dir,,,,,1) // 第3引数でマスク指定も可
while (rs.Next()) {
set gname= rs.Get("Name") // グローバル名
set gsize= rs.Get("Allocated MB") // グローバルサイズ(MB)
write gname," : ",gsize,!
}