13.47 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
データをパラレル実行サーバー間でランダムにパーティション化できることを示します
注意:
テーブル・ファンクションの弱いカーソル変数引数をパーティション化するには、RANGE
、HASH
やVALUE
ではなく、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を指定することはできません。