2
我写了一些工资核算处理软件,最终使用SqlDataAdapter.Insert()
将数据写入到SQL Server表中。 (我使用的默认插入命令是使用SqlCommandBuilder()
创建的。)我在Windows 7上使用.NET Framework 4,写入SQL Server 2008(不是R2)Std Edition x64 SP3。问题是,我的电脑(Dell Optiplex 990 Core i7)到SQL Server(我的PC上的NIC,服务器上都是GB Enet)的吞吐量只有2 Mbps,但两者之间存在一些100 Mbps的交换机,造成了不幸的瓶颈,但仍然是 - 100Mbps)。我可以将文件从我的电脑复制到运行SQL Server的服务器,并且我没有吞吐量问题 - 我可以非常接近100 Mbps的吞吐量。我把数据库放在另一个运行2008 R2的LAN SQL Server上,我设法获得了5 Mbps的吞吐量,但仍然 - 非常慢。当Insert()
命令正在运行时,我的PC的CPU接近0。我试图增加和减少SqlConnection.ConnectionString
属性中的数据包大小参数,但是没有做任何事情。SqlDataAdapter插入性能差
如果我从我的PC上的SSMS执行SELECT * FROM <table>
到所讨论的SQL Server,我可以获得大约45 Mbps的持续吞吐量。
我不知道在哪里看下一个罪魁祸首 - 任何建议表示赞赏。
执行更新时修改了多少行? “更新”命令仅处理更改的行。另外,你为什么要做'从
@ScottChamberlain - 那里的脑部总动脉瘤 - 我的意思是'Insert()'。问题已得到解决。 – Conrad
好吧,你一次插入多少行? –
回答
SqlDataAdapter的Insert一次执行一条记录,如果您要插入很多记录,则应该使用SqlBulkCopy而不是减少执行这些插入的开销。
来源
2013-07-30 21:22:15
非常感谢 - 这正是我一直在寻找的。 – Conrad
相关问题