请教如何提高oracle实体视图的刷新效率,谢谢!

基表中数据大概100万,完成第一次全更新后,再插入100万数据,进行FAST更新,手工执行第一个视图及最后一个视图更新缓慢。
使用JOB并发刷新,则全部都慢。。。
以下3次测试均为新增100万数据,使用快速刷新('f'):

1.顺序刷新: 在一个命令窗口里按顺序运行
  现象: 第一个和最后一个刷新的视图都是数据量较少的视图,但刷新时间较其它视图要长很多

dbms_mview.refresh('v_1','f');              216     seconds
dbms_mview.refresh('v_2','f');              10      seconds
dbms_mview.refresh('v_3','f');              62      seconds
dbms_mview.refresh('v_4','f');              22      seconds
dbms_mview.refresh('v_5','f');              6       seconds
dbms_mview.refresh('v_6','f');              43      seconds
dbms_mview.refresh('v_7','f');              9       seconds
dbms_mview.refresh('v_8','f');              419     seconds

-----------------------------------------------------------------------------------
2.并发刷新:使用JOB任务,让以下视图在同一时间开始刷新
  现象: 所有视图刷新时间与测试1相比都要长很多,特别是最后一个结束刷新的视图 v_6
  
dbms_mview.refresh('v_1','f');              240     seconds
dbms_mview.refresh('v_2','f');              265     seconds
dbms_mview.refresh('v_3','f');              191     seconds
dbms_mview.refresh('v_4','f');              272     seconds
dbms_mview.refresh('v_5','f');              191     seconds
dbms_mview.refresh('v_6','f');              696     seconds
dbms_mview.refresh('v_7','f');              191     seconds
dbms_mview.refresh('v_8','f');              197     seconds
我也来说两句 查看全部回复

最新回复

  • yzsind (2008-8-30 13:54:58)

    物化视图并行刷新一般不能提高性能,
    如果增量数据比较多我一般是采用全表刷新。
  • qiutao_617 (2008-9-14 20:54:31)

    似乎使用 APPEND 提示符及LOAD数据可以不用更新物化视图日志,大大加快物化视图的刷新速率.
  • qiutao_617 (2008-9-14 21:58:42)

    视图的刷新效率有所好转,但加载平面文件时,表上索引大大的影响了数据LOAD速度,请教下可以使用什么方法提高?
    PS:1。 索引必须要建
        2. 不使用交换区的形式,先入无索引小表,再挂上有索引大表。
        3. 分区表RANGE,HASH都试过,全部使用的LOCAL,是否有选项可以将索引体积减少的,为什么分区索引到后来也慢的让人伤心啊?