剑峰的茅草屋

剑峰的茅草屋
程序猿的掉发日常
  1. 首页
  2. .Net
  3. 正文

恼人的事务提交

2024 年 4 月 25 日 672点热度 0条评论

在修改陈年计划任务时碰到一个大数据量提交的问题。

由于大数量走事务提交,导致提交速度极慢6w条数据修改 约莫 3个小时的时间 将数据 commit 到数据库。

有时候还会出现 commit 超时,链接已经被占用的情况。

机智的我 想到 sqlserver 的bulkinsert的妙用。

 using (var transaction = BeginTransaction())
{
   Service.BulkInsert<xxxxx>(data);
   var (status, ex) = transaction.EndTransaction();
   if (!status)
   {
    throw new Exception(ex.Message);
   }
}

运行正常了没多久,出现了奇葩的insert失败,原因大致是 id 是bigint 的情况下 提交数据出现了问题,orm用的ef。

真恼人

突然想起国人开发的orm框架SqlSugar,据说性能不错。

var db = SqlSugarRepository.DbClient(SqlSugar.DbType.SqlServer, "DishWasherEntitiesAsp");
try
{
    //开启事务
    await db.BeginTranAsync();
    //快速提交
    await db.Fastest<xxxx>().BulkCopyAsync(data);
    //正常提交
    db.Insertable<xxxx>(data).ExecuteCommand()
    // 如果所有操作都成功,提交事务
    await Db_Edm.CommitTranAsync();
}

意外的非常不错,用Fastest 的方式提交,2秒钟就能解决提交问题。用正常的提交方式Insertable提交,原先6w的数据20分钟内也能完成数据的提交。

给国人大大点赞

 

标签: 暂无
最后更新:2024 年 4 月 25 日

sunjianfeng

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 剑峰的茅草屋. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

沪ICP备2021017081号