.NET多種數(shù)據(jù)庫大數(shù)據(jù)批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)
功能介紹 (需要版本5.0.45)
大數(shù)據(jù)操作ORM性能瓶頸在實體轉(zhuǎn)換上面,并且不能使用常規(guī)的Sql去實現(xiàn)
當列越多轉(zhuǎn)換越慢,SqlSugar將轉(zhuǎn)換性能做到極致,并且采用數(shù)據(jù)庫最佳API
操作數(shù)據(jù)庫達到極限性能
功能用法
BulkCopy性能遠強于現(xiàn)有市場的 ORM框架,比 EFCore Efcore.Bulkextension快30%
BulkUpdate吊打現(xiàn)有所有框架是EFCoreEfcore.Bulkextension 2-3倍之快
//插入 100萬 10秒不到 db.Fastest<RealmAuctionDatum>().BulkCopy(GetList());//性能 比現(xiàn)有任何Bulkcopy都要快30% //更新 db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList());//更新 吊打所有框架N倍,30列100萬8秒更新完 db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList(),new string[]{"id"},new string[]{"name","time"})//無主鍵用法 //表設(shè)置別名 db.Fastest<RealmAuctionDatum>().AS("tableName").BulkCopy(GetList())
數(shù)據(jù)庫支持
數(shù)據(jù)庫 | API | 支持自增 |
---|---|---|
SqlSever | 全支持 | 是 |
MySql 連接字符串要加AllowLoadLocalInfile=true |
全支持 | 是 |
PgSql | 全支持 | 否 |
Oracle | BulkCopy | 否 |
性能測試
插入方案SqlSugar VS EFCoreEFCore.BulkExtensions
10萬條數(shù)據(jù) 30列 ,可以看出EFCore.BulkExtensions在第一插入性能非常慢,正常情況下大數(shù)據(jù)插入也就比第一次
在更新方面SqlSugar也利用了bulkCopy方式進行更新,這一方面.NET 除了EFCore.BulkExtensions
并沒有發(fā)現(xiàn)有相關(guān)的產(chǎn)品(收費除外),在更新操作方案 SqlSugar基本上是獨一無二的
EFCore.BulkExtensions缺點只支持 SqlServer并且性能不如SqlSugar
使用疑問
- 比如Sqlite ... 還不支持怎么辦?
答:Sqlite普通插入加上事務(wù)就已經(jīng)是市場上優(yōu)秀水平了 (后續(xù)爭取在技術(shù)上有突破支持SQLITE)
db.Insertable(insertObj).ExecuteReturnIdentity();//普通插入并不慢 ,列不多情況1秒可以插入1萬
- 什么情況用db.Fastest
答: db.Fastest主要是用于大數(shù)據(jù)插入、更新處理,如果1000條以下就沒有必要使用了,畢竟支持的API沒有普通插入豐富,在小數(shù)據(jù)插入上也并沒有太多優(yōu)勢,db.Fastest性能主要強大1000以上的數(shù)據(jù)處理
老版本
老版本可以這么用,性能不如db.Fastest
//(3)、blukCopy插入 //只適合1萬以上超大數(shù)據(jù)插入或者上面數(shù)據(jù)插入慢情況,小數(shù)據(jù)插入性能不行,不是所有庫都支持 db.Insertable(List<實體>).UseSqlServer().ExecuteBulkCopy() db.Insertable(List<實體>).UseMySql().ExecuteBulkCopy()//高版本Mysql.data驅(qū)動,連接字符串要加AllowLoadLocalInfile=true db.Insertable(List<實體>).UseOracle().ExecuteBulkCopy()//5.0.3.8-Preview
源碼下載:
https://github.com/donet5/SqlSugar
sqlsugar已經(jīng)持續(xù)更新7年之久,也越來越完善 ,如果說EF或者其它ORM不更新了,那么多一個開源就是多一個選擇,
謝謝支持 ,隨著大數(shù)據(jù)庫時代的到來,用戶對數(shù)據(jù)處理也要求越來越高,一款海量數(shù)據(jù)的讀、寫、更新的框架必不可少
到此這篇關(guān)于.NET多種數(shù)據(jù)庫大數(shù)據(jù)批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET MVC4入門教程(五):從控制器訪問數(shù)據(jù)模型
本文介紹ASP.NET MVC4中在創(chuàng)建控制器的時候,同時使用Entity Framework為模型生成增刪改查等方法,方便控制器調(diào)用。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之十六:概述插入、更新和刪除數(shù)據(jù)
本文主要介紹ASP.NET中插入、更新和刪除數(shù)據(jù)的原理,ObjectDataSource在頁面和潛在的數(shù)據(jù)之間扮演一個代理的角色,配合業(yè)務(wù)邏輯可以執(zhí)行Select()、Insert()、Update()和Delete()方法。2016-05-05解讀ASP.NET 5 & MVC6系列教程(17):MVC中的其他新特性
這篇文章主要介紹了ASP.NET 5中全局導(dǎo)入、獲取IP相關(guān)信息、文件上傳等其他新特性,需要的朋友可以參考下2016-06-06《解剖PetShop》之三:PetShop數(shù)據(jù)訪問層之消息處理
本文主要講解PetShop4.0的數(shù)據(jù)訪問層的消息處理部分,需要的朋友可以參考下。2016-05-05ASP.NET MVC4入門教程(八):給數(shù)據(jù)模型添加校驗器
本文介紹給模型添加校驗器,以前我們做表單驗證都要前臺驗證一遍,后臺再驗證一遍,MVC4中這種方式,只需在模型上加驗證規(guī)則,前后臺就都驗證了。2016-04-04為Visual Studio手工安裝微軟ReportViewer控件
這篇文章介紹了為Visual Studio手工安裝微軟ReportViewer控件的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06解讀ASP.NET 5 & MVC6系列教程(10):Controller與Action
這篇文章主要介紹了ASP.NET 5 Controller與Action的定義和使用,需要的朋友可以參考下2016-06-06