sql-server - 通过SSIS分区导入海量数据

标签 sql-server ssis parallel-processing etl

我在 OLTP 数据库中有一个巨大的表,每天大约有 2000 万个新行。 我想从该表导入数据并尽可能接近实时。 我想在表上创建一些逻辑分区,并使用 SSIS 包中的多个 DFT 导入它们。我认为这些 DFT 应该并行运行,以便我可以使用尽可能多的资源。 我尝试在网上查找文章或类似的案例研究,但找不到。 也许我错过了,最糟糕的是我走错了方向,并且没有人使用此解决方案在这种情况下导入数据。 你会怎么办?如果您认为我的解决方案不错,我应该如何创建分区?在 key 上?日期?

最佳答案

我认为您应该考虑在 SSIS 和 DB Engine 之间共享处理。因此,仅使用 SSIS 进行 ETL 过程,在 SQL Server 上创建多个表,并且仅重定向数据包中的数据。对于其余部分,即组合所有表中的数据并创建分区,您可以利用 SQL Server 的强大功能。在某些情况下,SSIS确实是资源密集型的,但通过数据库引擎用更少的资源也可以实现相同的目标(如果可能的话)。

有时它还取决于您使用的源/目标组件。 This这篇文章非常好,作者通过在不同类型的源和目的地上设置一些基准来进行一些测试。

以下是一些资源,您可以快速查看以获取想法。

关于sql-server - 通过SSIS分区导入海量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502753/

相关文章:

c# - 如何使用 C# 在字符串中添加尾随零?

sql - 在 SELECT 语句中填写缺失值

sql-server - 当源有 0 行时不创建文件

sql - 如果左连接表中的行为空,则使用另一行

sql-server - 具有 0 到 nvarchar(max) 列的 SSIS 中的 MDX 查询输出给出奇怪的字符

python - 用于停止所有并行运行的程序的键盘快捷方式?

scala - 为什么 Scala Future 在映射到迭代器时顺序运行

haskell - Haskell 中的 Control.Parallel 编译问题

sql-server - SQL Server 是否可以在同一个事务的同一行上应用 s 锁和 x 锁?

sql-server - 按聚集索引顺序选择数据而不使用 ORDER BY