.NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)
功能介绍 (需要版本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 | 全支持 | 是 |
|
MySql 连接字符串要加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
源码下载:
https://github.com/donet5/SqlSugar
sqlsugar已经持续更新7年之久,也越来越完善 ,如果说EF或者其它ORM不更新了,那么多一个开源就是多一个选择,
谢谢支持 ,随着大数据库时代的到来,用户对数据处理也要求越来越高,一款海量数据的读、写、更新的框架必不可少
到此这篇关于.NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
在ASP.NET 2.0中操作数据之十:使用 GridView和DetailView实现的主/从报表
本文我们主要研究了如何使用可选择行的GridView显示主记录,以及在DetailsView中显示选中记录的详细信息。2016-05-05
ASP.NET MVC4入门教程(五):从控制器访问数据模型
本文介绍ASP.NET MVC4中在创建控制器的时候,同时使用Entity Framework为模型生成增删改查等方法,方便控制器调用。2016-04-04
在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provid
ASP.NET 2.0的site map是建立在provider模式的基础上的,因此我们可以创建一个自定义的site map provider,从数据库或某个层来获取数据。本文就详解介绍如何自定义的site map provider动态的获取数据,替代先前通过"硬编码"的方式添加到Web.sitemap文件的方法。2016-05-05
决定何时使用 DataGrid、DataList 或 Repeater(ASP.NET 技术文章)
决定何时使用 DataGrid、DataList 或 Repeater(ASP.NET 技术文章)...2006-10-10
在ASP.NET 2.0中操作数据之六十一:在事务里对数据库修改进行封装
事务的最主要的一个作用就是保证数据的完整性,本文主要介绍ASP.NET 2.0中使用事务对修改数据进行封装,这些包含事务的命令要么都执行成功要么都执行失败。2016-05-05
在ASP.NET 2.0中操作数据之三十七:DataList批量更新
上篇文章我们实现了DataList单条记录编辑的功能,数据量小的时候这种方法还好,如果数据量大我们更希望一次可以更新多条记录,接下来就让我们看看DataList如何实现批量更新吧。2016-05-05
在ASP.NET 2.0中操作数据之四十八:对SqlDataSource控件使用开放式并发
本文主要讲解ASP.NET 2.0中SqlDataSource控件通过配合SQL语句达到控制开放式并发的目的,通过在UPDATE和DELETE语句里扩展WHERE字句,SqlDataSource能应对绝大部分情况。2016-05-05


最新评论