分表插入好慢啊,有办法优化吗? 返回

SqlSugar
13 132

考虑到真实环境,业务数据都是一条一条插入的。尝试将数据插入分表,10W条依次插入,不是很理想 是不是我哪里配置有问题?

sugar3.jpg



热忱回答13

  • 分表支持bulkcopy看一下文档例子

    0 回复
  •  //bulkCopy 适合几十万大数据写入
      //db.Fastest<OrderSpliteTest>().SplitTable().BulkCopy(List<OrderSpliteTest>);
      //部分数据库需配置 具体用法看文档: https://www.donet5.com/Home/Doc?typeId=2404


    0 回复
  • 好的,我试下。谢谢

    0 回复
  • 单次批量插入的话,用这个方法是挺快的。 不过正常业务的话,通常都是一条条插入的吧。 比如一些内部事项申请,也都是一条条提交的。

    0 回复
  • @这验证码可以:一条条插入就用普通插入

    0 回复
  • 普通插入,看的是并发吞吐量

    0 回复
  • 同样处理10万肯定是不如一次BULKCOPY快的

    0 回复
  • 但我不是和批量插入做比较。 我用 做的比较,同样是分表插入(随机插入分表),10W条依次插入。SqlSugar在花费时长上是 的几倍。

    即使不和 做比较,和普通插入方法作比较的话,也是差了好几倍。 虽然实现了分表插入,但是差距这么大,感觉还是有问题。

    是否能像 一样,我们可以直接指定分表全名(或后缀名),如果发现分表未创建,就创建下。

     

    0 回复
  • @忘记密码了:db.Fastest<OrderSpliteTest>().SplitTable().BulkCopy(List<OrderSpliteTest>) 可以替换普通插入

    0 回复
  • 哪怕只插入100条也是很快的

    0 回复
  • 小数据测并发,大数据才测时长 ,你并发测试过吗? ,小数据循环和并发下性能是有有差距的

    0 回复
  • image.png

    还有你的时间都是DATETIME.NOW, 你把时间换成 2020-05-05   ,  2022-01-01  这种随机时间 看看对面能不能做到精准建表

    0 回复
  • if(存不存在){

       建表

    }

    db.Insertable(insertObj).AS("table01").ExecuteCommand();


    你要这种简单的只看当前时间,自个封装一下,现成的方法都有


    0 回复