$SORTBEGIN (ObjectScript)
構文
$SORTBEGIN(set_global)
引数
引数 | 説明 |
---|---|
set_global | グローバル変数名 |
概要
$SORTBEGIN は特別なソート・モードを開始します。このモードでは、指定したターゲット・グローバルに対する SET 操作がプロセス・プライベートの一時領域にリダイレクトされ、サブセットにソートされます。ターゲット・グローバル参照にデータをコピーする $SORTEND を呼び出すと、このモードは終了します。特別なソート・モードの実行中は、すべてのターゲット・グローバル参照に対するセットと、その派生すべてが影響を受けます。
$SORTBEGIN は、インデックスの構築などの大容量の不規則なデータをグローバルに書き込む必要がある場合などに実行パフォーマンスを助けるように設計されています。書き込まれたデータの量が利用可能なバッファ・プール・メモリに到達する、またはそれを超えたとき、パフォーマンスは非常に低下します。$SORTBEGIN はこの問題を解決するため、ターゲット・グローバル内のデータの書き込みを規則的に行い、物理的なディスク・アクセスの必要回数を最小にすることを保証します。これは、1 つ以上の一時的バッファ (必要な場合は IRISTEMP データベース内のスペースを使用して) の中にデータを書き込んでソートし、$SORTEND が呼び出されるときにターゲット・グローバルの中にデータを連続してコピーすることで実行します。
$SORTBEGIN の実行中は、ターゲット・グローバルから読み取られるデータは SET 操作を反映しません。値を挿入しようとするグローバルと同じグローバルからグローバルの値を読み取る必要がある場合、$SORTBEGIN を使用することはできません。
InterSystems IRIS オブジェクトと InterSystems SQL アプリケーションは、インデックスや一時的なインデックスの作成で $SORTBEGIN を自動的に利用します。
$SORTBEGIN ソート・モードは、オプションの 2 番目の引数が 0 に設定されている $SORTEND を呼び出すことで、ターゲット・グローバルにデータを書き込まずに終了することができます。
成功した場合、$SORTBEGIN は 0 ではない整数値を返します。失敗した場合、$SORTBEGIN は 0 を返します。
モード・エラーの並べ替え
$SORTBEGIN と $SORTEND の間で一部の操作を呼び出すと、InterSystems IRIS がエラー・コードを発行します。
-
set_global のネームスペースのマッピングが $SORTBEGIN と $SORTEND で異なる場合、$SORTEND を呼び出した際に <NAMESPACE> エラーが発生します。ただし、$SORTBEGIN で暗黙的なネームスペースを使用して set_global を指定した場合は、それ以降にネームスペースのマッピングが変更されても $SORTEND には影響がありません。暗黙的なネームスペースのグローバル参照と明示的なネームスペースのグローバル参照を同じソート操作に混在させないでください。ネームスペースの変更の詳細は、"ネームスペースの構成" を参照してください。
-
$SORTBEGIN グローバルを構築し、そのグローバルの祖先または子孫に対して $SORTBEGIN を発行すると、InterSystems IRIS は <DUPLICATEARG> エラーを発行します。例えば、$SORTBEGIN(^test(1,2,3)) を呼び出した場合は、$SORTBEGIN(^test(1,2)) または $SORTBEGIN(^test(1,2,3,4)) の関数呼び出しは <DUPLICATEARG> エラーとなります。
関連項目
-
$SORTEND 関数