Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$PREFETCHOFF

グローバルの事前フェッチを終了します。

Synopsis

$PREFETCHOFF(gref,gref2)

パラメータ

gref オプション — グローバル参照。
gref2 オプション — 範囲の指定に使用するグローバル参照。

説明

$PREFETCHOFF は、$PREFETCHON で確立されたグローバル・ノードの事前フェッチを無効にします。

$PREFETCHOFF には、以下の 3 つの形式があります。

  • $PREFETCHOFF() は、現在のプロセスで確立されたすべての事前フェッチを無効にします。

  • $PREFETCHOFF(gref) は、gref ノードとそのすべての下位ノードの事前フェッチを無効にします。gref の値は、$PREFETCHON の値と正確に一致する必要があります。

  • $PREFETCHOFF(gref,gref2) は、gref から gref2 の範囲のノードの事前フェッチを無効にします。gref および gref2 は、同じグローバルのノードである必要があります。gref および gref2 の値は、$PREFETCHON の値と正確に一致する必要があります。値の範囲の一部を無効にすることはできません。

正常に終了すると、$PREFETCHOFF() は 0 を返します。無効にする事前フェッチがない場合でも、0 を返します。

正常に終了すると、$PREFETCHOFF(gref) および $PREFETCHOFF(gref,gref2) はコンマで区切られた 6 つの整数の文字列を返します。これらの 6 つの値はそれぞれ、事前フェッチされたブロック数、実行された入出力数、事前フェッチ処理数、事前フェッチ・ディスク時間 (ミリ秒)、バックグラウンド・ジョブで事前フェッチされたブロック数、およびバックグラウンド・ジョブで実行された入出力数です。

失敗すると、$PREFETCHOFF のすべての形式で -1 が返されます。$PREFETCHOFF(gref) および $PREFETCHOFF(gref,gref2) は、指定されたグローバルまたはグローバルの範囲に正確に一致する $PREFETCHON がない場合、または指定された事前フェッチのグローバルまたはグローバルの範囲が既に無効になっている場合に、-1 を返します。

パラメータ

gref

グローバル参照は、グローバルまたはプロセス・プライベート・グローバルのいずれかです。グローバルは、事前フェッチが無効になる時点では、定義の必要はありません。

このグローバルは @ 間接演算を使用して指定できます。"Caché ObjectScript の使用法" の "間接演算" を参照してください。

このパラメータには、構造化システム変数名 (SSVN) を指定することはできません。

gref2

gref で範囲の指定に使用するグローバル参照。したがって、gref2gref と同じグローバル・ツリーの下位のグローバル・ノードである必要があります。

このグローバルは @ 間接演算を使用して指定できます。"Caché ObjectScript の使用法" の "間接演算" を参照してください。

以下の例は、事前フェッチを 2 つ確立し、その後それぞれを無効にします。

  SET ret=$PREFETCHON(^a)
  IF ret=1 { WRITE !,"prefetch established" }
  ELSE { WRITE !,"prefetch not established" }
  SET ret2=$PREFETCHON(^b)
  IF ret2=1 { WRITE !,"prefetch established" }
  ELSE { WRITE !,"prefetch not established" }
  SET retoff=$PREFETCHOFF(^a)
  IF retoff'=-1 { WRITE !,"prefetch turned off. Values:",retoff }
  ELSE { WRITE !,"prefetch not turned off" }
  SET retoff2=$PREFETCHOFF(^b)
  IF retoff2'=-1 { WRITE !,"prefetch turned off. Values:",retoff2 }
  ELSE { WRITE !,"prefetch not turned off" }

以下の例は、事前フェッチを 2 つ確立し、その後現在のプロセスの事前フェッチをすべて無効にします。

  SET ret=$PREFETCHON(^a)
  IF ret=1 { WRITE !,"prefetch established" }
  ELSE { WRITE !,"prefetch not established" }
  SET ret2=$PREFETCHON(^b)
  IF ret2=1 { WRITE !,"prefetch established" }
  ELSE { WRITE !,"prefetch not established" }
  SET retoff=$PREFETCHOFF()
  IF retoff=0 { WRITE !,"all prefetches turned off" }
  ELSE { WRITE !,"prefetch not turned off" }

関連項目

FeedbackOpens in a new tab