並列検索とは、問い合わせプランナが自動的に選択する実行計画の一つです。
並列検索が選択されるための条件を説明します。
並列検索が選択されるSQL文
一般的なSELECT文のほかに、以下のSQL文でも並列検索が実行計画の候補として選択されます。ただし、“並列検索が選択されない条件”に該当する場合には、並列検索が選択されることはありません。
SELECT INTO ~
INSERT INTO ~ SELECT ~
CREATE TABLE AS SELECT ~
COPY SELECT ~ TO ~
並列検索が選択されない条件
以下のいずれかの条件に合致する場合には、問い合わせプランナが並列検索を選択しません。
外部テーブルを指定している
一時テーブルを指定している
副問合せを指定している
ロック処理句(FOR UPDATEなど)を指定している
カーソルを使用している
トランザクション隔離レベルがSERIALIZABLEである
並列処理で許可されている関数以外を指定している
関数については、“12.3 利用可能な関数の確認方法”を参照してください。
対象テーブルにVCIが作成されており、かつ、検索を行うセッションで“vci.enable”パラメータが有効(on)になっている
実行時の選択条件
以下のいずれかに該当した場合には、システムが性能面で効果が得られないと判断して、並列検索を選択しません。並列検索が動作したかどうかの確認方法、また動作しない場合の対処方法は、“12.2.3 確認”で確認することができます。
テーブルの全件検索(シーケンシャルスキャン)ではない
処理対象のテーブルがパラメータ“parallel_scan_pages_threshold”の値(1,000ページ(8,000キロバイト))より小さい場合
サーバ上に利用可能なCPUが割り当てられないと判断した場合
パラメータによる動作制限がある場合
ただし、上記の条件については、チューニングにより変更可能な条件があります。詳細は“運用ガイド”の“パラメータ”を参照してください。
ポイント
並列検索でのSQL文の問い合わせ計画が変わらないようにオプティマイザヒントにより安定化させることができます。問い合わせ計画の安定化については、“11.1 問い合わせ計画の安定化”を参照して下さい。