引数
引数 |
説明 |
gref |
グローバル参照。 |
gref2 |
オプション — 範囲の指定に使用するグローバル参照。 |
説明
$PREFETCHON は、現在のプロセスにおいてグローバルまたはグローバルの範囲に対して事前フェッチを有効にすることでパフォーマンスを高めます。$PREFETCHON は、正常に終了する (事前フェッチが有効になる) と 1 を返します。$PREFETCHON は、指定された事前フェッチを確立できなかった場合は 0 を返します。指定された範囲に 2 つの異なるグローバル名が含まれているか、事前フェッチを妨げる他の問題がある場合は、0 が返されることがあります。 返り値 0 はエラーではありません。これによってプログラムの実行に割り込みが発生することはなく、指定された範囲内のグローバル参照の処理に障害が生じることもありません。それは、単に、それらのグローバル操作で事前フェッチによってパフォーマンスが向上することはないことを意味します。
Note:
グローバルの事前フェッチは、リモート・データベースではサポートされていません。
$PREFETCHOFF は事前フェッチを無効にします。
$PREFETCHON には、以下の 2 つの形式があります。
-
$PREFETCHON(gref) は、gref ノードとそのすべての下位ノードを事前フェッチします。例えば、$PREFETCHON(^abc(4)) は、^abc(4) のすべての下位ノードである、^abc(4,1)、^abc(4,2,2) などを事前フェッチします。この場合、^abc(5) は事前フェッチされません。
-
$PREFETCHON(gref,gref2) は、gref から gref2 までの範囲のノードを事前フェッチします。これには、gref2 の下位ノードは含まれません。gref および gref2 は同じグローバルのノードである必要があります。例えば、$PREFETCHON(^abc(4),^abc(7,5)) は、^abc(4) から ^abc(7,5) の範囲のグローバル・ノードをすべて事前フェッチします。これには、^abc(4,2,2)、^abc(5)、および ^abc(7,1,2) が含まれます。ただし、この場合、^abc(7,5,1) は事前フェッチされません。
事前フェッチは、読み取りアクセスのみに制限されているわけではなく、多数の SET 操作が実行されている場合も正常に機能します。
引数
gref
グローバル参照は、グローバルまたはプロセス・プライベート・グローバルのいずれかです。グローバルは、事前フェッチを確立する時点では、定義の必要はありません。
このグローバルは @ 間接演算を使用して指定できます。"ObjectScript の使用法" の "間接演算" を参照してください。
この引数には、構造化システム変数名 (SSVN) を指定することはできません。
gref2
gref で範囲の指定に使用するグローバル参照。したがって、gref2 は gref と同じグローバル・ツリーの下位のグローバル・ノードである必要があります。
このグローバルは @ 間接演算を使用して指定できます。"ObjectScript の使用法" の "間接演算" を参照してください。
例
以下の例は、グローバル ^a に対する事前フェッチを確立します。
SET ^a="myglobal"
SET x=^a
SET ret=$PREFETCHON(^a)
IF ret=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET ret=$PREFETCHOFF()
以下の例は、プロセス・プライベート・グローバル ^||a(1) から ^a||(50) の範囲に対する事前フェッチを確立します。
SET ret=$PREFETCHON(^||a(1),^||a(50))
IF ret=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
関連項目