中间表同步方案(全量,增量)

最近做一个大数据量统计分析系统,以前已经做了一个大的描述
http://www.cnblogs.com/edobnet/archive/2005/04/24/144521.html

http://edobnet.cnblogs.com/archive/2005/11/11/273947.html

为了提高性能,对于中间表,的同步,采用初台全量同步,每天,增量同步的方案。
我介绍一下我们增量方案吧!
要增量,增量日志表是必需的,增量日志表的设计。

KEY(原业务表关键字),CREATE_DATE(变更时间),FLAG(数据修改与删除标志),USE_FLAG(增量表是否被使用的记录,(一个存储过滤使用一位))

每天增量同步时,做如下操作
-- 如果增量日志表,所有标志位都已经使用,把增量日志表移到增量日志备份表里
INSERT  LOG_MANUAL_INC_BAK 
SELECT   *
FROM  LOG_MANUAL_INC 
WHERE   LEFT (USING_FLAG, 4 ) = ' 1111 '

DELETE  LOG_MANUAL_INC  WHERE   LEFT (USING_FLAG, 4 ) = ' 1111 '

-- 建临时中间表,方便同步(字段内容与真实表一样)
CREATE   TABLE  #TG_ENTRY (
    
[ TE_ENTRY_ID ]   [ char ]  ( 18 )    NOT   NULL  
..
    ) 
GO

-- -------------------将未整合记录从中间表中删除
--
SUBSTRING(USING_FLAG,2,1)为这次整合使用的标记位
  DELETE   FROM  TG_ENTRY  WHERE  TG_ENTRY_ID  IN  ( SELECT  TG_ENTRY_ID  FROM  LOG_MANUAL_INC  WHERE   SUBSTRING (USING_FLAG, 2 , 1 ) <> 1 )

。。下面就可以做同步数据了,
。。。同步数据是从原业务表里取,不过,数据范围限定在,增量表里的没有做增量操作(并且操作类型为新加与修改的)的数据

也就同步多加一个WHERE条件,
WHERE LOG_MANUAL_INC.ARJ_MARK='M' and SUBSTRING(USING_FLAG,2,1)<>1
取好的数据是放在新建的临时中间表,#TG_ENTRY

做好了同步操作,不要忘了更新增量表的标志。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值