


Bagaimanakah Saya Boleh Mengoptimumkan Sisipan Pukal dalam Rangka Kerja Entiti untuk Peningkatan Prestasi?
Jan 23, 2025 pm 09:52 PMMeningkatkan Prestasi Sisipan Pukal Rangka Kerja Entiti: Strategi dan Penanda Aras
Memasukkan set data yang besar dengan cekap ke dalam Rangka Kerja Entiti adalah penting untuk mengelakkan kesesakan prestasi. Artikel ini menangani cabaran untuk memasukkan 4000 rekod dalam transaksi, senario yang terdedah kepada transaksi yang tidak lengkap.
Mengelakkan Perangkap Kerap SaveChanges()
Panggilan
Saluran prestasi utama berpunca daripada panggilan berulang kali SaveChanges()
untuk setiap rekod. Pendekatan ini melambatkan proses dengan ketara. Begini cara mengoptimumkan:
1. Tunggal SaveChanges()
Panggilan: Laksanakan satu SaveChanges()
panggilan selepas semua rekod ditambahkan.
2. Panggilan SaveChanges()
Berkelompok: Masukkan rekod dalam kelompok (mis., 100 atau 1000) dan panggil SaveChanges()
selepas setiap kelompok.
3. Pelupusan Konteks dengan Berkumpulan SaveChanges()
: Gabungkan batching dengan mencipta konteks pangkalan data baharu selepas setiap panggilan SaveChanges()
. Ini mengosongkan konteks, meningkatkan lagi prestasi.
Corak Sisipan Pukal Dioptimumkan:
Kod ini menggambarkan pendekatan yang disyorkan:
using (TransactionScope scope = new TransactionScope()) { using (MyDbContext context = new MyDbContext()) { context.Configuration.AutoDetectChangesEnabled = false; int count = 0; int commitCount = 100; // Adjust as needed foreach (var entity in someCollection) { count++; context.Set<entity>().Add(entity); if (count % commitCount == 0) { context.SaveChanges(); context.Dispose(); context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; } } context.SaveChanges(); } scope.Complete(); }
Analisis Prestasi:
Ujian dengan 560,000 entiti (9 sifat skalar) menghasilkan keputusan ini:
-
Tambahan
SaveChanges()
(komit kiraan 1): > 20 minit -
Berkelompok
SaveChanges()
(kiraan komit 1000): 242 saat -
Berkelompok
SaveChanges()
dengan Pelupusan Konteks (komit kiraan 100): 164 saat
Kesimpulan:
Dengan mengelakkan panggilan SaveChanges()
yang kerap dan menggunakan sisipan berkelompok dengan pelupusan konteks, peningkatan prestasi yang ketara dicapai dalam sisipan pukal Rangka Kerja Entiti. Pengoptimuman ini meminimumkan risiko tamat masa transaksi dan memastikan pengendalian data yang cekap dalam transaksi aktif.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Sisipan Pukal dalam Rangka Kerja Entiti untuk Peningkatan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
