SQL 导出到平面文件比作业中 SSIS 中的相同导出运行得更快

Posted

技术标签:

【中文标题】SQL 导出到平面文件比作业中 SSIS 中的相同导出运行得更快【英文标题】:SQL export to flat file is running faster than the same export in SSIS in a job 【发布时间】:2020-08-07 15:21:51 【问题描述】:

我有一个运行 SSIS 包的工作,它将整个表 (15 G) (select * from table) 导出到一个平面文件中。

完成导出需要 3 小时 - 当我使用导出向导执行相同操作时,只需不到 10 分钟。所以我将导出向导保存为 SSIS 包并通过作业运行它

但它又非常慢。我正在使用 SQL 19,非常感谢任何帮助。

【问题讨论】:

两个包都写入完全相同的位置吗?当您运行导入/导出向导时,您是远程访问服务器还是使用桌面上的 SSMS? 在服务器上,从命令行执行 bcp 需要多长时间? bcp Database.Schema.Table out SomeFile.txt -c -T -S MyServer\Instance 两者都写入同一个位置 - 在服务器上运行而不是远程 bcp 和向导一样快 @KeithL 是的bcp 通过-t 选项支持不同的字段终止符。当您的用例与 BCP 提供的内容保持一致时,它在将数据输入和输出数据库方面非常出色和快速。 【参考方案1】:

尝试将defaultBufferMaxRows 增加到一个非常大的数字

DefaultBufferSize:默认为 10MB,最大可能为 2^31-1 个字节

DefaultBufferMaxRows:默认为 10000

您可以设置AutoAdjustBufferSize,以便DefaultBufferSize根据@​​987654327@自动计算

在此处查看其他性能故障排除想法

https://docs.microsoft.com/en-us/sql/integration-services/data-flow/data-flow-performance-features?view=sql-server-ver15

【讨论】:

【参考方案2】:

看起来当您将包更改为以 32 位而不是 64 位运行时,进程会按照我们预期的方式运行

谢谢大家的帮助

【讨论】:

以上是关于SQL 导出到平面文件比作业中 SSIS 中的相同导出运行得更快的主要内容,如果未能解决你的问题,请参考以下文章

使用 SSIS 脚本任务将数据从多个 SQL 表导出到不同的平面文件

问题将数值数据导出到平面文件,SSIS

SSIS - 将表数据分块导出到平面文件

使用SSIS从SQL Server 2005中的平面文件导入时如何保留NULL值

SSIS 2008 - 在平面文件目标中导出为指数值的浮点值

如何在 SQL Standard 上导出 SSIS 数据并在 SQL Express 上使用 Bulk Insert 导入?