在服务端有实时采集数据的表,表的数据量非常大,我通过对实时表建立触发器将新增的数据同时插入到新表里,然后通过物化视图将新表的数据同步到服务端,通过服务端的数据库对数据进行处理,这样通过建立触发器的方式保存新数据到新表里再将新表数据同步到服务端,这样可行吗 

解决方案 »

  1.   


    我现在是将实时插入数据的采集端的表同步到本地服务器,是FAST方式,在同步到本地的物化视图上建立触发器当有新数据过来时将新数据插入到中间表中 ,这样同时有4、5张表会同时更新数据,同步更新的表的时间不一样有的时间5秒有的是1分中,有的是一天 新增的数据量就10W左右  我通过时间差来使触发器不在同一个时间点运行 这样可行吗  如果不写触发器的话 还有什么方式可以  求大神教教
      

  2.   

    可行是可行,就是性能方面不太好。建议:就建个job之类的作业,给个指定时间运行,主要用来统计实时表的数据新增量是否存在
    (这个你应该懂吧。SELECT COUNT(*) FROM 表 WHERE 时间   处理的更细些,就是做些自定义的判断等等,主要是知道表数据有没有新增,如果需要实时监控,就用循环) 如果数据存在,那么进入逻辑判断,开始数据同步,如何同步这个就不用多说了吧。这样就避免了触发器。例子:
    DECLARE
      p_Count NUMBER;
    BEGIN
      SELECT COUNT(*) INTO p_Count FROM 表 WHERE 时间;
      WHILE p_Count = 0 LOOP
        Dbms_Lock.Sleep(1200); ---10分钟之后再执行*\
        --这里随便加些判断
        SELECT COUNT(*) INTO p_Count FROM 表 WHERE 时间; --再次查看
      END LOOP;
      IF p_Count > 0 THEN
        --逻辑判断
      END IF;
    END;