.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)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。