【发布时间】:2011-10-24 23:35:39
【问题描述】:
我正在编写一个应用程序,该应用程序使用 Perl DBI 向远程 mssql 服务器执行大量大型插入操作。不确定它是 05 还是 08 sql server,但到目前为止我已经对它进行了计时并且性能相似。基本上,到目前为止,需要插入的大量行已经成为瓶颈。我在 08 中尝试了多行插入(以及 05 中的子选择 UNION ALL 技巧),更改插入是在前一次提取期间还是之后触发,在单行插入上使用 execut_array(),所有这些都带有/没有绑定参数。
Psuedocode:
select data query
while fetchrow {
do lots of calculations
construct insert
1) do inserts here
}
2) or do inserts here
sql server 上的活动监视器平均每条 70 毫秒的多行插入。查询本身被限制为每条 58 行,因为插入中有 36 个字段,并且很容易达到 2100 个参数的限制。
有什么明显的我忽略了吗?我可以尝试其他任何方法来改善时代吗?忽略延迟或硬件等问题,我觉得必须对我的 Perl 工作流程或查询本身进行另一项改进。 (我正在研究 sql server bcp、批量插入等)。
感谢您的建议
【问题讨论】:
标签: sql-server perl sql-server-2005 sql-server-2008 dbi