51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> oracle >> 文章正文

大数据量的dml,怎么尽量降低undo表空间的使用

更新时间:2013-11-24:  来源:51代码网

大数据量的dml,怎么尽量降低undo表空间的使用

最近工作时候碰到一个问题,有一张5000W的临时表,每天需要存量更新正式表,但是由于正式表对失效性要求比较高,考虑到 5000W插入的的速度,不能truncate 正式表,而只能选择delete 然后在insert,由于表的每一行记录约 500个字节,我当心undo表空间不足,这张表也么有找到合适的分区字段以给表分区来进行逐个分区的数据维护,而交换分区维护索引的成本又太高,请问各位大师对于这个5000W表临时表导数据到正式表,有什么好的处理方法吗

UNDO和Redo应该放在最快的磁盘系统上,并且应该与其它数据存储处于不同的磁盘系统,最好它们之间也处于不同的磁盘系统,避免相互影响。可以通过为UNDO表空间创建属于不同磁盘系统的数据文件来分担UNDO表空间承受的IO压力。在线Redo日志文件可以放在经过条带化的存储系统中,提高IO性能。

DECLARE    v_count NUMBER;   BEGIN    FOR cur IN (SELECT * FROM t_ref) LOOP       INSERT INTO t VALUES cur;       v_count := v_count + 1;       IF v_count >= 100 THEN        COMMIT;       END IF;     END LOOP;     COMMIT;   END;   /

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |