.NET 百万级 大数据插入、更新 ,支持多种数据库
功能介绍 (需要版本5.0.45)
大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现
当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API
操作数据库达到极限性能
功能用法
BulkCopy 性能远强于现有市场的 ORM框架,比 EFCore Efcore.Bulkextension 快30%
BulkUpdate 吊打现有所有框架 是 EFCore Efcore.Bulkextension 2-3倍之快
1 2 3 4 5 6 7 8 9 10 11 | //插入 100万 10秒不到 db.Fastest<RealmAuctionDatum>().BulkCopy(GetList()); //性能 比现有任何Bulkcopy都要快30% //更新 db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList()); //更新 吊打所有框架N倍,30列100万8秒更新完 db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList(), new string []{ "id" }, new string []{ "name" , "time" }) //无主键用法 //表设置别名 db.Fastest<RealmAuctionDatum>().AS( "tableName" ).BulkCopy(GetList()) |
数据库支持
数据库 | API | 支持自增 |
SqlSever | 全支持 | 是 |
MySql 连接字符串要加AllowLoadLocalInfile=true |
全支持 | 是 |
PgSql | 全支持 | 否 |
Oracle | BulkCopy | 否 |
性能测试
插入方案SqlSugar VS EFCore EFCore.BulkExtensions
10万条数据 30列 ,可以看出EFCore.BulkExtensions在第一插入性能非常慢,正常情况下大数据插入也就比第一次
在更新方面SqlSugar也利用了bulkCopy方式进行更新,这一方面.NET 除了EFCore.BulkExtensions
并没有发现有相关的产品(收费除外), 在更新操作方案 SqlSugar基本上是独一无二的
EFCore.BulkExtensions 缺点 只支持 SqlServer 并且性能不如SqlSugar
使用疑问
1.比如Sqlite ... 还不支持怎么办?
答:Sqlite普通插入加上事务就已经是市场上优秀水平了 (后续争取在技术上有突破支持SQLITE)
1 | db.Insertable(insertObj).ExecuteReturnIdentity(); //普通插入并不慢 ,列不多情况1秒可以插入1万 |
2.什么情况用db.Fastest
答: db.Fastest主要是用于大数据插入、更新处理,如果1000条以下就没有必要使用了,毕竟支持的API没有普通插入丰富,
在小数据插入上也并没有太多优势,db.Fastest性能主要强大1000以上的数据处理
老版本
老版本可以这么用,性能不如db.Fastest
1 2 3 4 5 6 7 8 | //(3)、blukCopy插入 //只适合1万以上超大数据插入或者上面数据插入慢情况,小数据插入性能不行,不是所有库都支持 db.Insertable(List<实体>).UseSqlServer().ExecuteBulkCopy() db.Insertable(List<实体>).UseMySql().ExecuteBulkCopy() //高版本Mysql.data驱动,连接字符串要加AllowLoadLocalInfile=true db.Insertable(List<实体>).UseOracle().ExecuteBulkCopy() //5.0.3.8-Preview |
源码下载:
https://github.com/donet5/SqlSugar sqlsugar已经持续更新7年之久,也越来越完善 ,如果说EF或者其它ORM不更新了,那么多一个开源就是多一个选择,
谢谢支持 ,随着大数据库时代的到来,用户对数据处理也要求越来越高,一款海量数据的读、写、更新的框架必不可少
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?