【问题标题】:temp table vs data flow task on physical table临时表与物理表上的数据流任务
【发布时间】:2012-08-31 18:05:40
【问题描述】:

这里是场景

我有一个用于 csv 文件的临时表,这是我的源文件我正在将它加载到物理临时表中我将在包的后面部分对此临时表数据进行转换我需要新数据(因为它来自源)

我应该在临时表中进行转换还是应该再次使用数据流任务来重新加载临时表

数据不止 [微笑] 只是不到一百万

【问题讨论】:

    标签: performance ssis dataflowtask temp-tables


    【解决方案1】:

    对此有一个标准模式。

    1. 提取数据(从 CSV 到您的临时区域)
    2. 转换数据(清理、转换、格式化、加入其他内容,使其与您的新系统兼容)
    3. 加载数据(更新/插入/删除到您的活动表)

    这就是 ETL 的首字母缩写词的来源 - http://en.wikipedia.org/wiki/Extract,_transform,_load

    您拥有的主要优势是,在第 1 点您只有 1 个线程/用户加载数据,因此可以快速提取数据,然后在第 2 阶段您正在操作数据而不会导致其他表上的任何锁定。最后,一旦数据准备就绪,您就可以以最快的方式将其加载到您的实时表中。

    您最关心的两个(通常是相互竞争的)问题是简单性和速度。简单性很棒,因为它涉及的代码更少,需要的调试更少,并且让您更加确信您的数据是干净的。但是,有时您必须牺牲简单性来换取速度。

    在您的情况下,由于您只加载了几百万行,我建议您每次都重新加载临时表,以便每次加载都使用相同的 ETL 过程。这使您的 ETL 机制易于编码、维护和解释。

    仅供参考 - 如果您使用的是 SQL Server,请查看 SSIS。

    【讨论】:

    • thnks 我在包中使用临时表,因为我的包中有多个其他内容(完整的业务流程,而不仅仅是 ETL)。因此,如果我能找到更好的选择,我想最好避免由于临时表而消耗服务器空间(RAM)。所以这个问题。正如你所说,可维护性确实变得更好
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多