请大家看看是否有什么方案解决这个问题:系统被多个线程处理数据, 其中一部分是删除大量数据, 一部分是往数据库中添加大量数据.
目前看来, 相互的影响太大(几十倍的性能降低), 请问这样的并行处理的一般优化方案是什么?谢谢!

解决方案 »

  1.   

    alter table tablename nologging;
    试一下。
      

  2.   

    设置并行查询的相关系统参数如PARALLEL_AUTOMATIC_TUNING、PARALLEL_EXECUTION_MESSAGE_SIZE
    修改表的并行参数设置如ALTER TABLE employee PARALLEL; 
      

  3.   

    create or replace procedure delBigTab
    (
    p_TableName       in    varchar2,
    p_Condition       in    varchar2,
    p_Count        in    varchar2
    )
    as
    pragma autonomous_transaction;
    n_delete number:=0;
    begin
    while 1=1 loop
    EXECUTE IMMEDIATE
    'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'
    USING p_Count;
    if SQL%NOTFOUND then
    exit;
    else
    n_delete:=n_delete + SQL%ROWCOUNT;
    end if;
    commit;
    end loop;
    commit;
    DBMS_OUTPUT.PUT_LINE('Finished!');
    DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');
    end;