我有一个 350MB 的表,它相当宽,有两个 varchar(2000) 列。通过 SSIS 数据流,需要 60 分钟才能通过 OLEDB“快速加载”目标加载到 Azure SQL DW。我将该数据流上的目标更改为 Azure Blob 目标(来自SSIS Azure 功能包),并且相同的数据流在 1.5 分钟内完成(并且来自该新平面文件的 Polybase 大约需要 2 分钟)。
对于另一个来源,我有一个现有的 1GB 平面文件。SSIS 数据流入 Azure SQL DW 中的 OLEDB 目标需要 90 分钟。将文件复制到 blob 存储,Polybase 加载需要 5 分钟。
SSIS 是 SSIS 2014,它运行在与 Azure SQL DW 相同区域的 Azure VM 上。我知道批量加载比 Polybase 慢得多,因为批量加载通过控制节点进行,但 Polybase 在所有计算节点上并行化。但是这些批量加载数字非常慢。
为了通过批量加载尽可能快地加载到 Azure SQL DW 阶段表,SSIS 数据流和目标的最佳设置是什么?除了我不考虑的任何其他设置之外,我尤其对以下设置的最佳值感兴趣:
- Stage table geometry = HEAP(我相信是最快的)
- 数据流设置:
- DefaultBufferMaxRows = ?
- 默认缓冲区大小 = ?
- OLEDB 目标设置
- 数据访问模式 = 表或视图 - 快速加载
- 保持身份 = 未选中
- 保持空值 = ?
- 表锁 = ?
- 检查约束 = ?
- 每批次的行数 = ?
- 最大插入提交大小 = ?