4

我提前道歉,因为我是这个领域的新手,我可能没有预先提供所有必需的信息,但这里是。

  • 我在一个两节点 Oracle RAC 上。
  • 最近收集了优化器统计数据并且非常准确。
  • 我有一个查询,其中引用了 3 个表。(表 A 左外连接 X 上的表 B 左外连接 Z 上的表 C。)
  • 表 B 和 C 已分区。
  • 这三个表的度数均为 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。

根据您提供的信息,我认为只有两个可能的项目可能导致并行性:

  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 回答