Rumah >pembangunan bahagian belakang >C++ >Apakah cara terpantas untuk memasukkan 4000 rekod ke dalam pangkalan data menggunakan kerangka entiti dalam transaksi yang tidak dapat diselesaikan?
rangka kerja entiti dengan cekap memasukkan kaedah data
Apabila menggunakan Transactionscope untuk pemprosesan transaksi, bagaimana dengan cepat memasukkan lebih daripada 4,000 rekod ke dalam pangkalan data?
Jawapan:
Untuk sejumlah besar penyisipan data (4000 rekod), kecekapan kaedah sangat rendah. Teknologi pengoptimuman berikut dapat meningkatkan kelajuan penyisipan dengan ketara:
SaveChanges()
one -time
SaveChanges()
batch : SaveChanges()
selepas mengendalikan kuantiti yang ditentukan (contohnya, 100 item), hubungi SaveChanges()
Konteks Rekonstruksi: Sama seperti kaedah batch, tetapi lepaskan konteks dan buat konteks baru untuk melepaskan entiti tambahan selepas SaveChanges()
. SaveChanges()
ke . SaveChanges()
Configuration.AutoDetectChangesEnabled
false
Perbandingan prestasi:
Gunakan mod pengoptimuman ini untuk memasukkan 560,000 entiti ke dalam keputusan ujian prestasi pangkalan data:
<code class="language-csharp">using (TransactionScope scope = new TransactionScope()) { MyDbContext context = null; try { context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; int count = 0; foreach (var entityToInsert in someCollectionOfEntitiesToInsert) { ++count; context = AddToContext(context, entityToInsert, count, 100, true); } context.SaveChanges(); } finally { if (context != null) context.Dispose(); } scope.Complete(); } private MyDbContext AddToContext(MyDbContext context, Entity entity, int count, int commitCount, bool recreateContext) { context.Set<Entity>().Add(entity); if (count % commitCount == 0) { context.SaveChanges(); if (recreateContext) { context.Dispose(); context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; } } return context; }</code>
, SaveChanges()
: 202 saat SaveChanges()
: 164 saat
Sebaliknya, jika anda memanggiluntuk setiap rekod, ia akan mengambil masa berjam -jam untuk menyelesaikan operasi yang sama.
Atas ialah kandungan terperinci Apakah cara terpantas untuk memasukkan 4000 rekod ke dalam pangkalan data menggunakan kerangka entiti dalam transaksi yang tidak dapat diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!