.NET複数データベース一括データ挿入、更新(SqlServer、MySql、PgSql、Oracleをサポートします。)
機能の説明 (バージョン5.0.45が必要)
ビッグデータORM運用のパフォーマンスボトルネックはエンティティ変換であり、通常のSqlで実装することはできない
カラムが増えると変換が遅くなるため、SqlSugarは変換パフォーマンスを最大化し、最適なデータベースAPIを使用します。
データベースを操作してパフォーマンスを極限まで高める
関数の使用方法
BulkCopyは既存のORMフレームワークよりもはるかに性能が良く、EFCore Efcore.Bulkextensionよりも30%高速です。
BulkUpdateは、EFCoreEfcoreの2~3倍の速度で、既存のすべてのフレームワークに勝っています。
//insert 1 million in less than 10 seconds
db.Fastest<RealmAuctionDatum>().BulkCopy(GetList());//performance 30% faster than any existing Bulkcopy
//Update
BulkUpdate(GetList());//update hang all the framework N times, 30 columns 1 million 8 seconds to update
db.Fastest<RealmAuctionDatum>().BulkUpdate(GetList(),new string[]{"id"},new string[]{"name","time& quot;})//no primary key usage
//table set alias
db.Fastest<RealmAuctionDatum>().AS("tableName").BulkCopy(GetList())
データベース対応
<テーブル データベース API セルフインクリメント対応 SqlSever フルサポート はいMySql
AllowLoadLocalInfile=true を追加する接続文字列。
フルサポート はい PgSql フルサポート いいえ オラクル バルクコピー いいえパフォーマンステスト
挿入スキーム SqlSugar VS EFCoreEFCore.BulkExtensions
10万データ30列、あなたは最初の挿入パフォーマンスでEFCore.BulkExtensionsが非常に遅いことがわかりますが、大きなデータの挿入の通常の場合は、ちょうど最初のよりも多くなっています。
EFCore.BulkExtensionsに加え、.NETを使用。
但し、EFCore.NETは除く。
BulkExtensionsはSqlServerしかサポートしておらず、SqlSugarほど性能が良くないというデメリットがあります。
使用方法に関する質問
- 例えば、Sqlite ... まだサポートされていない場合はどうするのですか?
回答:Sqliteの通常挿入+トランザクションは、すでに市場でも十分通用するレベルです(その後、技術的なブレークスルーによりSQLITEをサポートします)。
<ブロッククオートInsertable(insertObj).ExecuteReturnIdentity();// 通常の挿入は遅くありません、多くの列は1秒に挿入することができます10,000
- dbをどうするか。
db.Fastestは、主に大規模なデータの挿入、更新処理に使用され、1000未満は使用する必要がない場合は、すべての後に、APIのサポートは、通常の挿入として豊富ではない、小さなデータの挿入で多くの利点は、db.Fastestパフォーマンスは主に強力です1000以上のデータを処理します。
旧バージョン
古いバージョンもこの方法で使用可能で、db.Fastestよりパフォーマンスは劣ります
//(3), blukCopy inserts
// only suitable for more than 10,000 large data insertion or the above data insertion slow case, small data insertion performance is not possible, not all libraries are supported
db.Insertable(List<entity>).UseSqlServer().ExecuteBulkCopy()
ExecuteBulkCopy() // high version of Mysql.data driver, connection string to add AllowLoadLocalInfile=true
db.Insertable(List<Entity>).UseOracle().ExecuteBulkCopy() //5.0.3.8-Preview
ソースコードのダウンロード
https://github.com/donet5/SqlSugar
sqlsugarは7年前から継続的にアップデートされており、どんどん良くなっているので、EFや他のORMがアップデートされないのであれば、もう1つのオープンソースを選択するのも1つの手です。
ビッグデータベースの出現で、ユーザーはますます多くのデータ処理を要求しており、大量のデータを読み、書き、更新するためのフレームワークが不可欠です。
.NETの複数のデータベースの一括挿入と更新(サポートSqlServer、MySql、PgSqlとOracle)。スクリプトハウスを学び、サポートするために役立つことを願っています。
関連
-
ASP.NET Core 6で依存関係を解決する3つの方法
-
pythonでpillowをインストールする3つの方法
-
.NET Coreでオブジェクトプールを使用する
-
ASP.NET CoreでURLを設定する5つの方法
-
ネットのメモリ管理に関する5つの基本
-
ASP.NET Core Web API チュートリアル プロジェクト構成図
-
ASP.NET Coreで複数のサービス実装クラスをインジェクトする方法
-
非同期タスクキャンセルと監視のネット実装
-
CS0234 名前空間 'Microsoft.AspNet' に型または名前空間名 'Mvc' が存在しない (あなたは
-
ASP.NETでのRadioButton(ラジオボタン)の使用について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NET 6の新しい設定オブジェクトConfigurationManagerの紹介
-
.netcoreプロジェクトでIStartupFilterを使用するためのチュートリアル
-
NETガベージコレクション GC診断ツール dotnet-gcmon 使用方法
-
.NET開発サーバー アプリケーション管理ツール
-
swagger uiをasp.net coreに統合する原理
-
再起動を伴わないNET5の設定変更は自動的に反映される
-
ネットパフォーマンスチューニング - ArrayPool 詳細
-
Net CoreによるAutoFacの利用
-
asp.net core3.1 cookieとjwtのハイブリッド認証による多様な認証ソリューションの実現
-
Application_End イベントをブロックする解決策