13.45 PARALLEL_ENABLE句

ファンクションのパラレル実行を可能にし、パラレルDML評価のスレーブ・セッションで安全に使用できるようにします。

パラレル問合せ操作のパラレル実行サーバーからファンクションを実行できることを示します。

PARALLEL_ENABLE句は、次のSQL文に指定できます。

構文

parallel_enable_clause ::=

streaming_clause ::=

セマンティクス

parallel_enable_clause

parallel_enable_clauseはファンクション内で1回のみ使用できます。

このファンクションでは、パッケージ変数などのセッション状態は使用しないでください(このような変数がパラレル実行サーバー間で共有されているとはかぎらないためです)。

オプションのPARTITION argument BY句は、REF CURSORデータ型のファンクションでのみ使用します。この句を使用すると、REF CURSOR引数からファンクションへの入力のパーティション化を定義できます。ファンクションへの入力のパーティション化は、ファンクションが問合せのFROM句内のテーブル・ファンクションとして使用された場合の問合せのパラレル化の方法に影響します。

ANY

データをパラレル実行サーバー間でランダムにパーティション化できることを示します

注意:

テーブル・ファンクションの弱いカーソル変数引数をパーティション化するには、RANGEHASHVALUEではなく、ANYのみを使用します。

RANGEまたはHASH

ファンクションのREF CURSOR引数によって戻される指定済の列にデータをパーティション化します。

streaming_clause

オプションのstreaming_clauseを使用すると、パラレル処理を順序付けまたはクラスタ化できます。

ORDER BY | CLUSTER BY

ORDER BYまたはCLUSTER BYは、パラレル実行サーバー上の行はローカルに順序付けし、columnリストで指定されたキー値と同じキー値を持つことが必要であることを示します。

VALUE

ダイレクト・キー・パーティション化を指定します。これは、MapReduceワークロードを実行する際に使用するテーブル・ファンクション用です。columnは、データ型がNUMBERである必要があります。VALUEは、使用可能なリデューサに行処理を均等に分散します。

列内に使用可能なリデューサよりも多くのリデューサがある場合、PL/SQLでは、モジュロ演算を使用して、列内のリデューサ数を正しい範囲にマップします。

リデューサ数を計算して対応する行を処理する際に、PL/SQLでは、負の値が0(ゼロ)として処理され、正の小数値が最も近い整数に丸められます。

関連項目:

パラレル・テーブル・ファンクションを使用する方法の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

expr

exprは、パーティション化が指定されているテーブル・ファンクション、およびパラレル問合せの実行時に各スレーブの順序付けまたはクラスタ化を指定する列を持つテーブル・ファンクションのREF CURSORパラメータの名前を示します。

parallel_enable_clauseの制限

ネストしたファンクションにparallel_enable_clauseを指定することはできません。