我最近将我的.NET开发从一台旧的Core2.93 GHz PC转移到了一台新的Corei7-38203.6 GHz机器上。未对项目代码或数据库布局进行任何更改。这两台机器使用相同的SQL Server 2012 Express with Advanced Services (而不是LocalDB)。
我注意到INSERT INTO命令的速度明显减慢:在旧机器上每行需要1-2毫秒,现在在新机器上需要8-9毫秒。我所能找到的唯一修复方法是在一个命令中使用多个行插入,这似乎会将命令的开销分散到许多行上。与在SQL Server2008 R2中一样,在SQL Server2012中,一个这样的命令中的行数限制是1000:http://msdn.microsoft.com/en-us/library/dd776382.aspx
但是,多行解决方案并不适用于所有场景;例如,表适配器更新逐行进行,需要很长时间才能完成。
有没有人遇到过这个问题?我该如何着手解决它呢?
发布于 2012-05-21 23:02:37
cpu肯定更好,但是磁盘io怎么样呢?插入显然依赖于该子系统。
碰巧我正在读这篇文章http://www.altdevblogaday.com/2012/05/16/sql-server-high-performance-inserts/
似乎表值参数可以显著提高性能。
这些评论指向下面的页面,其中有一些令人印象深刻的数字。
在comments http://florianreischl.blogspot.de/2012/03/performance-comparison-of-sql-server.html中
我自己还没有用过这个,但是如果你有2008或更高版本,tvp似乎是将数据从客户机泵送到sql服务器的方法。
发布于 2012-11-22 04:13:37
老实说,一次写一条记录总是很慢。考虑一下-如果它适合您的体系结构-将行写入文本文件,然后批量插入它,您的性能将极大地提高。
https://stackoverflow.com/questions/10687600
复制相似问题