Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 临时表与物理表上的数据流任务_Performance_Ssis_Dataflowtask_Temp Tables - Fatal编程技术网

Performance 临时表与物理表上的数据流任务

Performance 临时表与物理表上的数据流任务,performance,ssis,dataflowtask,temp-tables,Performance,Ssis,Dataflowtask,Temp Tables,下面是一个场景 我有一个用于csv文件的暂存表,它是我的源文件。我正在将它加载到物理暂存表中。我将在包的后面部分对此暂存表数据进行转换。我需要新的数据(因为它来自源文件) 我应该在临时表中进行转换,还是应该再次使用dataflow任务重新加载临时表 数据不是更多[微笑]只是不到一百万而已这有一个标准模式 提取数据(从CSV到临时区域) 转换数据(清理数据、转换数据、格式化数据、将其他内容加入数据、使其与新系统兼容) 加载数据(更新/插入/删除活动表) 这就是ETL的首字母缩略词的来源- 您拥有的

下面是一个场景

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

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


数据不是更多[微笑]只是不到一百万而已

这有一个标准模式

  • 提取数据(从CSV到临时区域)
  • 转换数据(清理数据、转换数据、格式化数据、将其他内容加入数据、使其与新系统兼容)
  • 加载数据(更新/插入/删除活动表)
  • 这就是ETL的首字母缩略词的来源-

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

    您最关心的两个问题(通常是相互竞争的)是简单性和速度。简单性非常好,因为它涉及的代码更少,所需的调试更少,并且使您更加确信数据是干净的。然而,有时你不得不为了速度而牺牲简单性

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


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

    thnks我在包中使用的是临时表,因为我的包中还有许多其他内容(完整的业务流程,而不仅仅是ETL)。所以,如果我能找到更好的选择,我认为最好避免由于临时表而消耗服务器空间(RAM)。所以问题来了。正如你所说,可维护性确实会变得更好