2016-04-29 66 views
1

根据聚簇索引列或分区(同一列),哪个划分选项更好(用于性能目的)?如何为并行加载划分表

我要拆表加载它使用SSIS(SQL服务器2008 R2企业版)平行于甲骨文11

第一选项创建群集索引寻求基于那里的条件和第二分区上创建聚集索引扫描。

回答

1

如果源数据库中的分区位于不同的磁盘上,那么您可以利用此功能来执行并行读取。在您的SSIS包中,您将拥有多个数据源,每个数据源都从不同的分区读取。然后你可以在加载之前合并这些流(Union All转换)。

但是您的目标系统(Oracle?)可能成为这种情况下的瓶颈,或者实际上运行SSIS的计算机或网络。通常最好在具有足够处理器能力和RAM的单独计算机上运行SSIS,因此它不会占用SQL Server的资源。

如果您正在运行SQL Server企业版,那么查询优化器可能会决定制定并行执行计划,因为数据量很大。你应该检查图形执行计划,看看它在做什么。

您需要测试以确定瓶颈的位置。然后优化以消除每个瓶颈。一旦你清除了一个瓶颈,整个系统的另一部分将成为限制因素。

你可以做一些简单的时间测试这样。第一单流。

enter image description here

然后并行流。这将允许您衡量您的SQL Server计算机的性能以及使用并行流是否有任何好处。

enter image description here

有一个关于微软虚拟学院的课程:“使用Microsoft SQL Server设计BI解决方案”和第五模块“设计一个ETL解决方案”有关使用SSIS加载不同的策略会谈。

另外一个重要的观点:您需要在服务器上运行SSIS包以获得最佳性能。如果您在Visual Studio(SQL Server数据工具)中运行该包,性能将会大大降低。

+0

如果我只是创建了许多(2或3)具有不同条件的数据流块(仅基于一列进行划分)并且并行运行它们呢?这将比一个数据流块(整个表)更快? – PNPTestovir

+1

我已更新我的答案,以显示如何测试此功能。只有通过测试你才能找出答案。 – RichardCL