获取mysql增量数据库_从数据库中增量抽取数据的几种方案

最近调查了一下从数据库中增量抽取数据的几种方案。下面是一个比较粗的结论。

方法1:基于时间戳

以某个时间字段为条件,检出新增数据。

适用条件:表中有时间字段,并且是事件型的数据,不需要反映数据的删除和更新。

对性能的影响:抽取时增加系统负载

方法2:触发器

数据更新时通过触发器拷贝数据。

适用条件:预先定义触发器

对性能的影响:对更新操作的性能有一定影响

方法3:从redo日志抽取

Oracle可以通过LogMiner从日志中分析出SQL语句,再还原。SQL Server也有类似解决方法。

适用条件:系统运行于归档模式下,并做好相关配置

对性能的影响:总体上对性能的比较小,但部署比较复杂

方法4:全表对比

对性能的影响:比较大,不适用数据量很大的情况

对方法1和方法4可采用以下对策减小性能影响:

1)按时间对数据分区

2)通过备份恢复,在线日志恢复等手段建立备机,在备机上抽取数据。

总结:

在性能影响可以接受的情况下,建议采用方法1或2,比较简单。否则采用方法3。

另外,也可以使用专用抽取工具,如SSIS,ODI等。

专用工具也是基于前几种方法实现的,比如ODI提供基于触发器和基于redo日志抽取方案。

但专用工具比起自己开发,能更快部署。


版权声明:本文为weixin_39907713原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。