Meningkatkan Kelajuan Memasukkan Data Rangka Kerja Entiti
Sisipan data volum tinggi dalam Rangka Kerja Entiti memerlukan teknik yang dioptimumkan. Artikel ini meneroka kaedah paling cekap untuk mencapai kelajuan pemasukan yang pantas.
Perangkap Kerap SaveChanges()
Panggilan
Panggilan SaveChanges()
untuk setiap rekod adalah kesesakan prestasi utama. Untuk memaksimumkan kelajuan, elakkan amalan ini. Pertimbangkan alternatif ini:
Batch SaveChanges()
:
SaveChanges()
untuk melakukan semua sisipan serentak.Berkala SaveChanges()
:
SaveChanges()
selepas setiap kumpulan.Kitar Semula Konteks:
DbContext
selepas setiap SaveChanges()
dan buat yang baharu. Ini menghalang pengumpulan entiti yang dijejaki, yang boleh menjejaskan prestasi dengan ketara dari semasa ke semasa.Kod Ilustrasi:
Contoh ini mempamerkan strategi sisipan yang cekap:
<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(); }</code>
Keputusan Penanda Aras:
Ujian yang melibatkan 560,000 entiti telah menghasilkan keputusan ini:
SaveChanges()
: Beberapa jam (sangat perlahan)Hasil ini menunjukkan bahawa berkala SaveChanges()
dengan pelupusan konteks menawarkan prestasi terbaik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Rangka Kerja Entiti untuk Sisipan Data Kelantangan Tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!