Oracle中表和索引的并行度

时间:2017-03-22 13:46:31

标签: oracle database-performance

我们有一个RAC设置有4个节点,其中某个表的度数为1,实例为1,该表上的一个索引的DOP为16和实例1.只是想知道是否存在任何限制表和索引应该有相同的DOP?如果情况并非如此,那么它如何影响数据库。

2 个答案:

答案 0 :(得分:1)

表和指数的并列程度(DOP)是独立的。

表格DOP在表格访问时用作默认值,例如FULL TABLE SCAN。某些索引访问路径可以并行化,因为索引DOP用作默认值。

如果创建并使用并行选项编制索引,通常会出现这种情况。为创建的索引存储使用的DOP。 (可能只需要在创建后指数DOP改为NOPARALLEL)。

这是一个小例子,以并行模式创建索引并在之后重新映射DOP:

create index idx on t1(id) parallel 4;

select DEGREE, INSTANCES from user_indexes where index_name = 'IDX';

DEGREE                                   INSTANCES                              
---------------------------------------- ----------------------------------------
4                                        1                                      

alter index idx noparallel;

select DEGREE, INSTANCES from user_indexes where index_name = 'IDX';

DEGREE                                   INSTANCES                              
---------------------------------------- ----------------------------------------
1                                        1    

通常,您应该注意基于对象的默认DOP,因为它对所有查询有效。使用PARALLEL Hint为每个查询定义显式DOP可能更灵活。

答案 1 :(得分:0)

我自己检查了没有这样的限制,索引及其关联的表应具有相同的DOP。它影响数据库的唯一方法是由于并行进程而在服务器上产生额外负载。