如何划分table进行并行加载

How to divide table for parallel loading

基于聚集索引列或基于分区(同一列)的划分选项(出于性能目的)哪个更好?

我必须拆分 table 才能使用 SSIS(SQL Server 2008R2 企业版)将其并行加载到 Oracle 11。

第一个选项根据 where 条件创建聚集索引查找,第二个选项在分区上创建聚集索引扫描。

如果源数据库中的分区在不同的磁盘上,那么你可以利用它来进行并行读取。在你的 SSIS 包中,你会有多个数据源,每个数据源都从不同的分区读取。然后您可以在加载之前将流合并在一起(Union All 转换)。

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

如果您是运行ning SQL Server Enterprise Edition,那么查询优化器可能会因为数据量大而决定制定并行执行计划。您应该检查图形执行计划以了解它在做什么。

您需要进行测试以确定瓶颈在哪里。然后优化以消除每个瓶颈。一旦你清除了一个瓶颈,整个系统的另一部分就会成为限制因素。

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

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

Microsoft Virtual Academy 上有一门课程:"Designing BI Solutions with Microsoft SQL Server",第五个模块 "Design an ETL Solution" 讨论了使用 SSIS 加载的不同策略。

还有一点很重要:您需要 运行 服务器上的 SSIS 包以获得最佳性能。如果您 运行 Visual Studio 中的包(SQL Server Data Tools),性能将大大降低。