包含XML目标列的包的性能降低

时间:2012-10-19 21:28:05

标签: sql-server ssis

在过去几个月里,我已经完成了几个SSIS包,用于将数据从旧数据库移动到SQL Server数据库。处理大约5百万条记录通常需要10-20分钟,具体取决于转换。

我遇到的一个软件包遇到的问题是性能很差,因为我的目标中的一个列是SQL Server XML数据类型。

 Data comes in like this: 5
 A script creates a Unicode string like this: <XmlData><Value>5</Value></XmlData>
 Destination is simply a column with XML data type

这真的很慢。有什么建议? 我做了一个SQL跟踪并注意到在场景后面SSIS正在每行执行一次转换,然后插入:

 declare @p as xml
 set @p=convert(xml,N'<XmlData><Value>5</Value></XmlData>')

1 个答案:

答案 0 :(得分:2)

尝试使用临时表来存储生成的500万条记录而不进行XML转换,然后使用SQL Server本身将它们从tempDB移动到最终目标:

INSERT INTO final_destination (...)
SELECT cast(N'<XmlData><Value>5</Value></XmlData>' AS XML) AS batch_converted_xml, col1, col2, colX 
FROM   #tempTable

如果5.000.000变成单个批次的数据太多,您可以在较小的批次中进行(100k行应该像魅力一样)。

分析器捕获的记录看起来像是每行一个命令的OleDB转换。