一、监测变化
1、审计列:利用源系统中审计列的有效方法。例:就是从创建日期和最后修改日期列中选择最后日期和时间 数据
2、利用数据库日志的获取和提取
3、初始和增量加载 :
创建两个表: previous_load 和 current_load。
初始化处理批量加载到 current_load 表。因为初始加载过程中变化检测是无关的,因此数据连续被转换并加载到最终目标事实表中。当这个处理完成后,就删除这个 previous_load 表,并把 current_load 表重命名为 previous_load 表,然后创建一个空的 current_load 表。由于这些任务都没有涉及数据库日志,因此速度会非常快!
下一次加载过程运行时, 这个 current_load 表就填充了数据 。
二、抽取技巧
强制列索引。和 DBA 一起工作来确保源系统中所有在 WHERE 语句中的列都有索引,否则将可能引起对整个生产数据库的全表扫描。
获取需要的数据。优化的查询会正确返回需要的数据。不应该获取整个表,然后在 ETL 工具中再过滤掉不想要的数据
谨慎使用 DISTINCT。 DISTINCT 语句非常慢。
谨慎使用 SET 操作符。 UNION, MINUS 和 INTERSECT 都是 SET 操作符。
根据需要使用 HINT。大多数数据库支持 HINT 关键字。
避免 NOT。
避免在 where 子句中使用函数。