本篇内容介绍了“.NET多种数据库大数据批量插入分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
功能介绍 (需要版本5.0.45)
大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现
当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API
操作数据库达到极限性能
功能用法
BulkCopy性能远强于现有市场的 ORM框架,比 EFCore Efcore.Bulkextension快30%
BulkUpdate吊打现有所有框架是EFCoreEfcore.Bulkextension 2-3倍之快
//插入 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 | 全支持 | 是 |
连接字符串要加AllowLoadLocalInfile=true | 全支持 | 是 |
PgSql | 全支持 | 否 |
Oracle | BulkCopy | 否 |
性能测试
插入方案SqlSugar VS EFCoreEFCore.BulkExtensions
10万条数据 30列 ,可以看出EFCore.BulkExtensions在第一插入性能非常慢,正常情况下大数据插入也就比第一次
在更新方面SqlSugar也利用了bulkCopy方式进行更新,这一方面.NET 除了EFCore.BulkExtensions
并没有发现有相关的产品(收费除外),在更新操作方案 SqlSugar基本上是独一无二的
EFCore.BulkExtensions缺点只支持 SqlServer并且性能不如SqlSugar
使用疑问
比如Sqlite ... 还不支持怎么办?
答:Sqlite普通插入加上事务就已经是市场上优秀水平了 (后续争取在技术上有突破支持SQLITE)
db.Insertable(insertObj).ExecuteReturnIdentity();//普通插入并不慢 ,列不多情况1秒可以插入1万
什么情况用db.Fastest
答: db.Fastest主要是用于大数据插入、更新处理,如果1000条以下就没有必要使用了,毕竟支持的API没有普通插入丰富,在小数据插入上也并没有太多优势,db.Fastest性能主要强大1000以上的数据处理
老版本
老版本可以这么用,性能不如db.Fastest
//(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
“.NET多种数据库大数据批量插入分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!