Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengoptimumkan sisipan rangka entiti untuk dataset yang besar dan mengelakkan masa tamat?
Meningkatkan Rangka Kerja Entiti Masukkan Prestasi dengan dataset yang besar
Penyisipan data berskala besar dalam rangka entiti boleh membawa kepada kesesakan prestasi yang signifikan dan masa tamat urus niaga. Artikel ini menggariskan strategi untuk mengoptimumkan proses ini.
Minimize Panggilan: SaveChanges()
selepas setiap penyisipan secara drastik mengurangkan kecekapan. Sebaliknya, gunakan teknik ini: SaveChanges()
SaveChanges()
Sisipan berasaskan interval: SaveChanges()
Kitar semula konteks: Kod berikut menunjukkan corak penyisipan pukal berprestasi tinggi:
Parameter Penalaan Prestasi Utama:
<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 largeDataset) { ++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 batchSize, bool recycleContext) { context.Set<Entity>().Add(entity); if (count % batchSize == 0) { context.SaveChanges(); if (recycleContext) { context.Dispose(); context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; } } return context; }</code>
batchSize
recycleContext
SaveChanges()
SaveChanges()
Dengan melaksanakan amalan terbaik ini, anda secara dramatik dapat meningkatkan rangka kerja entiti memasukkan prestasi dan mencegah tamat masa apabila bekerja dengan dataset yang besar. Atas ialah kandungan terperinci Bagaimanakah saya boleh mengoptimumkan sisipan rangka entiti untuk dataset yang besar dan mengelakkan masa tamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!