环境:数据库是dell的服务器,具体配置不详程序执行的服务器为至强64位,server2008 64位,4G内存,其他不详。局域网间通讯要求:一秒写入3000笔数据,间隔3秒,每笔数据位15个decimal(18,2)的数值我现在有试过for循环一条条的插(Linq to SQL)以及生成完整的sql语句后一次性执行(ADO.NET),不过效率都不理想。不是数据库服务器CPU消耗过大( 〉80% ),要么就是写入时间超过3秒有没有什么更好的写入方式?
调试欢乐多
这样可以有效减少与 DB Server 之间的往返时间——这恰恰是最能优化的地方之一!100 条仅是随便提的,请 lz 根据具体测试结果调整!
sqlbulkcopy.writetoserver(datatable)参考:DataTable数据批量写入数据库三种方法比较降低CPU占用峰值,可以测试一下一次更新1/10的效果。
可以参数我收藏的一篇文章http://blog.csdn.net/Linux7985/archive/2009/03/05/3959716.aspx
如何高效的将数据导入sqlserver? 6万多数据导入到sql只需要几秒。
using (SqlConnection con = new SqlConnection(""))
{
con.Open();
string sql = "";
using (SqlCommand com = new SqlCommand(sql, con))
{
SqlDataReader dr = com.ExecuteReader();
using (SqlConnection connn = new SqlConnection(aa))
{
connn.Open();
SqlBulkCopy BulkCopy = new SqlBulkCopy(connn);
BulkCopy.DestinationTableName = "学生";
BulkCopy.WriteToServer(dr);
}
}
}