You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为SQL Server到Azure Storage的非数值数据复制启用并行线程

解决Fabric数据管道读取SQL Server字符串类型表的并行性能问题

问题原因

动态范围分区依赖可进行范围排序的数值、日期等类型,而字符串类型(尤其是组合字符串主键)不支持这种分区方式,因此触发SqlParallelNotSupportedDataType错误。

并行读取优化方案

1. 使用哈希分区实现并行读取

Fabric复制活动支持哈希分区,可基于字符串列进行哈希分片,将数据均匀分配到多个线程并行读取:

  • 在复制活动的「源」设置中,选择「哈希分区」
  • 指定分区键(推荐选唯一字符串列Column A,其值分布均匀,哈希分片效果好)
  • 设置分区数(根据SQL Server的CPU核心数、网络带宽调整,小数据量建议2-4个,后续数据量增长可设4-8个)

2. 手动拆分查询并行执行

如果哈希分区无法满足需求,可手动拆分查询,用多个复制活动并行读取:

  • 基于字符串列的特征编写分片查询,比如按Column A的具体值分段:
    • 复制活动1:SELECT * FROM your_table WHERE ColumnA IN ('unqStr1', 'unqStr2')
    • 复制活动2:SELECT * FROM your_table WHERE ColumnA IN ('unqStr3', 'unqStr4', 'unqStr5')
  • 将这些复制活动放在同一个管道中,设置为并行执行,每个活动独立读取一部分数据

3. 辅助优化SQL Server端读取性能

  • 确认主键组合列的索引有效,避免全表扫描
  • 若后续数据量增长,可在SQL Server端创建数值型计算列,间接支持动态范围分区:
    ALTER TABLE your_table ADD HashKey AS CAST(HASHBYTES('SHA2_256', ColumnA) % 8 AS INT) PERSISTED
    
    用这个HashKey数值列做动态范围分区,即可实现并行读取

注意事项

当前你的表仅1000行,并行读取的性能提升可能不明显,但以上方案可适配后续数据量增长的场景。

内容的提问来源于stack exchange,提问作者Sudheesh Nagamalla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:32:05