改进算法+改进策略 == 改进性能三位数

改进算法

原来采用A表与B表的差集进行新增同步, 考虑到有些表的新增时有个字段会在原来的基础上递增, 这样只需比较A表和B表那个字段的最大值, 就可以进行新增同步, 性能改进明显.

 

改进策略

数据量大的表都是有历史数据在里面, 就可以建立两个视图, 一个对应当日数据, 一个对于历史数据, 

这些数据有个特点, 历史数据不变, 当日数据不断变化.

 

为此在变更同步是, 只需要考虑当日数据, 不需要考虑历史数据, 这样大量减少比较的时间, 性能改进相当明显.

 

改进性能三位数

原来一张表在变更更新时,都> 600秒, 现在全部变更更新时, 只要4.281秒

 

newniu ETL 目前功能

零, 代码自动生成

1, 生成视图创建代码

2, ETL的SQL代码

 

一,处理功能

 

0, ETL.删除(ETL_IS_FOR_DELETE)

  删除目的表的最新数据, 不包括归档的历史数据

1, ETL.初始(ETL_IS_BY_INIT)

  初始化, 全部插入

2, ETL.同步.新增.增量(ETL_IS_BY_ADD_WITH_INCREASE)

  如果源表有新增的,并且新增的行有时间可以标识出来,如ID,时间戳, 然后按此字段进行把源表新增的同步到目的表

3, ETL.同步.新增.差集(ETL_IS_BY_ADD_WITH_DIFF)

  如果源表有新增的,但新增的行不能用时间标识出来, 就只能进行两笔对比, 找出差集, 然后新增

4, ETL.同步.变更.更新(ETL_IS_BY_CHANGE_FOR_UPDATE)

  如果源表有变更的, 采用每个字段对比的方式判断, 如果有一个字段变化,就整行更新

5, ETL.同步.变更.删除(ETL_IS_BY_CHANGE_FOR_DELETE)

  如果源表有变更的, 采用每个字段对比的方式判断, 如果有一个字段变化,就整行删除, 后面采用ETL.同步.新增.差集 插入此记录

6, ETL.同步.变更.归档(ETL_IS_BY_CHANGE_FOR_ARCHIVE)

  如果源表有变更的, 采用每个字段对比的方式判断, 如果有一个字段变化,就将此行归档, 即是将此ID记录的所有行年龄+1, 后面采用ETL.同步.新增.差集 插入此记录

 

二, 日志记录
记录ETL的内容



还需改进

异常处理, 虽然经过多次测试已经排除异常, 但是遇到特殊情况还是不好应付, 遇到最多的麻烦就是命名长度限制
字段名, 视图名, 表名等等.




 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值