Oracle/パラレル実行

Last-modified: 2009-11-25 (水) 00:26:59

パラレル実行

Oracleの持つ自動並列化機能

例)インデックスの作成
●通常
CREATE INDEX 索引名 ON 表名(列名);
●パラレル実行
CREATE INDEX 索引名 ON 表名(列名) PARALLEL [並列度];
●パラレル実行での索引の再構成
ALTER INDEX 索引名 REBUILD PARALLEL [並列度] ;

  • 並列度を指定しない場合、CPU数から自動的に算出される。

DMLでのパラレル処理

  • SELECT、INSERT、UPDATE、DELETE、MERGEも並列化できる。
  • パラレル化の設定をしても使われるとは限らない。
  • 処理レコード数が少ないSQLなどでは使われない。

SELECT文とパラレル実行

  1. PARALLELヒント句
    SELECT /*+ PARALLEL(表名, 並列度) */ ・・・;
  2. ALTER SESSIONによるパラレル化
    ALTER SESSION FORCE PARALLEL QUERY [PARALLEL並列度];
  3. 表や索引のPARALLEL属性によるパラレル化
    ALTER TABLE 表名 PARALLEL [並列度];
    ALTER INDEX 索引名 PARALLEL [並列度];

DML文とパラレル実行

  1. DMLパラレル化
    ALTER SESSION FORCE PARALLEL DML [PARALLEL並列度];

パラレル実行のアーキテクチャ

  • パラレル処理は、パラレルスレーブプロセスが担う。ora_p+数字
  • Oracleサーバプロセスは、パラレルスレーブプロセスを統括するコーディネータとして機能する。