1. 程式人生 > 程式設計 >.NET多種資料庫大資料批量插入、更新(支援SqlServer、MySql、PgSql和Oracle)

.NET多種資料庫大資料批量插入、更新(支援SqlServer、MySql、PgSql和Oracle)

功能介紹 (需要版本5.0.45)

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

當列越多轉換越慢,SqlSugwww.cppcns.comar將轉換效能做到極致,並且採用最佳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.BulkExtensionabIcemmJQis

10萬條資料 30列 ,可以看出EFCore.BulkExtensions在第一插入效能非常慢,正常情況下大資料插入也就比第一次http://www.cppcns.com

.NET多種資料庫大資料批量插入、更新(支援SqlServer、MySql、PgSql和Oracle)

在更新方面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://abIcemmJQi.com/donet5/SqlSugar

sqlsugar已經持續更新7年之久,也越來越完善 ,如果說EF或者其它ORM不更新了,那麼多一個開源就是多一個選擇,

謝謝支援 ,隨著大資料庫時代的到來,使用者對資料處理也要求越來越高,一款海量資料的讀、寫、更新的框架必不可少

到此這篇關於.NET多種資料庫大資料批量插入、更新(支援SqlServer、MySql、PgSql和Oracle)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援我們。