SSIS 包中的“每批行”和“最大插入提交大小”是否有任何相关性?

2023-11-22

我有一个 SSIS 包,它将包含 1000 万条记录的 2.5 GB 数据导出到 Sql Server 数据库,该数据库有 10 个分区,包括主文件组。

更改默认值之前最大插入提交大小即“2147483647”和每批次行数.使用快速加载选项完成转换需要 7 分钟。

但在用一些公式改变了一些像样的值后,执行只用了 2 分钟就完成了。

FYI- 默认最大缓冲区行 & 默认最大缓冲区大小两种情况下都是默认值分别为 10000 和 10 MB。

计算最大插入提交大小 & 每批次行数使用以下计算。

1) 计算出的正在传输的源记录的长度。大约有 1038 字节。

CREATE TABLE [dbo].[Game_DATA2](
    [ID] [int] IDENTITY(1,1) NOT NULL, -- AUTO CALCULATED
    [Number] [varchar](255) NOT NULL, -- 255 bytes
    [AccountTypeId] [int] NOT NULL, -- 4 bytes
    [Amount] [float] NOT NULL,-- 4 bytes
    [CashAccountNumber] [varchar](255) NULL, -- 255 bytes
    [StartDate] [datetime] NULL,-- 8 bytes
    [Status] [varchar](255) NOT NULL,-- 255 bytes
    [ClientCardNumber] [varchar](255) NULL -- 255 bytes
)

2) 每批的行数 = packate_size/每条记录的字节数 = 32767/1038 = 32 约

3) 最大插入提交大小 = 数据包大小 * 事务数 = 32767*100=3276700 (数据包大小和交易数量是可变的,可以根据要求进行更改)

问题 :

  • 每批的行数和最大插入提交大小是否有任何相关性?由于档案中没有提及任何信息article用于调整 DFT(数据流任务)执行。

  • 这些配置是否与 DefaultBuffermaxzie 和
    DefaultBuffermaxrows?如果是的话怎么办?


这些参数仅指具有快速加载模式的 DFT OLE DB 目标。快速加载中的 OLE DB 目标问题insert bulk命令。这两个参数通过以下方式控制它:

  • 最大插入提交大小- 控制在单个批次中插入的数据量。因此,如果您将 MICS 设置为 5000 并且有 9000 行,并且在前 5000 个结果中遇到错误,则整批 5000 个结果将被回滚。 MISC 相当于 BULK INSERT transact-sql 命令中的 BATCHSIZE 参数。
  • 每批次行数- 只是对查询优化器的提示。该值应设置为实际预期的行数。 RPB 相当于 BULK INSERT transact-sql 命令的 ROWS_PER_BATCH 参数。
    指定 MICS 的值会产生一些影响。每个批次都会复制到事务日志,这将导致其快速增长,但提供了在每个批次之后备份该事务日志的能力。此外,如果目标表上有索引,那么大批量会对内存产生负面影响,并且如果不使用表锁定,则可能会发生更多阻塞。

批量插入 (Transact-SQL) - MS 文章在此命令上。

默认缓冲区最大大小 and 默认缓冲区最大行数控制 DFT 本身内部的 RAM 缓冲区管理,并且不干扰上述选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSIS 包中的“每批行”和“最大插入提交大小”是否有任何相关性? 的相关文章

  • 如何对 SQL Server Express 进行实时更改

    我一直在使用 VS studio 开发一个 ASP NET Web 应用程序 我正在使用 SQL Server Express 在开发过程中 我一直在我的服务器上测试我的网络应用程序 每次我需要更新数据库时 我都会简单地删除旧数据库 位于我
  • 如何在测试期间强制锁定升级(以消除死锁问题)?

    在此发布问题和一个答案 也许有人有更好的答案 编写触发死锁的代码是可能的即使对于单个用户如果开发人员不小心打开了与数据库的第二个连接 而不是重用现有的连接 可能已经有一个打开的事务 某些 O RM 和 LINQ 框架很容易犯这个错误 以下是
  • 在 Sql Server 中启用 DTD 支持

    我有各种 xml 文档需要存储在数据库列中 这些文档包含对 DTD 的引用 并且 SQL Server 不会导入 xml 因为它存在安全风险 如何在数据库上启用 DTD 支持 以便它可以让我插入 xml 内容 你必须CONVERT首先 MS
  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • 在 Dockerfile 中切换到 root 用户

    我运行了这个命令 docker pull mcr microsoft com mssql server 2019 latest 然后我创建了一个 dockerfile 来使用此容器映像作为另一个容器的基础映像 escape FROM mcr
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • SSIS Excel 文件问题 - 创建文件失败

    我有 SSIS 包 可以抓取 excel 文件并将其加载到 sql 表中 运行它时出现以下错误 我尝试将 64 位运行设置为 false 那不起作用 我还安装了 64 位访问驱动程序引擎 这也没有帮助 数据流任务 Excel 源 2 出错
  • 如何检查Azure SQL数据库中是否已存在数据库用户

    我的新客户计划使用 Azure 托管 SQL 数据库服务 我正在使用 dacpac 来部署数据库 在 dacpac 中 我有一个部署后脚本 用于创建 sql 用户 如下所示 IF NOT EXISTS SELECT name FROM sy
  • NOLOCK 和 UNCOMMITTED 之间有什么区别

    我使用 SQL Server 2012 我写了两个查询 但是它们之间有什么不同NOLOCK and UnCommitted SELECT lastname firstname FROM HR Employees with READUNCOM
  • SQL 查询中的可选参数在检查 NULL 时非常慢

    我有许多已连接的表 最大行数约为 400 万条记录 我们正在存储过程中搜索该表 并且有一个默认值为 NULL 的可选参数 下面是我们正在运行的编辑示例 连接涉及更多表 但只有 1 个字段具有 WHERE 子句 DECLARE OwnerId
  • SQL最近的命令?微软SQL

    我只是编写一个查询来查看我的客户数据库并列出他们下了多少订单等 我正在努力添加到此查询中的是只显示该电子邮件的最新 OrderID 有任何想法吗 这是我的查询 select top 1000 BuyerEMail COUNT HowMany
  • SQL Server 删除触发器 - 引用已删除行或标记为删除的行的行句柄

    我在表上有一个删除触发器 用于从另一个数据库的表中删除条目 CREATE TRIGGER dbo Trigger Contracts Delete ON dbo Contracts AFTER DELETE NOT FOR REPLICAT
  • SQL Server 2017 快速安装失败

    我尝试在 Windows 10 上安装 SQL Server 2017 Express 但失败 这是失败后向我显示的详细信息 Action required Use the following information to resolve
  • 需要在SQL Server 2012中自动递增字符串

    考虑 SQL Server 2012 中的表 789 0000000 上面的数字在 SQL Server 2012 中将被视为字符串 但每当我更新记录时 我都需要增加到 1 例如 当我更新记录 1 时 它应该增加到789 0000001 当
  • 如何在 BigQuery/SQL 中将行转置为包含大量数据的列?

    我在将 BigQuery 中的大量数据表 15 亿行 从行转置为列时遇到问题 我可以弄清楚如何在硬编码时使用少量数据来完成此操作 但是对于如此大量的数据 该表的快照如下所示 CustomerID Feature Value 1 A123 3
  • 子查询在多项选择时返回超过 1 个值的 SQL 错误

    我想要一个临时表 它将使用 select 语句插入值 但每次我运行查询时 总是出现错误 子查询返回超过 1 个值 当查询跟随 gt 或子查询用作表达式时 不允许这样做 该语句已终止 0 行受影响 这很奇怪 因为代码中似乎没有错误 但如果有的
  • 我可以采取哪些措施来提高 SQL Server 中纯用户定义函数的性能?

    我制作了一个简单但计算相对复杂的 UDF 用于查询很少更改的表 在典型用法中 该函数会在一个非常小的参数域上从 WHERE 子句中多次调用 如何才能更快地使用 UDF 我的想法是应该有某种方式告诉 SQL Server 我的函数使用相同的参
  • 使用实用程序批量复制将所有表从 SQL Server 数据库导出到文件中

    我想将数据库中的所有表 bcp 到文件中 SELECT EXEC xp cmdshell bcp bcp QUOTENAME DB NAME database name QUOTENAME SCHEMA NAME SCHEMA ID sch
  • 连接到 SQL Server 数据库 C#-WinForms

    我正在制作一个桌面应用程序 我希望用户必须登录才能充分使用该程序 我已经在 www winhost com 我的网站的托管位置 上创建了一个数据库 但现在我不知道该怎么办 我一直在使用 google 和 msdn 我想知道如何以编程方式将新
  • SQL Server中根据条件进行计数

    有谁知道如何在 SQL Server 中根据条件进行计数 Example 如何对表中名称为 system 的记录以及 CaseID 记录总数进行列计数 顾客表 UserID CaseID Name 1 100 alan 1 101 alan

随机推荐

  • Xcode 命令行工具 - 如何在终端中运行?

    当您在 Xcode 中创建命令行工具项目时 您会在 main m 中看到以下内容 import
  • 我们如何在 Fabric 1.0 中从另一个链码调用一个链码?如果有人有例子请分享

    我想从 Fabric 1 0 中的另一个链代码调用一个链代码 所以我有一些问题 1 我们可以在单个对等点上安装两个链码吗 2 如果我们在不同的对等点上安装两个链代码 我们如何调用另一个链代码 3 如果有人有示例 请分享 这应该很容易实现 下
  • Python 中的 sqlite3

    如何检查数据库文件是否已经存在 而且 如果它存在 我如何检查它是否已经有一个特定的表 要查看数据库是否存在 您可以sqlite3 connect到您认为包含数据库的文件 并尝试对其运行查询 如果是not数据库 你会得到这个错误 gt gt
  • 对并发软件进行单元测试 - 你做什么?

    随着软件变得越来越并发 您如何处理测试类型的核心行为与您的单元测试 不是并行行为 只是核心行为 在过去的美好时光 你有一个类型 你可以调用它 然后检查它返回的内容和 或它调用的其他内容 如今 您调用一个方法 实际工作就会安排在下一个可用线程
  • 将 CQRS 命令直接传递给域对象

    TLDR 我正在为我的一个较大的项目实现 CQRS DDD 解决方案 并且我想知道是否有任何真正的原因导致我的命令处理程序无法以较小的方式将命令对象直接分派到我的聚合在少数情况下 命令对象的数据丰富吗 我找不到任何具体原因说明为什么这是一种
  • 未初始化的对象与初始化为 NULL 的对象

    我在 Java 工作 我通常这样设置一些对象 public class Foo private SomeObject someName do stuff public void someMethod if this someName nul
  • 如何使用 Kubernetes Go 库创建一个简单的客户端应用程序?

    我正在努力使用 Kubernetes Go 库 文档 至少我找到的那些 与库本身相比似乎已经过时了 由于导入问题 所提供的示例无法构建 我只是想做一些简单的事情 按名称获取服务对象并打印一些属性 如nodePort 我只需要一个简单的库使用
  • 更新数据库源后,如何让 Visual Studio 2010 刷新我的数据集?

    我已将新列添加到现有列MS Access 2010我已连接的数据库Visual Studio 2010 更新数据库后 数据源窗口和DataSet没有新列 我查看了诸如此类的答案 Visual Studio 数据集设计器刷新表 但是使用 SE
  • 如何构建发布的 vscode 版本

    这个问题是针对开源 vscode 符合 MIT 许可证 而不是 VS Code 我昨天花了很多时间试图找出如何构建某种发行版本 我的意思是 就像在 Visual Studio 中一样 我们有 调试 和 发布 构建 我是C 开发人员 vsco
  • 我想在android的日历中选择多个日期

    我想在日历中选择多个日期 多个选择工作正常 但在 toast 中仅显示单个日期 第一个日期 如果我选 择 4 天 1 8 14 到 4 8 14 所有日期都应显示在 toast 中 这是我的代码 public class SampleTim
  • 使用 UIWebview 的 IP 摄像机流适用于 IOS 5,但不适用于 IOS 6

    您好 我在我的网站上流式传输 ip 摄像机 并将我的网站嵌入到 UIWebview 上 在 IOS 5 上工作正常 但当我在 IOS 6 上打开我的应用程序时 仅显示图像而不是视频 在我的网站上我使用请有人帮助我 还有其他方法吗 如果你想在
  • 如何从 iOS 应用程序打开 VPN? (私有 API 可以)

    不幸的是 当 iOS 设备进入 睡眠模式 时 即使已配置的 VPN 也会被关闭 一位客户想要为他的 iPad 安装应用程序has使用VPN是为了安全 所以任何事情都必须通过VPN来完成 该应用程序必须进行大量同步 但 iOS 设备可能会自行
  • 为静态方法设置 AspectJ 建议

    我用原始的切入点和建议方法编写了简单的方面 Aspect public class MyAspect Pointcut execution static com mtag util SomeUtil someMethod public vo
  • 如何在 Perl、DBI 中显示查询时间?

    我使用 Perl 和 DBI 来管理我的 MySQL 表 查询等 如何显示查询的运行时间 如果我在控制台中执行 SELECT 操作 结果将如下所示 id name 1 Jack 2 Joe 3 Mary 3 rows in set 0 17
  • 设置依赖注入的过滤器属性以接受构造函数中的参数

    我正在遵循 ninject 过滤器属性设置page 对于他们来说 他们有 WithConstructorArgumentFromControllerAttribute
  • Sails.js + socket.io:从服务器向客户端发送消息

    我正在尝试使用 sails js 设置一个系统 让服务器向一组客户端广播消息 基本上 A 组中的客户端向服务器发送 AJAX 请求 服务器处理请求并通过套接字向 B 组的所有客户端发送消息 B组的客户端通过套接字接收消息并显示一些内容 根据
  • 在vbscript中调用C# dll

    我正在尝试从 QTP 调用 C dll 使用 vbscript 我尝试了很多事情但没有成功 视觉工作室2010 创建C 类库 st dll code using System using System Collections Generic
  • Maven Antrun 和依赖项

    请参阅下面的编辑 我不能只使用类路径的原因是因为我需要管理一些非java库 并且我正在编译一个非java项目 我正在尝试在 antrun 调用中使用 Maven 依赖项 遵循 Maven 站点上的文档 http maven apache o
  • 更改html中悬停时的选择列表选项背景颜色[重复]

    这个问题在这里已经有答案了 是否可以更改悬停时选择列表选项的默认背景颜色 HTML
  • SSIS 包中的“每批行”和“最大插入提交大小”是否有任何相关性?

    我有一个 SSIS 包 它将包含 1000 万条记录的 2 5 GB 数据导出到 Sql Server 数据库 该数据库有 10 个分区 包括主文件组 更改默认值之前最大插入提交大小即 2147483647 和每批次行数 使用快速加载选项完