首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少ETL过程对OLTP的影响

如何减少ETL过程对OLTP的影响
EN

Stack Overflow用户
提问于 2011-02-23 20:32:33
回答 2查看 1.6K关注 0票数 2

我是一个新的设计ETL过程。目前,我有两个数据库,一个是实时数据库,应用程序每天使用它进行事务处理。另一个是数据仓库。

我在实时数据库中有一个表,定期将新的数据插入到其中。目标是每天晚上ETL进程将活动数据库中的数据传输到数据仓库,然后删除活动数据库中的数据。

由于我缺乏知识,我得到的解决方案是实现一个叫做滚动表的东西。基本上,在活动数据库中,我有两个具有相同结构的表。我叫他们tblLive1和tblLive2。我还有一个名为tblLive的同义词。所有插入都是在同义词上完成的。同义词指的是其中一个表。

当我运行ETL进程时,我有一个存储过程,它将删除并创建一个指向tblLive2的新同义词。这允许ETL进程在不影响应用程序的情况下从tblLive1转换数据。假设ETL进程需要一个小时才能运行,我不希望ETL进程锁定表,从而阻止应用程序向其插入新数据。

这个解决方案理论上应该可行,但不是优雅的。

我相信这个问题是一个常见的问题,还有其他的解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-25 14:26:55

为了补充Bob的回答(上面),通常在DWH/BI应用程序中,所有必需的表基本上都被复制到DWH数据库上的“暂存”数据库或“暂存”模式中(取决于表的数量/大小等)。它们通常位于与OLTP系统不同的服务器上-对于任何大小的DWH实现来说都是如此)

要回答有关性能影响的问题,这取决于您的服务器规范/io配置。

是否每天24小时将数据插入OLTP系统?还是有停机时间?还是低交通时间?

使用数据库压缩可能是值得的,因为IO将成为您最大的敌人,这将极大地帮助您。

票数 2
EN

Stack Overflow用户

发布于 2011-02-24 17:42:44

将表读入暂存区域并处理暂存表。你通常也想在生产系统上花费尽可能少的时间。尤其是在使用的时候。

您还可能希望查看如何使用触发器加载的表。如果您使用SQL 2008,则更改数据捕获。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5096736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档