如何提高数据库数据批量写入的效率

lokiice 2009-11-30 09:55:29
环境:数据库是dell的服务器,具体配置不详。。。程序执行的服务器为至强64位,server2008 64位,4G内存,其他不详。局域网间通讯

要求:一秒写入3000笔数据,间隔3秒,每笔数据位15个decimal(18,2)的数值



我现在有试过for循环一条条的插(Linq to SQL)以及生成完整的sql语句后一次性执行(ADO.NET),不过效率都不理想。不是数据库服务器CPU消耗过大( 〉80% ),要么就是写入时间超过3秒

有没有什么更好的写入方式?
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
烈火蜓蜻 2009-11-30
  • 打赏
  • 举报
回复

可以参数我收藏的一篇文章

http://blog.csdn.net/Linux7985/archive/2009/03/05/3959716.aspx
如何高效的将数据导入sqlserver?

6万多数据导入到sql只需要几秒。
lzsh0622 2009-11-30
  • 打赏
  • 举报
回复
可以考虑使用:
sqlbulkcopy.writetoserver(datatable)

参考:DataTable数据批量写入数据库三种方法比较

降低CPU占用峰值,可以测试一下一次更新1/10的效果。

qqzeng-ip 2009-11-30
  • 打赏
  • 举报
回复
在效率控制,使用循环+批量插入的方式
yixianggao 2009-11-30
  • 打赏
  • 举报
回复
可以考虑每次执行 100 条,拼接 100 条语句后再执行,
这样可以有效减少与 DB Server 之间的往返时间——这恰恰是最能优化的地方之一!

100 条仅是随便提的,请 lz 根据具体测试结果调整!
bdmh 2009-11-30
  • 打赏
  • 举报
回复
找一个专用服务器去做这件事情
波导终结者 2009-11-30
  • 打赏
  • 举报
回复
把数据搞到服务器上,再从服务器上插入试试
stone_1207 2009-11-30
  • 打赏
  • 举报
回复
用存储过程!
wuyq11 2009-11-30
  • 打赏
  • 举报
回复
多线程操作或
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);
}
}
}



111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧