批量插入5000条测试数据 出BUG 作者说了不用担心 我现在很担心啊 返回
图片害怕 无法外链看不到的话 就请去 GitHub上面看这个帖子
https://github.com/sunkaixuan/SqlSugar/issues/448
批量插入数据量时候 出BUG
请参考这个文章
使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
看能解决这个批量处理问题吗?
用事务处理机制
批量插入数据 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 VIP0
2019/7/5还有谁会用 sqlite 用事务插入数据我现在在测试 我测试插入500条数据 插入 得 我等待 我等人都傻了 插入超级慢啊.
0 回复 -
John VIP0
2019/7/5成功导入5000条数据 ,用时62.6848837秒。
插入 5000 条用事务 还是非常慢啊
db.Insertable<Models.demo_guiditem>(item).AddQueue();
var ar = db.SaveQueues();
0 回复 -
liftlei VIP0
2019/7/5估计和数据库有关,mysql也是很慢,只能自己排除,看生成sql去分析,或者直接就执行sql
0 回复 -
John VIP0
2019/7/5@liftlei:估计有别的解决方案 的 因为这是痛点 肯定有办法解决的 暂时不知道咋解决
0 回复 -
fate stay night VIP0
2019/7/5Db.utils.pageeach进行分页插入1000一条
0 回复 -
fate stay night VIP0
2019/7/5用insertable (list)
0 回复 -
fate stay night VIP0
2019/7/5不要用打包
0 回复 -
John VIP0
2019/7/5@fate stay night:数据都在用打包方式 修复中了 现在 都不知道怎么用上 已经等了 10多分钟了 未了 更新 4万条数据 估计这样速度 都要跑上小时去了
0 回复 -
John VIP0
2019/7/5@fate stay night:批量报错 请你检查是不是数据量过大 导致的 这个 你最好修复下 小批量数据没问题
0 回复 -
John VIP0
2019/7/5@fate stay night:
等得我傻了..哈哈哈哈...真慢.
成功导入40080条数据 ,用时1602.8331485秒。
0 回复 -
John VIP0
2019/7/5@fate stay night:
用insertable (list) 报错啊 就是数据量一大用这个方法 直接死 目前只能用打包方式啊 很慢
0 回复 -
John VIP0
2019/7/5var t2 = db.Insertable(demo_Guiditems.ToArray()).ExecuteCommand();就是这个死
0 回复 -
John VIP0
2019/7/5@fate stay night:Db.utils.pageeach进行分页插入1000一条 这个方法在哪里啊
0 回复 -
John VIP0
2019/7/5@fate stay night:Db.utils.pageeach进行分页插入1000一条
这个方法哪里找啊 Db.utils.pageeach
0 回复 -
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 VIP0
2019/7/7Sqlite 总结一下
1.当有写操作时,其他读操作会被驳回
2.当有写操作时,其他写操作会被驳回
3.当开启事务时,在提交事务之前,其他写操作会被驳回
4.当开启事务时,在提交事务之前,其他事务请求会被驳回
5.当有读操作时,其他写操作会被驳回
6.读操作之间能够并发执行
0 回复