oracle下面
我有一个表A很大里面一个分区大概有1000W的数据,这个表里面已经有索引,但现在业务需求要再添加一个索引,这个表实时有数据的读写,这种情况下如何添加索引?
alter system set parallel_max_servers=40;
 
ALTER SESSION FORCE PARALLEL DDL;
 
CREATE INDEX 索引名 ON A(DATE)  TABLESPACE TS_TAB_INTER
PARALLEL 40 NOLOGGING;
 
 
ALTER  INDEX 索引名  NOPARALLEL;
 
alter system set parallel_max_servers=0;
这种方法很慢很慢,那位大侠知道比较好的处理方法么?跪求!

解决方案 »

  1.   

    数据量大,慢是自然的。
    主要是不能阻塞应用,所以一定要加online.这个才是最关键的,首要考虑因数。还有这个parallel_max_servers的值是有一个关系式计算出来的。你的是否合理?服务器有几个CPU?
    CREATE INDEX 索引名  PARALLEL 40
    根据你的parallel_max_servers,你这里的PARALLEL 40明显错了加大pga,然后create index index_name on tablename(column) online nologging parallel n compute statistics;
      

  2.   

    打算加什么样的?global?local?global partition?global non_partition?目前cpu使用情况怎么样?40的并行,你的生产会受到大的影响.另外,当你使用并行度创建完的时候,索引会一直按这个并行度进行工作,所以创建之后需要修改并行度.在session级别把sort_area调大以及把work改为manual,而不是加pga