使用.NET向Teradata插入Decimal和CLOB数据为何异常缓慢?
Teradata .NET批量插入中Decimal/CLOB类型导致速度骤降的问题
我使用Teradata .NET提供程序的TdDataAdapter实现批量数据加载,代码如下:
using (TdDataAdapter adapter = new TdDataAdapter()) { insertCommand.UpdatedRowSource = UpdateRowSource.None; adapter.InsertCommand = insertCommand; adapter.UpdateBatchSize = 1000; // 试过多个不同数值 adapter.Update(dataTable); }
插入命令会根据待插入数据动态生成,代码能正常运行且数据加载符合预期,但速度极慢。我了解可以使用FastLoad方案,但在.NET环境中实现难度较高。
测试发现,Decimal或CLOB字段会让插入速度下降约30倍,具体测试数据如下:
- 含20列(1个CLOB、1个Decimal)的1000行CSV文件:37秒
- 仅含1个Decimal列的1000行CSV文件:14秒
- 仅含1个CLOB列的1000行CSV文件:28秒
- 含18列(无CLOB和Decimal)的1000行CSV文件:1秒
- 含19列(无CLOB)的1000行CSV文件:21秒
- 含19列(无Decimal)的1000行CSV文件:30秒
注:测试用的最大CLOB仅600字符,测试文件最大仅404K。我清楚可以改用VARCHAR存储文本,但这不是本次测试的重点,我明确需要支持这两种数据类型,而非替换为其他类型。
表字段定义:
DecimalColumn DECIMAL(10,4), ClobColumn CLOB
我已经尝试添加/移除标识列、索引及主键等操作,问题仍未解决。.NET命令的参数类型为TdType.Decimal和TdType.Clob。
有没有其他开发者遇到过这个问题?
内容的提问来源于stack exchange,提问作者Yndigo Dream
相关产品推荐
相关产品推荐

