首页 文章

提高大数据集的SSIS包插入/删除速度(或者这没关系?)

提问于
浏览
3

我是SSIS的新手,我们有一个客户谁有相当大的数据集来处理 .

一个表有超过1.9亿行 . 他们每个月都会用CSV文件中的数据替换这些数据(大小约为40GB) . 这是作为SSIS包中的一个步骤完成的 .

现在,他们只想在特定日期(CSV文件中的最小日期)之后替换数据,因此不是从1997年开始一直发送数据,而是仅从2010年开始发送数据 . 我们接近这个的方式是:

  • 截断"temp_table"(SQL语句任务)

  • 从"data.csv"读取所有数据(平面文件源)

  • 多播

  • 将所有数据插入"temp_table"(OLE DB目标)

  • 这是每批75k行批量完成的

  • 将变量"minDate"设置为"data.csv"中的最小日期值(脚本组件)

  • 删除"destination_table"中日期值大于"minDate"的所有行(SQL语句任务)

  • 这是每批100k行批量完成的

  • 将"temp_table"中的所有行插入"destination_table"(OLE DB源 - > OLE DB目标)

  • 这是每批75k行批量完成的

使用这种方法,我们以平均6k行/秒的速率将数据插入“temp_table” .

“destination_table”中的删除阶段删除~40k行/秒,第二个插入阶段(从“temp_table”到“destination_table”)以~80k行/秒的速度运行 .

Is this speed average for this type of job? Is it too slow? What would you do to improve it?

TL;DR

我们使用SSIS以每分钟约4-5百万行的速率将数据插入到MSSQL数据库表中,并以每分钟约250万行的速率删除数据 . 那可以接受吗?

1 回答

  • 1

    行/秒平均值取决于每种情况 . 要了解它是否足够,我们必须知道您的最终表是如何配置的,这是数据库服务器的硬件配置...

    为了提高性能,我们始终首先看到I / O.如果我们可以写一些东西或做一些阅读......

    在写入中,我们可以执行以下操作:使用名为“Balanced Data Distributor”的SSIS组件,它使用处理器的功能来并行写入 . 使表在多个磁盘中分区以同时写入数据 .

    在读取中,您可以将文件分区为多个文件以同时读取 .

    我不知道我是否帮助过你......但这就是我的想法 .

相关问题