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?

$SORTBEGIN

ソート・モードを開始し、グローバルに対する複数セットのパフォーマンスを向上させます。

Synopsis

$SORTBEGIN(set_global)

パラメータ

set_global グローバル変数名

概要

$SORTBEGIN は特別なソート・モードを開始します。このモードでは、指定したターゲット・グローバルに対する SET 操作がプロセス・プライベートの一時領域にリダイレクトされ、サブセットにソートされます。ターゲット・グローバル参照にデータをコピーする $SORTEND を呼び出すと、このモードは終了します。特別なソート・モードの実行中は、すべてのターゲット・グローバル参照に対するセットと、その派生すべてが影響を受けます。

$SORTBEGIN は、インデックスの構築などの大容量の不規則なデータをグローバルに書き込む必要がある場合などに実行パフォーマンスを助けるように設計されています。書き込まれたデータの量が利用可能なバッファ・プール・メモリに到達する、またはそれを超えたとき、パフォーマンスは非常に低下します。$SORTBEGIN はこの問題を解決するため、ターゲット・グローバル内のデータの書き込みを規則的に行い、物理的なディスク・アクセスの必要回数を最小にすることを保証します。これは、1 つ以上の一時的バッファ (必要な場合は ^CacheTemp グローバル内のスペースを使用して) の中にデータを書き込んでソートし、$SORTEND が呼び出されるときにターゲット・グローバルの中にデータを連続してコピーすることで実行が可能です。

$SORTBEGIN の実行中は、ターゲット・グローバルから読み取られるデータは SET 操作を反映しません。値を挿入しようとするグローバルと同じグローバルからグローバルの値を読み取る必要がある場合、$SORTBEGIN を使用することはできません。

Caché オブジェクトと Caché SQL アプリケーションは、インデックスや一時的なインデックスの作成で $SORTBEGIN を自動的に利用します。

$SORTBEGIN ソート・モードは、任意の 2 番目のパラメータが 0 に設定されている $SORTEND を呼び出すことで、ターゲット・グローバルにデータを記述せずに終了することができます。

成功した場合、$SORTBEGIN は 0 ではない整数値を返します。失敗した場合、$SORTBEGIN は 0 を返します。

モード・エラーの並べ替え

$SORTBEGIN$SORTEND の間で一部の操作を呼び出すと、Caché がエラー・コードを発行します。

  • set_global のネームスペースのマッピングが $SORTBEGIN$SORTEND で異なる場合、$SORTEND を呼び出した際に <NAMESPACE> エラーが発生します。ただし、$SORTBEGIN暗黙的なネームスペースを使用して set_global を指定した場合は、それ以降にネームスペースのマッピングが変更されても $SORTEND には影響がありません。暗黙的なネームスペースのグローバル参照と明示的なネームスペースのグローバル参照を同じソート操作に混在させないでください。ネームスペース名の変更については、"Caché システム管理ガイド" の "ネームスペースの構成" を参照してください。

  • $SORTBEGIN グローバルを構築し、そのグローバルの祖先または子孫に対して $SORTBEGIN を発行すると、Caché は <DUPLICATEARG> エラーを発行します。例えば、$SORTBEGIN(^test(1,2,3)) を呼び出した場合は、$SORTBEGIN(^test(1,2)) または $SORTBEGIN(^test(1,2,3,4)) の関数呼び出しは <DUPLICATEARG> エラーとなります。

関連項目

FeedbackOpens in a new tab