4

私はこの分野に不慣れであり、必要なすべての情報を事前に提供していない可能性があることを事前にお詫びしますが、ここで説明します.

  • 2 ノードの Oracle RAC を使用しています。
  • オプティマイザーの統計は最近収集されたもので、非常に正確です。
  • 3 つのテーブルが参照されるクエリがあります。(テーブル A は、X でテーブル B を左外部結合し、Z でテーブル C を左外部結合します。)
  • テーブル B と C は分割されています。
  • 3 つのテーブルすべての次数は 1 です。
  • select index_name from dba_indexes where degree != 1 and index_name not like 'SYS%' は行を返しません。(したがって、インデックスの次数は 1 です)。
  • 次のパラメータが設定されています。

.

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_dynamic_sampling           integer     2
optimizer_features_enable            string      11.2.0.3
optimizer_index_caching              integer     0
optimizer_index_cost_adj             integer     100
optimizer_mode                       string      ALL_ROWS
optimizer_secure_view_merging        boolean     TRUE
optimizer_use_invisible_indexes      boolean     FALSE
optimizer_use_pending_statistics     boolean     FALSE
optimizer_use_sql_plan_baselines     boolean     TRUE
os_authent_prefix                    string
os_roles                             boolean     FALSE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
parallel_adaptive_multi_user         boolean     FALSE
parallel_automatic_tuning            boolean     FALSE
parallel_degree_limit                string      CPU
parallel_degree_policy               string      MANUAL
parallel_execution_message_size      integer     16384
parallel_force_local                 boolean     FALSE
parallel_instance_group              string
parallel_io_cap_enabled              boolean     FALSE
parallel_max_servers                 integer     960
parallel_min_percent                 integer     0
parallel_min_servers                 integer     0

  • テーブルとインデックスのすべての次数を 1 に設定
  • parallel_degree_policy を MANUAL に設定
  • クエリでヒントは提供されません

説明計画を実行するときに、自動 DOP: 計算された並列度が 3 として計算される理由として考えられるものは何ですか?

4

1 に答える 1

3

並列度に影響を与える可能性のある 38 の要因のリストについては、こちらの回答をご覧ください。

しかし幸いなことに、これらのアイテムのほとんどはDOP を下げるだけであり、予想外に DOPを上げる方法はあまりありません。

あなたが提供した情報では、並列処理を引き起こす可能性のある項目は 2 つしかないと思います。

  1. alter session force parallel (query|dml|ddl); このクエリを使用して、セッション レベルの強制を確認します: select * from v$session where pq_status = 'FORCED' or pdml_status = 'FORCED' or pddl_status = 'FORCED';
  2. クエリをヒント付きクエリに密かに置き換える計画管理。並列ヒントを追加するプロファイル、アウトライン、SQL計画管理、または高度なリライトが存在する可能性があります。explain plan for ...および で実行計画を確認しselect * from table(dbms_xplan.display);ます。これらのオプションのいずれかが使用されたかどうかは、メモ セクションに記載されている可能性があります。
于 2014-02-24T01:57:23.683 に答える