私はこの分野に不慣れであり、必要なすべての情報を事前に提供していない可能性があることを事前にお詫びしますが、ここで説明します.
- 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 として計算される理由として考えられるものは何ですか?