.NET 百萬級 大數據插入、更新 ,支持多種數據庫


功能介紹  (需要版本5.0.45)

大數據操作ORM性能瓶頸在實體轉換上面,並且不能使用常規的Sql去實現

當列越多轉換越慢,SqlSugar將轉換性能做到極致,並且采用數據庫最佳API

操作數據庫達到極限性能

功能用法

BulkCopy 性能遠強於現有市場的 ORM框架,比 EFCore Efcore.Bulkextension 快30%

BulkUpdate 吊打現有所有框架 是 EFCore Efcore.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 EFCore  EFCore.BulkExtensions

10萬條數據 30列 ,可以看出EFCore.BulkExtensions在第一插入性能非常慢,正常情況下大數據插入也就比第一次

在更新方面SqlSugar也利用了bulkCopy方式進行更新,這一方面.NET  除了EFCore.BulkExtensions

並沒有發現有相關的產品(收費除外), 在更新操作方案 SqlSugar基本上是獨一無二的

EFCore.BulkExtensions 缺點 只支持 SqlServer 並且性能不如SqlSugar

 

使用疑問

1.比如Sqlite ... 還不支持怎么辦?

答:Sqlite普通插入加上事務就已經是市場上優秀水平了 (后續爭取在技術上有突破支持SQLITE)

db.Insertable(insertObj).ExecuteReturnIdentity();//普通插入並不慢 ,列不多情況1秒可以插入1萬

2.什么情況用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不更新了,那么多一個開源就是多一個選擇,

謝謝支持 ,隨着大數據庫時代的到來,用戶對數據處理也要求越來越高,一款海量數據的讀、寫、更新的框架必不可少

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM