sqlserver2005 大批量插入数据

Dearsoul 2009-10-22 07:39:35
有这么个业务,需要大批量的插入数据,在循环插入数据时,需要对每一条数据进行处理,处理过程会再往其他表内插入数据,这个过程需要用事务,保持数据一致性。现在是这样做的,处理每条数据,建立一个事物,这样的话需要建立很多次数据。性能上差一些。

我尝试过用多线程,去循环每条数据,因为表的ID不是自动获得,这样的话,会出现重复的ID。多线程存在数据库事务处理的不好。。


请大家说出自己的想法,怎么做性能会提供。
...全文
221 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyz985 2009-10-22
  • 打赏
  • 举报
回复
int BId = MaxBId()+1 //取max同时锁b
for(....)
InsertB(BId++)

这样行不行
Dearsoul 2009-10-22
  • 打赏
  • 举报
回复
例如:我要先从A表里,得到全部数据,假如用List<A>来装载集合。 每个表的ID,都需要通过getID获得。

for(int i=0;i<List<A>.Count;i++)
{
//开始对每条数据进行处理
//往B表插数据,同时得到ID
string id = InsertB()//InserB表并返回ID;

//根据ID,会分别网表C,表D中插入数据。
}


这种方式对于数据量小的时候,可以接受,如果数据量多的话,就非常影响速度了
tv666 2009-10-22
  • 打赏
  • 举报
回复
wuyq11 2009-10-22
  • 打赏
  • 举报
回复
通过存储过程批处理数据,通过事务和锁机制实现并发处理
大批量数据insert可使用SqlBulkCopy
SQL77 2009-10-22
  • 打赏
  • 举报
回复
重复等插入后再处理
SQL77 2009-10-22
  • 打赏
  • 举报
回复
用数据库处理

110,552

社区成员

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

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

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