懂的入-->关于如何提高BULK INSERT的执行效率问题

keykeyk keykeyk 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用C#写了个收集网页信息的小程序,基本思路是以正则表达式批量抓取网页数据,存储为CSV文件,边抓取边循环用BULK INSERT批量导入SQL SERVER 2005中去。
印象中BULK INSERT效率是很高的即使百万数量级的记录也可以在30秒内全部导入完毕。但是这个程序的实际运行结果却让我大跌眼镜,根据SQL Server Profiler跟踪的结果,每次导入0至2000条记录情况下,BULK INSERT的执行效率约是400毫秒至20秒!粗略估计平均执行效率在4秒钟左右,仅极个别情况时间少于100毫秒。
已用HDTUNE查硬盘性能基本正常,磁盘测试平均值89M/S,突发数据传输率180M/S,后台除360安全卫士、ZONEALARM、MACFEE
外基本未开其他程序。数据库日志记录模式已改为“简单”。要插入的表只包含3个非聚集索引。断点调试程序,发现程序暂停时,有时也出现硬盘灯常亮15秒以上情况,任务管理器监控到是sqlservr.exe在作大量I/O写入操作,怀疑是后台写日志影响SQL脚本的正常执行。
这个问题已困扰我2个月之久,实在找不到原因,请大家一同分析探讨,如蒙指教,感激不尽。分数不多,全部敬上,请有缘人笑纳!

C#中的SQL脚本如下:
 
SqlStr = "BULK INSERT "+TbName
+" FROM '"+Fname+"'"
+" WITH (FIELDTERMINATOR='\t',ROWTERMINATOR='\r\n')";
...全文

相关推荐

评论 27
收藏 已收藏
分享
返回顶部
keykeyk
疑难问题 22,298 成员 121,727 内容