.NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)

作者:果糖大数据科技 时间:2024-01-19 07:39:40 

功能介绍 (需要版本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全支持
OracleBulkCopy

性能测试

插入方案SqlSugar VS EFCoreEFCore.BulkExtensions

10万条数据 30列 ,可以看出EFCore.BulkExtensions在第一插入性能非常慢,正常情况下大数据插入也就比第一次

.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://github.com/donet5/SqlSugar

sqlsugar已经持续更新7年之久,也越来越完善 ,如果说EF或者其它ORM不更新了,那么多一个开源就是多一个选择,

谢谢支持 ,随着大数据库时代的到来,用户对数据处理也要求越来越高,一款海量数据的读、写、更新的框架必不可少

来源:https://www.cnblogs.com/sunkaixuan/p/15587149.html

标签:.NET,数据库,大数据
0
投稿

猜你喜欢

  • MySQL去重的方法整理

    2024-01-27 07:04:42
  • Python检查ping终端的方法

    2023-04-16 07:03:37
  • ASP中的301跳转和302跳转

    2008-08-06 18:40:00
  • Django 源码WSGI剖析过程详解

    2023-09-14 22:19:58
  • go语言中sort包的实现方法与应用详解

    2024-02-20 13:56:39
  • SQL Server利用sp_spaceused如何查看表记录存在不准确的情况

    2024-01-20 07:40:10
  • 详解Python爬虫的基本写法

    2022-12-26 07:49:45
  • 利用Python将图片中扭曲矩形的复原

    2022-05-24 21:35:54
  • Python Django给admin添加Action的方法实例详解

    2023-10-30 13:11:35
  • Vue+express+Socket实现聊天功能

    2024-06-05 09:19:03
  • python打印n位数“水仙花数”(实例代码)

    2021-06-11 20:35:36
  • Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】

    2021-06-06 02:32:57
  • 连接pandas以及数组转pandas的方法

    2021-11-12 12:12:09
  • conda虚拟环境默认路径的修改方法

    2022-07-02 03:14:50
  • 分享4个Python中的非常好用的自动化脚本

    2023-12-03 09:59:17
  • python脚本监控Tomcat服务器的方法

    2023-10-03 18:19:23
  • PhpStorm连接服务器并实现自动上传功能

    2024-05-02 17:07:02
  • python 中的列表解析和生成表达式

    2022-01-30 16:14:15
  • django定期执行任务(实例讲解)

    2022-12-13 20:43:35
  • 在vue-cli脚手架中配置一个vue-router前端路由

    2024-05-28 15:59:13
  • asp之家 网络编程 m.aspxhome.com