gpt4 book ai didi

sql-server - 提高大型数据集的 SSIS 包插入/删除速度(或者这样可以吗?)

转载 作者:行者123 更新时间:2023-12-04 18:00:34 28 4
gpt4 key购买 nike

我是 SSIS 的新手,我们有一个客户需要处理非常大的数据集。

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

现在他们只想在特定日期(CSV 文件中的最小日期)之后替换数据,因此他们不再发送 1997 年以来的数据,而是只发送 2010 年及以后的数据。我们处理这个问题的方式是:

  1. 截断“temp_table”(SQL 语句任务)
  2. 从“data.csv”读取所有数据(平面文件源)
    • 组播
      1. 将所有数据插入“temp_table”(OLE DB 目标)
        • 这是分批完成的,每批 75k 行
      2. 将变量“minDate”设置为“data.csv”中的最小日期值(脚本组件)
  3. 删除“destination_table”中日期值大于“minDate”的所有行(SQL 语句任务)
    • 这是分批完成的,每批 10 万行
  4. 将所有行从“temp_table”插入到“destination_table”(OLE DB 源 -> OLE DB 目标)
    • 这是分批完成的,每批 75k 行

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

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

这是这类工作的平均速度吗?是不是太慢了?你会做些什么来改进它?

长话短说

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

最佳答案

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

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

在 write 中,我们可以做类似的事情:使用名为“平衡数据分发器”的 SSIS 组件,它使用处理器的能力进行并行写入。将您的表分区为多个磁盘以同时写入数据。

在读取中,您可以将文件分成多个文件以同时读取。

我不知道我是否帮助了你......但我就是这么认为的。

关于sql-server - 提高大型数据集的 SSIS 包插入/删除速度(或者这样可以吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com