Dapperを使用したバルクインサートの時間が予想より長い
2023-09-21 15:43:20
質問
読後感 この記事 を読んで、自分のDapperの使い方をよく見てみることにしました。
私はこのコードを空のデータベースで実行しました
var members = new List<Member>();
for (int i = 0; i < 50000; i++)
{
members.Add(new Member()
{
Username = i.toString(),
IsActive = true
});
}
using (var scope = new TransactionScope())
{
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);
scope.Complete();
}
は約20秒かかりました。これは2500回/秒の挿入です。悪くはありませんが、ブログが45kインサート/秒を達成していたことを考えると、素晴らしいものでもありません。Dapperでこれを行うより効率的な方法はあるでしょうか?
また、余談ですが、このコードをVisual Studioのデバッガで実行したところ 3分以上かかりました! デバッガーは少しは遅くなるだろうと思いましたが、そんなにかかるとは本当に驚きです。
UPDATE
そこで、この
using (var scope = new TransactionScope())
{
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);
scope.Complete();
}
そして、この
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members);
はどちらも20秒かかりました。
しかし、これは4秒かかりました
SqlTransaction trans = connection.BeginTransaction();
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members, transaction: trans);
trans.Commit();
どのように解決するのですか?
私が達成できた最高記録は、この方法を用いて4秒間で50kレコードでした。
SqlTransaction trans = connection.BeginTransaction();
connection.Execute(@"
insert Member(Username, IsActive)
values(@Username, @IsActive)", members, transaction: trans);
trans.Commit();
関連
-
[解決済み】Dapperでインサートとアップデートを実行する
-
[解決済み] ファイルキャッシュをクリアしてパフォーマンステストを繰り返す
-
[解決済み] translateZ(0)に対するCSSのパフォーマンス
-
[解決済み] ループのアンロールが役に立つとしたら、どんなときか?
-
[解決済み] EBPフレームポインタレジスタの目的は何ですか?
-
[解決済み] なぜ、条件付の手は分岐予測失敗の影響を受けないのですか?
-
[解決済み] S3での1ディレクトリあたりの最大ファイル数
-
[解決済み] React NavigationとReact Native Navigationの比較【終了しました
-
[解決済み] CSS3のトランジション。transition: all" は "transition: x" よりも遅い?
-
Jmeterの代替品 [終了しました]
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] SqlConnectionが自動的にアンビエントTransactionScopeトランザクションに参加するのは、どのような状況においてですか?
-
[解決済み] ファイルキャッシュをクリアしてパフォーマンステストを繰り返す
-
[解決済み] OFFSET / FETCH NEXTからの総行数取得
-
[解決済み] translateZ(0)に対するCSSのパフォーマンス
-
[解決済み] ループのアンロールが役に立つとしたら、どんなときか?
-
[解決済み] Rでdata.frameをマージ/ジョインする最速の方法は何ですか?
-
[解決済み] EBPフレームポインタレジスタの目的は何ですか?
-
[解決済み] Dapper.NETを使用してC#のリストをデータベースに挿入する方法
-
[解決済み] Jaro-Winkler距離とLevenshtein距離の違い?[クローズド]
-
[解決済み] なぜ、条件付の手は分岐予測失敗の影響を受けないのですか?