0

我最近将我的 .NET 开发从旧的 Core2Duo 2.93 GHz PC 转移到了新的 Core i7-3820 3.6 GHz 机器上。没有对项目代码或数据库布局进行任何更改。两台机器都使用相同的 SQL Server 2012 Express 和高级服务(不是 LocalDB)。

我观察到 INSERT INTO 命令的速度显着下降:以前在旧机器上每行需要 1-2 毫秒,现在在新机器上需要 8-9 毫秒。我能找到的唯一解决方法是在一个命令中使用多行插入,这似乎将命令的开销分散到多行上。与 SQL Server 2008 R2 中一样,在 SQL Server 2012 中,一个此类命令中的行数限制为 1000:http: //msdn.microsoft.com/en-us/library/dd776382.aspx

但是,多行变通方法并非适用于所有场景;例如,逐行更新的表适配器更新需要很长时间才能完成。

有没有人遇到过这个问题?我将如何解决它?

4

2 回答 2

0

老实说,一次写一条记录总是很慢。考虑-如果它适合您的体系结构-将行写入文本文件然后批量插入,您的性能将大大提高。

于 2012-11-21T20:13:37.430 回答
0

cpu 肯定更好,但磁盘 io 呢?插入显然依赖于该子系统。

碰巧我只是在读这篇文章http://www.altdevblogaday.com/2012/05/16/sql-server-high-performance-inserts/

似乎表值参数可以显着提高性能

评论导致下一页有一些令人印象深刻的数字。

在评论http://florianreischl.blogspot.de/2012/03/performance-comparison-of-sql-server.html

我自己还没有使用过这个,但如果你有 2008 年或更高版本,tvp 似乎是将数据从客户端泵送到 sql 服务器的方法。

于 2012-05-21T15:02:37.237 回答