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从SQL Server 2005中的平面文件导入时如何保留NULL值
SSIS 2008 - 在平面文件目标中导出为指数值的浮点值
如何在 SQL Standard 上导出 SSIS 数据并在 SQL Express 上使用 Bulk Insert 导入?