批量插入5000条测试数据 出BUG 作者说了不用担心 我现在很担心啊 返回

求助
16 542
该叫什么 John 发布于2019/7/5
悬赏:0 飞吻


图片害怕 无法外链看不到的话 就请去 GitHub上面看这个帖子

https://github.com/sunkaixuan/SqlSugar/issues/448


批量插入数据量时候 出BUG

我测试插入5000条数据量

出现这样错误:

string or blob too big statement too long

具体请看图片

代码

  • here is code

 System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
                    stopwatch.Reset();
                    stopwatch.Start();

                    using (var db = Aleseocore.Module.Aleseo.Database.Main.Base.GetInstance_demo_guid())
                    {

                        var t2 = db.Insertable(demo_Guiditems.ToArray()).ExecuteCommand();
                    }

                    stopwatch.Stop();
                    Console.WriteLine("成功导入{0}条数据 ,用时{1}秒。", demo_Guiditems.Count, stopwatch.Elapsed.TotalSeconds);

                    Console.WriteLine("执行完毕");

热忱回答16

  • John John VIP0
    2019/7/5

    还有谁会用 sqlite 用事务插入数据我现在在测试  我测试插入500条数据 插入 得 我等待 我等人都傻了 插入超级慢啊.


    0 回复
  • John John VIP0
    2019/7/5

     成功导入5000条数据 ,用时62.6848837秒。 

    插入 5000 条用事务 还是非常慢啊

     db.Insertable<Models.demo_guiditem>(item).AddQueue();

    var ar = db.SaveQueues();

    0 回复
  • 估计和数据库有关,mysql也是很慢,只能自己排除,看生成sql去分析,或者直接就执行sql

    0 回复
  • John John VIP0
    2019/7/5

    @liftlei:估计有别的解决方案 的 因为这是痛点  肯定有办法解决的 暂时不知道咋解决

    0 回复
  • Db.utils.pageeach进行分页插入1000一条

    0 回复
  • 用insertable (list)

    0 回复
  • 不要用打包

    0 回复
  • John John VIP0
    2019/7/5

    @fate stay night:数据都在用打包方式 修复中了  现在 都不知道怎么用上 已经等了 10多分钟了  未了 更新 4万条数据 估计这样速度 都要跑上小时去了

    0 回复
  • John John VIP0
    2019/7/5

    @fate stay night:批量报错 请你检查是不是数据量过大 导致的 这个 你最好修复下 小批量数据没问题

    0 回复
  • John John VIP0
    2019/7/5

    @fate stay night

    等得我傻了..哈哈哈哈...真慢. 


    成功导入40080条数据 ,用时1602.8331485秒。


    0 回复
  • John John VIP0
    2019/7/5

    @fate stay night

     
     用insertable (list)
     
     报错啊 就是数据量一大用这个方法 直接死 目前只能用打包方式啊 很慢


    0 回复
  • John John VIP0
    2019/7/5
    var t2 = db.Insertable(demo_Guiditems.ToArray()).ExecuteCommand();就是这个死


    0 回复
  • John John VIP0
    2019/7/5

    @fate stay nightDb.utils.pageeach进行分页插入1000一条 这个方法在哪里啊

    0 回复
  • John John VIP0
    2019/7/5

    @fate stay nightDb.utils.pageeach进行分页插入1000一条 


    这个方法哪里找啊  Db.utils.pageeach

    0 回复
  • John John VIP0
    2019/7/6

    @fate stay night:谢谢啊


    成功导入10000条数据 ,用时7.6919321秒。 牛逼大了 终于 找到精髓了.

     db.Utilities.PageEach(demo_Guiditems, 100, list =>{ var t2 = db.Insertable(list).ExecuteCommand();
    });


    0 回复
  • John John VIP0
    2019/7/7

    Sqlite 总结一下



    1.当有写操作时,其他读操作会被驳回

    2.当有写操作时,其他写操作会被驳回

    3.当开启事务时,在提交事务之前,其他写操作会被驳回

    4.当开启事务时,在提交事务之前,其他事务请求会被驳回

    5.当有读操作时,其他写操作会被驳回

    6.读操作之间能够并发执行


    0 回复

版块

学习文档

最新会员

发布达人

回贴达人