我有一个 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
(数据包大小和交易数量是可变的,可以根据要求进行更改)
问题 :